package Ġcom . example . demo assignment . di Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . example . demo assignment . Build Config Ċ import Ġcom . example . demo assignment . network . NY Times Api Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġokhttp 3 . Cache Ċ 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 Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ object ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġconst Ġval ĠSTATUS _ SUCCESS Ġ= Ġ" OK " ĊĠĠĠ Ġconst Ġval ĠAPI _ KEY Ġ= Ġ" gb P zu j 4 u 1 p 8 S 9 n Nv QP J 8 k 2 l FX QL nik TS " ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Gson Builder (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Cache ( application : ĠApplication ): ĠCache Ġ= ĊĠĠĠĠĠĠĠ ĠCache ( application . cacheDir , Ġ 2 0 L Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ) Ġ// Ġ 2 0 Ġmo ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Http Logging Interceptor () Ġ= ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġlevel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok HttpClient ( ĊĠĠĠĠĠĠĠ Ġcache : ĠCache , ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor : ĠHttp Logging Interceptor ĊĠĠĠ Ġ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ret rofit ( ok HttpClient : ĠOk HttpClient , Ġgson : ĠGson ): ĠRet rofit . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" http :// api . ny times . com / svc / most popular / v 2 /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Blog Service ( ret rofit : ĠRet rofit . Builder ): ĠNY Times Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( NY Times Api :: class . java ) ĊĠĠĠ Ġ} Ċ Ċ }