package Ġcom . dev . ash ish . country list . network Ċ Ċ import Ġcom . dev . ash ish . country list . utils . Constants Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ // Ċ // ĠCreated Ġby ĠA sh ish Ġon Ġ 0 1 / 0 5 / 2 1 . Ċ // Ċ Ċ object ĠApi Client Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġapi Interface : ĠApi Interface ĊĠĠĠ Ġvar Ġlock Ġ= ĠAny () ĊĊĠĠĠ Ġfun ĠgetClient (): ĠApi Interface Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! :: api Interface . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: api Interface . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Client () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġapi Interface ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Client () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Len ient () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġval Ġhttp Log Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġhttp Log Interceptor . setLevel ( Http Logging Interceptor . Level . BODY ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( http Log Interceptor ) ĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( headers Interceptor ) ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Constants . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġapi Interface Ġ= Ġretrofit . create ( Api Interface :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġheaders Interceptor Ġ= ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠ Ġchain . proceed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Accept ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }