package Ġcom . c act us . mar vel com ics . data . network Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . c act us . mar vel com ics . Build Config Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġdagger . Bind s Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module ( includes Ġ= Ġ[ Inner Network Module :: class ]) Ċ class ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ BaseUrl ĊĠĠĠ Ġfun Ġprovide BaseUrl (): ĠString Ġ= ĠNetwork Constants . baseUrl ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Subscription Key ĊĠĠĠ Ġfun Ġprovide Subscription Key (): ĠString Ġ= ĠNetwork Constants . publicKey ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ PrivateKey ĊĠĠĠ Ġfun Ġprovide PrivateKey (): ĠString Ġ= ĠNetwork Constants . privateKey ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Logging Interceptor ĊĠĠĠ Ġfun Ġprovide Logging Interceptor (): Ġ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 Http Cache ( application : ĠApplication ): ĠCache Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Size : ĠLong Ġ= Ġ 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġreturn ĠCache ( application . cacheDir , Ġcache Size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide M oshi (): ĠM oshi Ġ= ĊĠĠĠĠĠĠĠ ĠM oshi . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Ok HttpClient ( ĊĠĠĠĠĠĠĠ Ġ@ Logging Interceptor Ġlogging Interceptor : ĠHttp Logging Interceptor , ĊĠĠĠĠĠĠĠ Ġsubscription Key Interceptor : ĠSubscription Key Interceptor ĊĠĠĠ Ġ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( subscription Key Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġretrofit ( ĊĠĠĠĠĠĠĠ Ġok httpClient : ĠOk HttpClient , ĊĠĠĠĠĠĠĠ Ġm oshi : ĠM oshi , ĊĠĠĠĠĠĠĠ Ġ@ BaseUrl ĠbaseUrl : ĠString ĊĠĠĠ Ġ): ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok httpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( null On Empty Converter Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ( mos hi ). as Len ient ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠ Ġprivate Ġval Ġnull On Empty Converter Factory Ġ= Ġobject Ġ: ĠConverter . Factory () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġconverter Factory () Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġresponse Body Converter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations : ĠArray < out ĠAnnotation >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit : ĠRet rofit ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġobject Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConverter < ResponseBody , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext ResponseBody Converter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . next ResponseBody Converter < Any ? >( converter Factory (), Ġtype , Ġannotations ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconvert ( value : ĠResponse Body ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . content Length () Ġ!= Ġ 0 L ) Ġnext ResponseBody Converter . convert ( value ) Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Module Ċ abstract Ġclass ĠInner Network Module Ġ{ ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Bind s ĊĠĠĠ Ġabstract Ġfun Ġprovides Hash Gener att or ( hash Generate : ĠHash Generate Imp ): ĠHash Generate Ċ } Ċ