/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠTw ilio ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tw ilio . verify . sample . networking Ċ Ċ import Ġcom . tw ilio . verify . networking . Failure Response Ċ import Ġcom . tw ilio . verify . networking . HttpMethod . Delete Ċ import Ġcom . tw ilio . verify . networking . HttpMethod . Post Ċ import Ġcom . tw ilio . verify . networking . HttpMethod . Put Ċ import Ġcom . tw ilio . verify . networking . MediaType Header Ċ import Ġcom . tw ilio . verify . networking . Network Exception Ċ import Ġcom . tw ilio . verify . networking . Network Provider Ċ import Ġcom . tw ilio . verify . networking . Request Ċ import Ġjava . io . IOException Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Headers Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ Ċ class ĠOk Http Provider ( private Ġval Ġok HttpClient : ĠOk HttpClient Ġ= Ġok HttpClient ()) Ġ: ĠNetwork Provider Ġ{ ĊĠ Ġoverride Ġfun Ġexecute ( ĊĠĠĠ Ġrequest : ĠRequest , ĊĠĠĠ Ġsuccess : Ġ( response : Ġcom . tw ilio . verify . networking . Response ) Ġ-> ĠUnit , ĊĠĠĠ Ġerror : Ġ( Network Exception ) Ġ-> ĠUnit ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġok HttpRequest Ġ= Ġto Ok HttpRequest ( request ) ĊĠĠĠ Ġok HttpClient . new Call ( ok HttpRequest ) ĊĠĠĠĠĠ Ġ. enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( ĊĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall , ĊĠĠĠĠĠĠĠĠĠ Ġe : ĠIOException ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġerror ( Network Exception ( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall , ĊĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġresponse . take If Ġ{ Ġit . is Successful Ġ} ?. body ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . tw ilio . verify . networking . Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . string (), Ġresponse . headers . to Multimap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFailure Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . code , Ġresponse . body ?. string (), Ġresponse . headers . to Multimap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġto Ok HttpRequest ( request : ĠRequest ): Ġokhttp 3 . Request Ġ{ ĊĠĠĠ Ġval Ġheaders Builder Ġ= ĠHeaders . Builder () ĊĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest . headers . forEach Ġ{ Ġadd ( it . key , Ġit . value ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġrequest Builder Ġ= Ġokhttp 3 . Request . Builder () ĊĠĠĠĠĠ Ġ. url ( request . url ) ĊĠĠĠĠĠ Ġ. headers ( headers Builder . build ()) ĊĠĠĠĠĠ Ġ. tag ( request . tag ) ĊĠĠĠ Ġwhen Ġ( request . http Method ) Ġ{ ĊĠĠĠĠĠ ĠPost , ĠPut Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġrequest . get Params () ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġrequest . headers [ MediaType Header . ContentType . type ] ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ!= Ġnull Ġ&& ĠcontentType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġrequest Builder . post ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody . to RequestBody ( contentType . to MediaType ()) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠDelete Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġrequest . get Params () ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġrequest . headers [ MediaType Header . ContentType . type ] ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ!= Ġnull Ġ&& ĠcontentType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġrequest Builder . delete ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody . to RequestBody ( contentType . to MediaType ()) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġrequest Builder . build () ĊĠ Ġ} Ċ } Ċ Ċ fun Ġok HttpClient (): ĠOk HttpClient Ġ= ĊĠ ĠOk HttpClient . Builder () ĊĠĠĠ Ġ. add Interceptor ( ĊĠĠĠĠĠ ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Level ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. build () Ċ