package Ġcom . x wq . company vx w helper . api Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . android networking . intercept ors . Http Logging Interceptor Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . x wq . company vx w helper . Build Config Ċ import Ġcom . x wq . company vx w helper . api . converter . Customer Gson Converter Factory Ċ import Ġcom . x wq . company vx w helper . api . interceptor . G zip Request Interceptor Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . RequestBody Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġjava . net . Proxy Ċ import Ġjava . security . Key Management Exception Ċ import Ġjava . security . NoSuch AlgorithmException Ċ import Ġjava . security . Secure Random Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . net . ssl . Hostname Verifier Ċ import Ġjavax . net . ssl . SSL Context Ċ import Ġjavax . net . ssl . Trust Manager Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġx wq Ġon Ġ 2 0 2 1 Ġ 0 5 Ġ 2 7 Ċ Ġ*/ Ċ class ĠApi Ġ{ ĊĠĠĠ Ġfun Ġset BaseUrl ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠbaseUrl : ĠString Ġ= ĠBuild Config . TEMP URL ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Ret rofit : ĠRet rofit ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRet rofit åĪĿå§ĭåĮĸ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Api (): ĠRet rofit ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠhttpClient Builder : ĠOk HttpClient . Builder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder (). connect Timeout ( 3 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 1 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. proxy ( Proxy . NO _ PROXY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrust All Certs Ġ= ĠarrayOf < Trust Manager >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠX 5 0 9 Trust Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Client Trusted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain : ĠArray < X 5 0 9 Certificate >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Type : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Server Trusted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain : ĠArray < X 5 0 9 Certificate >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Type : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Accepted Iss u ers (): ĠArray < X 5 0 9 Certificate > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġssl Context : ĠSSL Context ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssl Context Ġ= ĠSSL Context . getInstance (" SSL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch AlgorithmException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġssl Context !!. init ( null , Ġtrust All Certs , ĠSecure Random ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠKey Management Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġssl Socket Factory Ġ= Ġssl Context !!. socket Factory ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . ssl Socket Factory ( ssl Socket Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . hostname Verifier ( Hostname Verifier Ġ{ Ġhostname , Ġsession Ġ-> Ġtrue Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġchain . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequest Ġcustomization : Ġadd Ġrequest Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= Ġoriginal . newBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" User - Agent ", ĠBuild Config . USER _ AGENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequest Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhttpClient Builder . add Interceptor ( G zip Request Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ret rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( httpClient Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Customer Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Ret rofit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ* ĠåĪĽå»º request body ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate RequestBody ( request Body Str Ġ: ĠString ) Ġ: ĠRequest Body { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequest Body Str Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠCONTENT _ TYPE : ĠMediaType ? Ġ= ĠMediaType . parse (" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! request Body Str . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreq Str Ġ= ĠGson (). toJson ( request Body Str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest Body . create ( CONTENT _ TYPE , Ġreq Str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest Body . create ( CONTENT _ TYPE , Ġrequest Body Str ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }