package Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . source Ċ Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . api . Github Service Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . DataManager Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . source . local . Local Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . source . remote . Local DataSource Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . source . remote . Remote Ċ import Ġcom . h alo ho op . kotlin _ mvp _ r 2 r 2 d 2 . data . source . remote . Remote DataSource Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ 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 Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠP oo hol ah Ġon Ġ 2 0 1 7 / 6 / 2 7 . Ċ Ġ*/ Ċ Ċ @ Module Ġ// ä¼ĺåħĪ çº§ ä½¿çĶ¨ Ċ class ĠDataSource Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides Ġ// è¡¨ç¤º ä»İ è¿Ļä¸ª æĸ¹æ³ķ æĿ¥ å¾ĹåĪ° å¯¹è±¡ ĊĠĠĠ Ġfun Ġprovide Github Service (): ĠGithub Service Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder (). add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ). build (). create ( Github Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æľī ä¸¤ä¸ª æĸ¹æ³ķ è¿ĶåĽŀ I DataSource ï¼Į éĤ£ä¹Ī å°± éľĢè¦ģ qualified éĻĲ å®ļ ç¬¦ æĿ¥ åĮº åĪĨ ï¼Į ĊĠĠĠ Ġ// æĪĸèĢħ åı¯ä»¥ä½¿çĶ¨ @ Name çļĦæĸ¹å¼ı æĿ¥ æĮĩå®ļ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Remote ĊĠĠĠ Ġ@ Provides Ġ// è¡¨ç¤º ä»İ è¿Ļä¸ª æĸ¹æ³ķ æĿ¥ å¾ĹåĪ° å¯¹è±¡ ĊĠĠĠ Ġfun Ġprovide Remote ( service : ĠGithub Service ): ĠI DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRemote DataSource ( service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Local ĊĠĠĠ Ġ@ Provides Ġ// è¡¨ç¤º ä»İ è¿Ļä¸ª æĸ¹æ³ķ æĿ¥ å¾ĹåĪ° å¯¹è±¡ ĊĠĠĠ Ġfun Ġprovide Local (): ĠI DataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocal DataSource () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides Ġ// è¡¨ç¤º ä»İ è¿Ļä¸ª æĸ¹æ³ķ æĿ¥ å¾ĹåĪ° å¯¹è±¡ ĊĠĠĠ Ġfun Ġprovide DataManager (@ Remote Ġremote : ĠI DataSource , Ġ@ Local Ġlocal : ĠI DataSource ): ĠData Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠData Manager ( remote , Ġlocal ) ĊĠĠĠ Ġ} Ċ } Ċ