/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠNB CO ĠY oo Money ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ċ Ġ* Ġassociated Ġdocumentation Ġfiles Ġ( the ĠâĢľ Software âĢĿ ), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ċ Ġ* Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ċ Ġ* Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ċ Ġ* Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ċ Ġ* Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED ĠâĢľ AS ĠIS âĢĿ, ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR Ċ Ġ* ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE Ċ Ġ* ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT Ċ Ġ* ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR Ċ Ġ* ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġru . y oom oney . sdk . k assa . payments . extensions Ċ Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody Ċ import Ġokhttp 3 . Response Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Request ExecutionException Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Response Parsing Exception Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Response Reading Exception Ċ import Ġru . y oom oney . sdk . k assa . payments . methods . base . ApiRequest Ċ import Ġru . y oom oney . sdk . k assa . payments . methods . base . MimeType Ċ import Ġru . y oom oney . sdk . k assa . payments . methods . base . Post Request Ċ import Ġru . y oom oney . sdk . k assa . payments . metrics . Error Logger Reporter Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Result Ċ import Ġjava . io . IOException Ċ Ċ internal Ġclass ĠCheckout Ok HttpClient ( ĊĠĠĠ Ġval Ġok HttpClient : ĠOk HttpClient , ĊĠĠĠ Ġval Ġerror Reporter : ĠError Logger Reporter Ċ ) Ċ Ċ internal Ġfun Ġ< T : ĠAny > ĠCheckout Ok HttpClient . execute ( api Request : ĠApi Request < Result < T >> ): ĠResult < T > Ġ{ ĊĠĠĠ Ġval Ġurl Ġ= Ġapi Request . getUrl () ĊĠĠĠ Ġval Ġrequest Builder Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠ Ġ. url ( url ) ĊĠĠĠĠĠĠĠ Ġ. add Header (" accept ", Ġ" application / json ") ĊĊĠĠĠ Ġapi Request . getHeaders (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . add Header ( it . first , Ġit . second ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( api Request Ġis ĠPost Request < Result < T >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . add Header (" Content - Type ", Ġapi Request . get MimeType (). type ) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġcreate RequestBody ( api Request . get MimeType (), Ġapi Request . get Payload ()) ĊĠĠĠĠĠĠĠ Ġrequest Builder . post ( RequestBody . create ( null , Ġbody )) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Builder . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġrequest Builder . build () ĊĊĠĠĠ Ġval Ġresponse : ĠResponse Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠRequest ExecutionException ( request , Ġe ) ĊĠĠĠĠĠĠĠ Ġerror Reporter . report ( exception ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Fail ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstring Body : ĠString Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġresponse . body !!. string () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠResponse Reading Exception ( response , Ġe ) ĊĠĠĠĠĠĠĠ Ġerror Reporter . report ( exception ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Fail ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠjsonObject Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠJSONObject ( string Body ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠResponse Parsing Exception ( string Body , Ġe ) ĊĠĠĠĠĠĠĠ Ġerror Reporter . report ( exception ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Fail ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġapi Request . convert Json To Response ( jsonObject ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠResponse Parsing Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . toString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġe ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġerror Reporter . report ( exception ) ĊĠĠĠĠĠĠĠ ĠResult . Fail ( exception ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġcreate RequestBody ( mime Type : ĠMime Type , Ġbody : ĠList < Pair < String , ĠAny >> ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( mime Type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMime Type . JSON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . put ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠMime Type . X _ WW W _ FORM _ URL ENCODE D Ġ-> Ġbody . join ToString ( separator Ġ= Ġ"& ") Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġ"$ key =$ value " Ġ} ĊĠĠĠ Ġ} Ċ } Ċ