package Ġcom . ick . kal amb ury . net Ċ Ċ import Ġandroid . os . Build Ċ import Ġcom . ick . kal amb ury . Build Config Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . Credentials . basic Ċ import Ġokhttp 3 . internal . immutable ListOf Ċ import Ġjava . nio . charset . StandardCharsets .* Ċ import Ġjava . security . KeyStore Ċ import Ġjava . time . Duration Ċ import Ġjavax . net . ssl . SSL Context Ċ import Ġjavax . net . ssl . Trust Manager Ċ import Ġjavax . net . ssl . Trust ManagerFactory Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ object ĠPro d HttpClient Factory Ġ: ĠHttpClient Factory Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTIME OUT _ SECONDS Ġ= Ġ 6 0 L ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( trust Store : ĠTrust Store , Ġcredentials : ĠCredentials Provider ?): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanagers : ĠArray < Trust Manager > Ġ= Ġcreate Trust Managers ( trust Store ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġssl Context : ĠSSL Context Ġ= ĠSSL Context . getInstance (" TLS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġssl Context . init ( null , Ġmanagers , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ssl Socket Factory ( ssl Context . socket Factory , Ġmanagers [ 0 ] Ġas ĠX 5 0 9 Trust Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. certificate P inner ( Certificate P inner . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Build Config . SERVICE _ URL . replace (" https :// ", Ġ""), Ġ" sha 2 5 6 / ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Build Config . SERVICE _ URL . replace (" https :// ", Ġ""), Ġ" sha 2 5 6 / ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connection Specs ( immutable ListOf ( Connection Spec . RE STRICT ED _ TLS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( Duration . of Seconds ( TIMEOUT _ SECONDS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( Duration . of Seconds ( TIMEOUT _ SECONDS )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ping Interval ( Duration . of Seconds ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( create UserAgent Header Interceptor ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credentials Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Interceptor ( create Authorization Header Interceptor ( credentials )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Trust Managers ( trust Store : ĠTrust Store ): ĠArray < Trust Manager > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= ĠKey Store . getInstance ( trust Store . key Store Type ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( trust Store . key Store InputStream , Ġtrust Store . key Store Password . toCharArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrust ManagerFactory . getInstance (" X 5 0 9 "). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit ( key Store ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrust Managers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Authorization Header Interceptor ( credentials : ĠCredentials Provider ): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( chain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġbasic ( credentials . user , Ġcredentials . password , ĠUTF _ 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate UserAgent Header Interceptor (): ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Agent Ġ= Ġ" K al amb ury Ġ${ Build Config . VERSION _ NAME } Ġ( API Ġ${ Build . VERSION . SDK _ INT })" ĊĠĠĠĠĠĠĠ Ġreturn ĠInter ceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( chain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" User - Agent ", Ġuser Agent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }