/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠPeter ĠKen ji ĠY aman aka Ċ Ġ* Ċ Ġ* Ġ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 . py am soft . py d roid . bootstrap . network Ċ Ċ import Ġandroidx . annotation . Check Result Ċ import Ġcom . py am soft . py d roid . core . En for cer Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġjavax . net . Socket Factory Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ Ċ /** ĠModule Ġto Ġprovide Ġnetwork Ġrelated Ġhelpers Ġ*/ Ċ public Ġclass ĠNetwork Module ( params : ĠParameters ) Ġ{ ĊĊĠ Ġprivate Ġval Ġservice Creator : ĠService Creator ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġdebug Ġ= Ġparams . add Logging Interceptor ĊĠĠĠ Ġval Ġcall Factory Ġ= ĠOk HttpClient Lazy Call Factory ( debug ) ĊĠĠĠ Ġval Ġconverter Factory Ġ= ĠM oshi Converter Factory . create ( create M oshi ()) ĊĠĠĠ Ġval Ġretrofit Ġ= Ġcreate Ret rofit ( call Factory , Ġconverter Factory ) ĊĊĠĠĠ Ġservice Creator Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠService Creator Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< S Ġ: ĠAny > Ġcreate Service ( service Class : ĠClass < S >): ĠS Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( service Class ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĠProvide Ġa Ġnetwork Ġservice Ġcreator Ġ*/ ĊĠ Ġ@ Check Result ĊĠ Ġpublic Ġfun Ġprovide Service Creator (): ĠService Creator Ġ{ ĊĠĠĠ Ġreturn Ġservice Creator ĊĠ Ġ} ĊĊĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCURRENT _ VERSION _ REPO _ BASE _ URL Ġ= ĊĠĠĠĠĠĠĠ Ġ" https :// raw . githubusercontent . com / py am soft / android - project - versions / master /" ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Check Result ĊĠĠĠ Ġprivate Ġfun Ġcreate M oshi (): ĠM oshi Ġ{ ĊĠĠĠĠĠ Ġreturn ĠM oshi . Builder (). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Check Result ĊĠĠĠ Ġprivate Ġfun Ġcreate Ret rofit ( ĊĠĠĠĠĠĠĠ Ġcall Factory : ĠCall . Factory , ĊĠĠĠĠĠĠĠ Ġconverter Factory : ĠConverter . Factory ĊĠĠĠ Ġ): ĠRet rofit Ġ{ ĊĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( CURRENT _ VERSION _ REPO _ BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠ Ġ. call Factory ( call Factory ) ĊĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( converter Factory ) ĊĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCreates Ġthe ĠOk HttpClient Ġl az ily Ġto Ġavoid Ġsmall Ġmain Ġthread Ġwork Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠOk HttpClient Lazy Call Factory ( debug : ĠBoolean ) Ġ: ĠCall . Factory Ġ{ ĊĊĠĠĠĠĠ Ġprivate Ġval Ġclient Ġby Ġlazy Ġ{ Ġcreate Ok HttpClient ( debug , ĠDeleg ating Socket Factory . create ()) Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġnew Call ( request : ĠRequest ): ĠCall Ġ{ ĊĠĠĠĠĠĠĠ ĠEn for cer . assert Off MainThread () ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . new Call ( request ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Check Result ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Interceptor (): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĠHttp Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Check Result ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Ok HttpClient ( debug : ĠBoolean , Ġsocket Factory : ĠSocket Factory ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠEn for cer . assert Off MainThread () ĊĊĠĠĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. socket Factory ( socket Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( debug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( create Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĠNetwork Ġmodule Ġparameters Ġ*/ ĊĠ Ġpublic Ġdata Ġclass ĠParameters ( internal Ġval Ġadd Logging Interceptor : ĠBoolean ) Ċ } Ċ