package Ġde . t arent . android ws . clean . core . concurrency . injection Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġde . t arent . android ws . clean . Build Config Ċ import Ġde . t arent . android ws . clean . core . remote . Service Creator Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . rew ed ig ital . kat ana . Module Ċ import Ġorg . rew ed ig ital . kat ana . android . modules . APPLICATION _ CONTEXT Ċ import Ġorg . rew ed ig ital . kat ana . dsl . factory Ċ import Ġorg . rew ed ig ital . kat ana . dsl . get Ċ import Ġorg . rew ed ig ital . kat ana . dsl . singleton Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ private Ġconst Ġval ĠCONNECT _ TIME _ OUT Ġ= Ġ 5 L Ċ private Ġconst Ġval ĠCALL _ TIME _ OUT Ġ= Ġ 5 L Ċ private Ġconst Ġval ĠREAD _ TIME _ OUT Ġ= Ġ 1 0 L Ċ private Ġconst Ġval ĠWRITE _ TIME _ OUT Ġ= Ġ 1 0 L Ċ private Ġconst Ġval ĠCACHE _ SIZE _ BYTES Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 L Ċ Ċ val ĠRemote Module Ġ= ĠModule Ġ{ ĊĊĠĠĠ Ġfactory < Cache > Ġ{ ĠCache ( get < Context >( APPLICATION _ CONTEXT ). cacheDir , ĠCACHE _ SIZE _ BYTES ) Ġ} ĊĊĠĠĠ Ġfactory < Http Logging Interceptor . Logger > Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠHttp Logging Interceptor . Logger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Rest o Http ", Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingleton < Http Logging Interceptor > Ġ{ ĠHttp Logging Interceptor ( get ()). apply Ġ{ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} Ġ} ĊĊĠĠĠ Ġsingleton < Ok HttpClient > Ġ{ ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout ( CONNECT _ TIME _ OUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout ( READ _ TIME _ OUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Timeout ( WRITE _ TIME _ OUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Timeout ( CALL _ TIME _ OUT , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache ( get ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( get < Http Logging Interceptor >()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingleton < M oshi > Ġ{ ĠM oshi . Builder (). build () Ġ} ĊĊĠĠĠ Ġsingleton < M oshi Converter Factory > Ġ{ ĊĠĠĠĠĠĠĠ ĠM oshi Converter Factory . create ( get ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingleton < Ret rofit . Builder > Ġ{ ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( get < M oshi Converter Factory >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingleton < Service Creator > Ġ{ ĠService Creator ( get ()) Ġ} Ċ }