package Ġcom . c un yn . android . fin ances ystem . http Ċ Ċ import Ġcom . c un yn . android . fin ances ystem . Build Config Ċ import Ġcom . c un yn . android . fin ances ystem . bean . Constants Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġokhttp 3 . Ok HttpClient Ċ 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 Ġjava . util . concurrent . TimeUnit Ċ import Ġcom . c un yn . android . fin ances ystem . base . Base Application ĊĊĊ Ċ object ĠRet rofit Manager Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġheader Intercept er : Header Intercept er ?= null ĊĠĠĠ Ġprivate Ġvar Ġok HttpClient : Ok HttpClient ?= null ĊĠĠĠ Ġprivate Ġvar Ġgson Ġ: ĠGson ?= null ĊĠĠĠ Ġprivate Ġvar Ġgson Converter Factory Ġ: ĠGson Converter Factory ?= null ĊĠĠĠ Ġprivate Ġvar Ġrx Java 2 Call Adapter Factory Ġ: ĠRx Java 2 Call Adapter Factory ?= null ĊĠĠĠ Ġprivate Ġvar Ġapi Service Ġ: ĠApi Service ?= null ĊĠĠĠ Ġprivate Ġvar Ġretrofit : Ret rofit ?= null ĊĊĊĊĠĠĠ Ġprivate Ġfun Ġprovide Header Intercept er (): ĠHeader Intercept er Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( header Intercept er == null ) Ġheader Intercept er Ġ= ĠHeader Intercept er () ĊĠĠĠĠĠĠĠ Ġreturn Ġheader Intercept er !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Receive Cookie Interceptor (): ĠReceive Cookie Interceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠReceive Cookie Interceptor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Add Cookie Interceptor (): ĠAdd Cookie Intercept er Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠAdd Cookie Intercept er () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Ok HttpClient ( Ġheader Intercept er : ĠHeader Intercept er ): Ok HttpClient ? { ĊĊĠĠĠĠĠĠĠ Ġif ( ok HttpClient == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbuilder Ġ= Ok HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( Constants . READ _ TIMEOUT Ġ, ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( Constants . CONNECT _ TIMEOUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( Constants . WRITE _ TIMEOUT Ġ, ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Ġprovide Add Cookie Interceptor () Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( provide Receive Cookie Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . add Interceptor ( header Intercept er ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Build Config . DEBUG ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( provide Http Log Intercept er ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Ġ= builder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Http Log Intercept er (): Http Logging Interceptor { ĊĠĠĠĠĠĠĠ Ġvar Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠ Ġreturn Ġhttp Logging Interceptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Gson (): ĠGson ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( gson == null ) Ġgson Ġ= ĠGson Builder (). serialize Null s (). create () ĊĠĠĠĠĠĠĠ Ġreturn Ġgson ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Gson Converter ( gson : ĠGson ?): ĠGson Converter Factory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( gson Converter Factory == null Ġ) Ġgson Converter Factory Ġ= ĠGson Converter Factory . create ( gson ) ĊĠĠĠĠĠĠĠ Ġreturn Ġgson Converter Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Rx Java 2 Call Adapter (): ĠRx Java 2 Call Adapter Factory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( rx Java 2 Call Adapter Factory == null ) Ġrx Java 2 Call Adapter Factory Ġ= ĠRx Java 2 Call Adapter Factory . create () ĊĠĠĠĠĠĠĠ Ġreturn Ġrx Java 2 Call Adapter Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Ret ro ft ( ĠbaseUrl Ġ: ĠString Ġ= ĠConstants . BASE _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġok HttpClient : ĠOk HttpClient ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġgson Converter Factory : ĠGson Converter Factory ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġrx Java 2 Call Adapter Factory : ĠRx Java 2 Call Adapter Factory ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder (). baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( gson Converter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( rx Java 2 Call Adapter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġprivate Ġfun Ġget Ret rofit (): Ret rofit ? { ĊĠĠĠĠĠĠĠ Ġif ( ret rofit == null ) Ġretrofit Ġ= Ġ Ġprovide Ret ro ft ( ĠConstants . BASE _ URL Ġ, Ġprovide Ok HttpClient ( provide Header Intercept er ()) Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Gson Converter ( Ġprovide Gson () Ġ) Ġ, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Rx Java 2 Call Adapter () Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġget ApiService (): ĠApi Service ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( api Service == null ) Ġapi Service Ġ= Ġget Ret rofit () !!. create ( ApiService :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapi Service ĊĠĠĠ Ġ} Ċ Ċ }