package Ġcom . al ire za af kar . ph u ze i . injection . module Ċ Ċ import Ġcom . al ire za af kar . ph u ze i . API _ SCOPE Ċ import Ġcom . al ire za af kar . ph u ze i . AUTHORIZATION Ċ import Ġcom . al ire za af kar . ph u ze i . BASE _ API _ URL Ċ import Ġcom . al ire za af kar . ph u ze i . BASE _ URL Ċ import Ġcom . al ire za af kar . ph u ze i . Build Config Ċ import Ġcom . al ire za af kar . ph u ze i . CODE Ċ import Ġcom . al ire za af kar . ph u ze i . KEY _ CLIENT _ ID Ċ import Ġcom . al ire za af kar . ph u ze i . KEY _ RE DIRECT _ URI Ċ import Ġcom . al ire za af kar . ph u ze i . KEY _ RESPONSE _ TYPE Ċ import Ġcom . al ire za af kar . ph u ze i . KEY _ SCOPE Ċ import Ġcom . al ire za af kar . ph u ze i . RE DIRECT _ URI Ċ import Ġcom . al ire za af kar . ph u ze i . SCHEME Ċ import Ġcom . al ire za af kar . ph u ze i . data . api . Album s Api Ċ import Ġcom . al ire za af kar . ph u ze i . data . api . Photos Api Ċ import Ġcom . al ire za af kar . ph u ze i . data . api . Token Api Ċ import Ġcom . al ire za af kar . ph u ze i . data . pref . App Preferences Ċ import Ġcom . al ire za af kar . ph u ze i . data . pref . token Ċ import Ġcom . al ire za af kar . ph u ze i . injection . qual ifier . Authorization Interceptor Ċ import Ġcom . al ire za af kar . ph u ze i . injection . qual ifier . Logging Interceptor Ċ import Ġcom . al ire za af kar . ph u ze i . util . Token Authenticator Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Interceptor Ċ 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 Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAli re za ĠA fk ar Ġon Ġ 1 6 / 3 / 2 0 1 8 AD . Ċ Ġ*/ Ċ @ Module ( includes Ġ= Ġ[ Data Module :: class ]) Ċ class ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ret rofit ( ĊĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient , ĊĠĠĠĠĠĠĠ Ġgson Factory : ĠGson Converter Factory , ĊĠĠĠĠĠĠĠ Ġauth enticator : ĠToken Authenticator , ĊĠĠĠĠĠĠĠ Ġrx Java Factory : ĠRx Java 2 Call Adapter Factory ĊĠĠĠ Ġ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġok HttpClient . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auth enticator ( auth enticator ). build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ API _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( gson Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( rx Java Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok HttpClient ( ĊĠĠĠĠĠĠĠ Ġ@ Logging Interceptor Ġlogging Interceptor : ĠInter ceptor , ĊĠĠĠĠĠĠĠ Ġ@ Authorization Interceptor Ġauthorization Interceptor : ĠInter ceptor ĊĠĠĠ Ġ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( authorization Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Rx Java Factory (): ĠRx Java 2 Call Adapter Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRx Java 2 Call Adapter Factory . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Gson Factory ( gson : ĠGson ): ĠGson Converter Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Converter Factory . create ( gson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Logging Interceptor ĊĠĠĠ Ġfun Ġprovide Logging Interceptor (): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHttp Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Authorization Interceptor ĊĠĠĠ Ġfun Ġprovide Authorization Interceptor ( prefs : ĠApp Preferences ): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġit . request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġoriginal . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( AUTHORIZATION , Ġprefs . token ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Interceptor Ġit . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Auth Url (): ĠHttp Url Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHttp Url . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. scheme ( SCHEME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. host ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Path Segments (" o / oauth 2 / v 2 / auth ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter ( KEY _ SCOPE , ĠAPI _ SCOPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter ( KEY _ RESPONSE _ TYPE , ĠCODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter ( KEY _ RE DIRECT _ URI , ĠRED I RECT _ URI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter ( KEY _ CLIENT _ ID , ĠBuild Config . CLIENT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Token Authenticator ( ĊĠĠĠĠĠĠĠ Ġgson : ĠGson , ĊĠĠĠĠĠĠĠ Ġclient : ĠOk HttpClient , ĊĠĠĠĠĠĠĠ Ġprefs : ĠApp Preferences ĊĠĠĠ Ġ): ĠToken Authenticator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠToken Authenticator ( gson , Ġclient , Ġprefs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Token Api ( ret rofit : ĠRet rofit ): ĠToken Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( Token Api :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Album s Api ( ret rofit : ĠRet rofit ): ĠAlbum s Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( Album s Api :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Photos Api ( ret rofit : ĠRet rofit ): ĠPh otos Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( Photos Api :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ