package Ġdigital . k lik . helper . api Ċ Ċ import Ġandroid . content . Context Ċ import Ġdigital . k lik . helper . api . config . Ret rofit Config Ċ import Ġdigital . k lik . helper . api . exception . TimeoutException Ċ import Ġdigital . k lik . helper . api . extension . install Provider IfNeeded Ċ import Ġdigital . k lik . helper . config . Environment Config Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ 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 Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . net . ssl . SS LS ocket Factory Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ @ Suppress (" Member Visibility Can Be Private ", Ġ" unused ") Ċ class ĠApi Client Ġ{ ĊĠĠĠ Ġprivate Ġval ĠbaseUrl : ĠString ĊĠĠĠ Ġprivate Ġvar Ġretrofit : ĠRet rofit ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġok HttpClient Builder Ġ= ĠOk HttpClient . Builder () ĊĊĠĠĠ Ġconstructor ( baseUrl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . baseUrl Ġ= ĠbaseUrl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ret rofit Config : ĠRet rofit Config ) Ġ{ ĊĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġif ( Environment Config . isDebug ging Mode ()) Ġretrofit Config . debug Url Ġelse Ġretrofit Config . production Url ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Timeout ( timeout : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( timeout Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠTimeout Exception (" Timeout Ġmust Ġbe Ġgreater Ġthan Ġ 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset All TimeOut In Second ( timeout InSeconds : ĠLong ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Timeout ( timeout InSeconds ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Unit Ġ= ĠTimeUnit . SECONDS ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . read Timeout ( timeout InSeconds , Ġtime Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( timeout InSeconds , Ġtime Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( timeout InSeconds , Ġtime Unit ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Connect Timeout ( timeout : ĠLong , Ġtime Unit : ĠTimeUnit ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Timeout ( timeout ) ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . connect Timeout ( timeout , Ġtime Unit ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Connect Timeout ( timeout InSeconds : ĠLong ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Connect Timeout ( timeout InSeconds , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Read Timeout ( timeout : ĠLong , Ġtime Unit : ĠTimeUnit ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . read Timeout ( timeout , Ġtime Unit ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Read Timeout ( timeout InSeconds : ĠLong ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Read Timeout ( timeout InSeconds , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Write Timeout ( timeout : ĠLong , Ġtime Unit : ĠTimeUnit ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . write Timeout ( timeout , Ġtime Unit ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Write Timeout ( timeout InSeconds : ĠLong ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġset Write Timeout ( timeout InSeconds , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Interceptor ( block : Ġ( chain : ĠInter ceptor . Chain ) Ġ-> ĠResponse ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( object Ġ: ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġblock ( chain ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Ssl Socket Factory ( socket Factory : ĠSSL Socket Factory , Ġtrust Manager : ĠX 5 0 9 Trust Manager ): ĠApi Client Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . ssl Socket Factory ( socket Factory , Ġtrust Manager ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Ret rofit ( context : ĠContext ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Environment Config . isDebug ging Mode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor (). apply Ġ{ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterceptor Already Exist Ġ= Ġok HttpClient Builder . intercept ors (). contains ( interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! interceptor Already Exist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor . intercept ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext . install Provider IfNeeded () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Scalars Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun < T > Ġcreate EndPoint ( context : ĠContext , Ġapi Interface Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Ret rofit Ġ= Ġretrofit ĊĠĠĠĠĠĠĠ Ġif Ġ( current Ret rofit Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ret rofit Ġ= Ġinitialize Ret rofit ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit Ġ= Ġcurrent Ret rofit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Ret rofit . create ( api Interface Class ) ĊĠĠĠ Ġ} Ċ }