package Ġcom . ky bers wap . android . util . di . module Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . firebase . analytics . Firebase Analytics Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . ky bers wap . android . Build Config Ċ import Ġcom . ky bers wap . android . R Ċ import Ġcom . ky bers wap . android . data . api . home . Chart Api Ċ import Ġcom . ky bers wap . android . data . api . home . Currency Api Ċ import Ġcom . ky bers wap . android . data . api . home . Limit Order Api Ċ import Ġcom . ky bers wap . android . data . api . home . Promo Api Ċ import Ġcom . ky bers wap . android . data . api . home . Swap Api Ċ import Ġcom . ky bers wap . android . data . api . home . Token Api Ċ import Ġcom . ky bers wap . android . data . api . home . Transaction Api Ċ import Ġcom . ky bers wap . android . data . api . home . User Api Ċ import Ġcom . ky bers wap . android . data . api . home . Utilities Api Ċ import Ġcom . ky bers wap . android . data . db . Token Dao Ċ import Ġcom . ky bers wap . android . data . db . Transaction Dao Ċ import Ġcom . ky bers wap . android . data . repository . datasource . storage . Storage Mediator Ċ import Ġcom . ky bers wap . android . util . ErrorHandler Ċ import Ġcom . ky bers wap . android . util . Token Client Ċ import Ġcom . trust wallet . wallet connect . WC Client Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . web 3 j . protocol . Web 3 j Ċ import Ġorg . web 3 j . protocol . http . Http Service Ċ 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 Ċ Ċ @ Module Ċ class ĠNetwork Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Ok HttpClient ( storage Mediator : ĠStorage Mediator ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠ Ġclient . add Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġit . request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġoriginal . newBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= Ġstorage Mediator . get AccessToken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! accessToken . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . header ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Authorization ", ĠaccessToken ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Header (" CLIENT ", Ġ" com . ky bers wap . android ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġbuilder . method ( original . method (), Ġoriginal . body ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . add Interceptor ( Http Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Home Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠToken Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . token _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Gas Limit Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠUtilities Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtilities Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . gas _ limit _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Chart Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠChart Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChart Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . chart _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Web 3 j ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠWeb 3 j Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeb 3 j . build ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Service ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . base _ rpc _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide WC Client ( gson Builder : ĠGson Builder , Ġclient : ĠOk HttpClient ): ĠWC Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWC Client ( gson Builder , Ġclient ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Gson Builder (): ĠGson Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Transaction Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠTransaction Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . transaction _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Rate Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠSwap Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSwap Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . rate _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide User Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠUser Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . user _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Limit Order Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠLimit Order Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLimit Order Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . user _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Promo Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠProm o Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProm o Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . user _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide ErrorHandler ( context : ĠContext ): ĠError Handler Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠError Handler ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Change 2 4 h Api ( context : ĠContext , Ġclient : ĠOk HttpClient ): ĠCurrency Api Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate ApiClient ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Api :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . currency _ endpoint _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġprovide Token Client ( ĊĠĠĠĠĠĠĠ Ġweb 3 j : ĠWeb 3 j , ĊĠĠĠĠĠĠĠ Ġtoken Dao : ĠToken Dao , ĊĠĠĠĠĠĠĠ Ġtransaction Dao : ĠTransaction Dao , ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġanalytics : ĠFirebase Analytics ĊĠĠĠ Ġ): ĠToken Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠToken Client ( web 3 j , Ġtoken Dao , Ġtransaction Dao , Ġcontext , Ġanalytics ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġcreate ApiClient ( clazz : ĠClass < T >, ĠbaseUrl : ĠString , Ġclient : ĠOk HttpClient ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( clazz ) ĊĠĠĠ Ġ} Ċ } Ċ