package Ġcom . example . rost y . github users . injection Ċ Ċ import Ġandroid . content . Context Ċ Ċ import Ġcom . example . rost y . github users . Rx Schedulers Ċ import Ġcom . example . rost y . github users . data . DataSource Ċ import Ġcom . example . rost y . github users . data . DataSource Impl Ċ import Ġcom . example . rost y . github users . data . remote . ApiService Ċ import Ġcom . example . rost y . github users . data . temp . Temp DataManager Ċ import Ġcom . example . rost y . github users . data . temp . Temp DataManager Impl Ċ Ċ import Ġjavax . inject . Singleton Ċ Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ 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 Ġtim ber . log . Tim ber ĊĊ Ċ @ Module Ġclass ĠApp Module ( private Ġval Ġapp Context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide AppContext () Ġ= Ġapp Context ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide DataSource ( api Service : ĠĠĠĠĠ ĠApi Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp DataManager : ĠTemp DataManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrx Schedulers : ĠĠĠ ĠRx Schedulers ): ĠDataSource Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDataSource Impl ( api Service , Ġtemp DataManager , Ġrx Schedulers ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide ApiService (): ĠApi Service Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Interceptor Ġ= ĠHttp Logging Interceptor ( Ġ{ ĠTim ber . d ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setLevel ( Http Logging Interceptor . Level . BODY ) ĊĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder (). client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( ApiService . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( ApiService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide AT emp DataManager (): ĠTemp DataManager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTemp DataManager Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Rx Schedulers (): ĠRx Schedulers Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠRx Schedulers Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmain (): ĠScheduler Ġ{ Ġreturn ĠAndroid Schedulers . main Thread () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġio (): ĠScheduler Ġ{ Ġreturn ĠS chedulers . io () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ