package Ġcom . sz old apps . bitcoin . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . sz old apps . bitcoin . Build Config Ċ import Ġcom . sz old apps . bitcoin . repository . remote . rest . Blockchain Api Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . Re usable Ċ import Ġokhttp 3 . Cache Ċ 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 . io . File Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠModule Ġto Ġprovide Ġrest Ġspecific Ġclasses Ċ Ġ*/ Ċ @ Module Ċ open Ġclass ĠRest Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Re usable ĊĠĠĠ Ġinternal Ġfun Ġprovide Default Ok HttpClient ( context : ĠContext ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Dir Ġ= ĠFile ( context . cacheDir . absolute Path , ĠHTTP _ CACHE _ DIRECTORY _ NAME ) ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( Cache ( cacheDir , ĠHTTP _ CACHE _ SIZE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġinternal Ġfun Ġprovide Gson (): ĠGson Ġ= ĠGson Builder (). create () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Re usable ĊĠĠĠ Ġinternal Ġfun Ġprovide Ret rofit ( ok HttpClient : ĠOk HttpClient , Ġgson : ĠGson ) Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Re usable ĊĠĠĠ Ġinternal Ġfun Ġprovide Blockchain Api ( ret rofit : ĠRet rofit ): ĠBlock chain Api Ġ= Ġretrofit . create ( Blockchain Api :: class . java ) ĊĊĠĠĠ Ġprivate Ġfun Ġlogging Interceptor () Ġ= ĊĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= Ġif Ġ( Build Config . DEBUG ) ĠHttp Logging Interceptor . Level . BODY Ġelse ĠHttp Logging Interceptor . Level . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// api . blockchain . info " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHTTP _ CACHE _ DIRECTORY _ NAME Ġ= Ġ" Http Cache " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHTTP _ CACHE _ SIZE Ġ= Ġ 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 L Ġ// Ġ 1 0 ĠM iB ĊĠĠĠ Ġ} Ċ } Ċ