package Ġcom . android . ap pet iser master detail . di . module Ċ Ċ import Ġcom . android . ap pet iser master detail . Build Config Ċ import Ġcom . android . ap pet iser master detail . network . Apple API Ċ import Ġcom . android . ap pet iser master detail . network . Header Interceptor Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . Re usable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ 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 . Named Ċ Ċ @ Module Ċ object ĠAPI Module Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġthe ĠApple API Ġservice Ġimplementation . ĊĠĠĠĠ Ġ* Ġ@ param Ġretrofit Ġthe ĠRet rofit Ġobject Ġused Ġto Ġinstantiate Ġthe Ġservice ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠApple API Ġservice Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Re usable ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Named (" Apple No Auth API ") ĊĠĠĠ Ġinternal Ġfun Ġprovide Non Auth Apple API (@ Named (" Apple No Auth Instance ") Ġretrofit : ĠRet rofit ): ĠApple API Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Apple API :: class . java ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġthe ĠRet rofit Ġobject . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠRet rofit Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Re usable ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Named (" Apple No Auth Instance ") ĊĠĠĠ Ġinternal Ġfun Ġprovide No Auth Apple (): ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠ Ġmake Apple Ret rofit () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates ĠRet rofit Ġinstance Ġwith ĠApple Ġimplementation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmake Apple Ret rofit ( var arg Ġintercept ors : ĠInter ceptor ): ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . APPLE _ DOMAIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( make HttpClient ( intercept ors )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create With Scheduler ( Schedulers . io ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates ĠHttpClient Ġwith Ġgiven Ġinterceptor ( s ) ĊĠĠĠĠ Ġ* Ġ@ param Ġintercept ors Ġoptional Ġintercept ors Ġfor Ġcreating ĠHttpClient ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmake HttpClient ( intercept ors : ĠArray < out ĠInter ceptor >): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow Redirect s ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Header Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġintercept ors (). addAll ( intercept ors ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġfun Ġlogging Interceptor () Ġ= ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġlevel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠ Ġ} Ċ Ċ }