package Ġcom . bitcoin . s lp wallet . rest Ċ Ċ import Ġcom . bitcoin . s lp wallet . Network Ċ import Ġcom . bitcoin . s lp wallet . SL P Wallet Config Ċ import Ġokhttp 3 . Ok HttpClient Ċ 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 . Concurrent HashMap Ċ Ċ internal Ġobject ĠRet rofit Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient : ĠOk HttpClient Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequest Ġ= Ġit . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS LP Wallet Config . rest API Key ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest . newBuilder (). add Header (" Authorization ", Ġ" BIT BOX :$ it "). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġretrofit Ġ: ĠConcurrent HashMap < Network , ĠRet rofit > Ġ= ĠConcurrent HashMap () ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun ĠgetInstance ( network : ĠNetwork ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠbaseUrl Ġ= Ġwhen Ġ( network ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork . MAIN Ġ-> Ġ" https :// rest . bitcoin . com / v 2 /" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork . TEST Ġ-> Ġ" https :// t rest . bitcoin . com / v 2 /" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġcompute If Absent Ġnot Ġpresent Ġin ĠAPI Ġ 2 1 . Ġget Or Put Ġis Ġnot Ġthread Ġsafe Ġso Ġthe Ġmethod Ġis Ġsynchronized ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . get Or Put ( network ) Ġ{ Ġretrofit ( baseUrl )} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrofit ( baseUrl : ĠString ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊ Ċ }