package Ġcom . app . vol u . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . app . vol u . Build Config Ċ import Ġcom . app . vol u . data . Constants Ċ import Ġcom . app . vol u . data . remote . intercept ors . Cache Interceptor Ċ import Ġcom . app . vol u . data . remote . intercept ors . Token Expired Interceptor Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ 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 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ class ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides Ret rofit ( ĊĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient , ĊĠĠĠĠĠĠĠ Ġgson Converter Factory : ĠGson Converter Factory ĊĠĠĠ Ġ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( gson Converter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Constants . API _ BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides Ok Http ( ĊĠĠĠĠĠĠĠ Ġcache : ĠCache ĊĠĠĠ Ġ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( Token Expired Interceptor ()) ĊĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( Cache Interceptor ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Interceptor Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġif Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( logging Interceptor ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 6 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides Cache (@ ApplicationContext Ġcontext : ĠContext ): ĠCache Ġ{ ĊĠĠĠĠĠĠĠ Ġ// cache Ġsize Ġof Ġ 1 0 mb ĊĠĠĠĠĠĠĠ Ġval Ġcache Size Ġ= Ġ( 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ). to Long () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCache ( context . cacheDir , Ġcache Size ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Gson Converter Factory (): ĠGson Converter Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exclude Fields Without Expose Annotation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGson Converter Factory . create ( gson ) ĊĠĠĠ Ġ} Ċ }