package Ġcom . lo f tech s . sample . model . http Ċ Ċ import Ġcom . google . gson .* Ċ import Ġcom . lo f tech s . sample . Build Config Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġokhttp 3 . Certificate P inner Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient . Builder Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . converter . scal ars . Scalars Converter Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ abstract Ġclass ĠHttpClient Helper Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġclient : ĠBuilder Ġ= ĠBuilder () ĊĠĠĠ Ġprivate Ġvar Ġgson Factory : ĠGson Converter Factory ĊĠĠĠ Ġprivate Ġvar Ġscal ars Factory : ĠScal ars Converter Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Ret rofit : ĠRet rofit ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠApi Logger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCONTENT _ TYPE _ JSON Ġ= Ġ" application / json " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgson Factory Ġ= ĠGson Converter Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. register Type Adapter ( Boolean :: class . java , ĠBoolean Type Adapter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ()) ĊĠĠĠĠĠĠĠ Ġscal ars Factory Ġ= ĠScal ars Converter Factory . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġset Interceptor Action ( chain : ĠInter ceptor . Chain ): ĠResponse ĊĊĠĠĠ Ġprotected Ġabstract Ġval ĠbaseUrl : ĠString ĊĊĠĠĠ Ġprotected Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġrest Client () ĊĠĠĠĠĠĠĠ Ġreset App () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Certificate P inner (): ĠCertificate P inner Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCertificate P inner . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" b aby . ju iker . net ", Ġ" sha 2 5 6 / j R 3 z dh z wn G + G ru QY sx 5 1 BY WB VV qc O ip sv A 7 l 9 l 8 Kp HA =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrest Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . certificate P inner ( create Certificate P inner ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( LT Intercept ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor ( logger ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset App () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Ret rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( scal ars Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( gson Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create With Scheduler ( Schedulers . io ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġservice : ĠIService ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġm Ret rofit . create ( I Service :: class . java ) ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠLT Intercept Ġ: ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset Interceptor Action ( chain ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠBoolean Type Adapter Ġ: ĠJson Deserializer < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , ĠtypeOf T : ĠType , Ġcontext : ĠJson Deserialization Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson . as Int Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠApi Logger Ġ: ĠHttp Logging Interceptor . Logger Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag (" Api Logger "). d ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }