package Ġie . log istio . pal oma Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġie . log istio . pal oma . json . Auth Credentials Ċ 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 Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠApi Service ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġgson : ĠGson , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠbaseUrl : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger : ĠHttp Logging Interceptor ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmocker Registry : ĠMock Api Registry ? Ġ= Ġnull Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġheader Interceptor Ġ= ĠHeader Interceptor () ĊĠĠĠ Ġprivate Ġval Ġok HttpClient : ĠOk HttpClient ĊĠĠĠ Ġprivate Ġval Ġretrofit : ĠRet rofit ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġok HttpClient Ġ= Ġsetup Ok Http () ĊĊĠĠĠĠĠĠĠ Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create Async ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGson Converter Factory Ġmust Ġalways Ġbe Ġthe Ġlast ĠConverter Factory Ġregistered . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ok Http (): ĠOk HttpClient Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( header Interceptor ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( logger Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġlogging Ġinterceptor Ġto ĠOk Http : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( logger ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġverbose Ġlogging Ġto Ġall Ġrequests : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogging Interceptor Ġ= ĠHttp Logging Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor . Logger Ġ{ Ġmessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ("[ ApiService ] ĠOk Http :" Ġ+ Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogging Interceptor . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// -------------------------------------------------------------------------------- -------------- ĊĊĠĠĠ Ġfun Ġ< T > Ġcreate Api ( api Type : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( true Ġ== Ġmocker Registry ?. is Registered ( api Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmocker Registry . find ( api Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( api Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup Auth ( auth : ĠAuth Credentials ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Interceptor . append Header (" Authorization ", Ġ"${ auth . token Type } Ġ${ auth . accessToken }") ĊĠĠĠ Ġ} Ċ Ċ }