/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠZ hang ĠT ing ku o ( zhang ting ku o @ gmail . com ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . co op src . x android . http Ċ Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . co op src . x android . http . config . HttpClient Config Ċ import Ġcom . co op src . x android . http . interceptor . Basic Params Interceptor Ċ import Ġcom . co op src . x android . http . logging . Http Logger Ċ import Ġcom . co op src . x android . utils . Log Utils Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġt ing ku o . Ċ Ġ* ĠDate : Ġ 2 0 1 7 - 1 2 - 2 3 Ċ Ġ* ĠTime : Ġ 1 0 : 5 3 Ċ Ġ*/ Ċ object ĠRet rofit Manager Ġ{ ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġnew Ret rofit (): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . i (" new Ret rofit : Ġ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Ret rofit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġnew Ret rofit (@ NonNull Ġclient Config : ĠHttpClient Config ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . i (" new Ret rofit : Ġ% s ", Ġclient Config . get Primary Host ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Ret rofit ( client Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ret rofit (@ NonNull Ġclient Config : ĠHttpClient Config Ġ= ĠBase HttpClient Config ()): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Utils . i (" create Ret rofit : Ġ", Ġclient Config ) ĊĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Builder Ġ= ĠOk HttpClient . Builder () ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġbasic Ġparams Ġinterceptor . ĊĠĠĠĠĠĠĠ Ġval Ġbasic Params Builder Ġ= ĠBasic Params Interceptor . Builder () ĊĠĠĠĠĠĠĠ Ġbasic Params Builder . add QueryParams ( client Config . get Basic QueryParams ()) ĊĠĠĠĠĠĠĠ Ġbasic Params Builder . add Body Params ( client Config . getBody Map Params ()) ĊĠĠĠĠĠĠĠ Ġbasic Params Builder . add HeaderParams ( client Config . getHeader Map Params ()) ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( basic Params Builder . build ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġcustom Ġinterceptor ĊĠĠĠĠĠĠĠ Ġfor Ġ( interceptor Ġin Ġclient Config . get Intercept ors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġcustom Ġnetwork Ġinterceptor ĊĠĠĠĠĠĠĠ Ġfor Ġ( interceptor Ġin Ġclient Config . get Network Intercept ors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Network Interceptor ( interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ Ġadd Ġtoken Ġinterceptor ĊĠĠĠĠĠĠĠ Ġif Ġ( client Config . getToken Interceptor () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( client Config . getToken Interceptor () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġtoken Ġauth enticator ĊĠĠĠĠĠĠĠ Ġif Ġ( client Config . getToken Authenticator () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . auth enticator ( client Config . getToken Authenticator () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġdebug Ġmonitor Ġinterceptor ĊĠĠĠĠĠĠĠ Ġif Ġ( client Config . get Debug Monitor Interceptor () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( client Config . get Debug Monitor Interceptor () !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġlogger Ġinterceptor . ĊĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor ( Http Logger ()) ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor . level Ġ= Ġclient Config . http LogLevel () ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( http Logging Interceptor ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġcache Ġdir . ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . cache ( client Config . httpClient Cache ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġtime Ġout . ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . connect Timeout ( client Config . connect Timeout Millis (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . write Timeout ( client Config . write Timeout Millis (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . read Timeout ( client Config . read Timeout Millis (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ ĠhttpClient Builder . retry On Connection Failure ( client Config . retry On Connection Failure ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġretrofit . ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Builder Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġretrofit Builder . client ( httpClient Builder . build ()) ĊĠĠĠĠĠĠĠ Ġretrofit Builder . baseUrl ( client Config . get Primary Host ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( call Adapter Factory Ġin Ġclient Config . call Adapter Factories ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit Builder . add Call Adapter Factory ( call Adapter Factory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( converter Factory Ġin Ġclient Config . converter Factories ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit Builder . add Converter Factory ( converter Factory ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠBase HttpClient Config Ġ: ĠHttpClient Config () Ċ Ċ } Ċ