package Ġbg . dab ul g aria . t ib ro ish . infrastructure . di . modules Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . gson . Gson Ċ import Ġbg . dab ul g aria . t ib ro ish . Build Config Ċ import Ġbg . dab ul g aria . t ib ro ish . R Ċ import Ġbg . dab ul g aria . t ib ro ish . domain . config . I AppConfig Repository Ċ import Ġbg . dab ul g aria . t ib ro ish . infrastructure . Build Constants Ċ import Ġbg . dab ul g aria . t ib ro ish . persistence . remote . api . Api Interceptor Ċ import Ġbg . dab ul g aria . t ib ro ish . persistence . remote . api . T iB ro ish Api Controller Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 3 . Rx Java 3 Call Adapter Factory Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ class ĠNetwork Module () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠNetwork Module :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides Ok HttpClient (): ĠOk HttpClient { ĊĊĠĠĠĠĠĠĠ Ġval Ġagent Ġ= Ġ" Ti ĠBro ish Ġ${ Build Config . FL AV OR } Ġ${ Build Config . VERSION _ NAME } Ġ${ Build Config . VERSION _ CODE }" ĊĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Builder = ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 2 L , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 2 L , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 2 L , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Api Interceptor ( agent )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( Http Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setLevel ( Http Logging Interceptor . Level . BODY )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovides T iB ro ish Api Controller ( Ġok HttpClient Ġ: ĠOk HttpClient , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgson Ġ: ĠGson , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Config Repo : ĠI AppConfig Repository ): ĠT iB ro ish Api Controller { ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Ġget T iB ro ish Endpoint ( app Config Repo ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( Ġok HttpClient Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( ĠGson Converter Factory . create ( Ġgson Ġ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( ĠRx Java 3 Call Adapter Factory . create () Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( T iB ro ish Api Controller :: class . java Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget T iB ro ish Endpoint ( app Config Repo : ĠI AppConfig Repository ): String { ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġapp Config Repo . app Config ĊĠĠĠĠĠĠĠ Ġif ( Build Config . FL AV OR Ġ== ĠBuild Constants . PRO DU CTION _ FL AV OR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconfig . api BaseUrl ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconfig . api BaseUrl Stage ĊĠĠĠ Ġ} Ċ Ċ }