package Ġf ern and ocs . data . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġf ern and ocs . data . ApiClient Factory Ċ import Ġf ern and ocs . data . Build Config Ċ import Ġf ern and ocs . data . item . di . Item Module Ċ import Ġf ern and ocs . data . item . local . Items Database Ċ import Ġokhttp 3 . Certificate P inner Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Response Ċ 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 . mos hi . M oshi Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Named Ċ Ċ @ Module ( ĊĠĠĠ Ġincludes Ġ= Ġ[ Item Module :: class ] Ċ ) Ċ class ĠData Module Ġ{ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġinternal Ġfun Ġprovide ApiClient Factory ( ĊĠĠĠĠĠĠĠ Ġ@ Named (" BASE _ URL ") Ġurl : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" AUTHORIZATION ") Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" HOST ") Ġhost : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Named (" PIN ") Ġpin : ĠString ĊĠĠĠ Ġ): ĠApi Client Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġif Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcertificate P inner Ġ= ĠCertificate P inner . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( host , Ġpin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġok Http Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. certificate P inner ( certificate P inner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Header Interceptor ( token )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠApi Client Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok Http ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovides Items Database ( context : ĠContext ): ĠItems Database Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom . database Builder ( context , ĠItems Database :: class . java , Ġ" items - db "). build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠHeader Interceptor ( private Ġval Ġtoken : ĠString ) Ġ: ĠInter ceptor Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ= Ġchain . run Ġ{ ĊĠĠĠĠĠĠĠ Ġproceed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ