package Ġcom . github . ro th so . mass . extractor . network Ċ Ċ import Ġcom . github . ro th so . mass . extractor . Environment Ċ import Ġcom . github . ro th so . mass . extractor . network . ath ena . A then a Service Ċ import Ġcom . github . ro th so . mass . extractor . network . ath ena . OAuth Service Ċ import Ġcom . github . ro th so . mass . extractor . network . ath ena . Retry ing A then a Proxy Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ 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 . mos hi . M oshi Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠNetwork Provider ( env : ĠEnvironment ) Ġ{ ĊĠ Ġprivate Ġval Ġretrofit : ĠRet rofit ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠPRE VIEW _ URL Ġ= Ġ" https :// api . ath ena health . com / preview 1 /" ĊĠĠĠ Ġprivate Ġconst Ġval ĠPRE VIEW _ URL _ O AUTH Ġ= Ġ" https :// api . ath ena health . com / oauth preview /" ĊĠĠĠ Ġprivate Ġconst Ġval ĠPRO D _ BASE _ URL Ġ= Ġ" https :// api . ath ena health . com / v 1 /" ĊĠĠĠ Ġprivate Ġconst Ġval ĠPRO D _ BASE _ URL _ O AUTH Ġ= Ġ" https :// api . ath ena health . com / oauth /" ĊĠ Ġ} ĊĊĠ Ġfun Ġcreate A then a Client ( on Retry : Ġ( Int ) Ġ-> ĠUnit Ġ= Ġ{} ): ĠA then a Service Ġ{ ĊĠĠĠ Ġreturn ĠRetry ing A then a Proxy ( ret rofit . create ( A then a Service :: class . java ), Ġon Retry ) ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġrx Java Adapter Factory Ġ= ĠRx Java 2 Call Adapter Factory . create With Scheduler ( Schedulers . io ()) ĊĠĠĠ Ġval Ġm oshi Converter Factory Ġ= ĠM oshi Converter Factory . create ( M oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build ()) ĊĊĠĠĠ Ġval Ġauth enticator Ġ= Ġlet Ġ{ ĊĠĠĠĠĠ Ġval Ġo Auth Service Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( if Ġ( env . preview Mode ) ĠPRE VIEW _ URL _ O AUTH Ġelse ĠPRO D _ BASE _ URL _ O AUTH ) ĊĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( rx Java Adapter Factory ) ĊĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( mos hi Converter Factory ) ĊĠĠĠĠĠĠĠĠĠ Ġ. build (). create ( OAuth Service :: class . java ) ĊĊĠĠĠĠĠ ĠOAuth Authenticator ( o Auth Service , Ġenv . ath ena Key , Ġenv . ath ena Secret ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthis . ret rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. baseUrl ("${ if Ġ( env . preview Mode ) ĠPRE VIEW _ URL Ġelse ĠPRO D _ BASE _ URL }${ env . practice Id }/ ") ĊĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( rx Java Adapter Factory ) ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( mos hi Converter Factory ) ĊĠĠĠĠĠĠĠ Ġ. client ( Ok HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. auth enticator ( auth enticator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( auth enticator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} Ċ } Ċ