package Ġch . r my . android . http _ shortcuts . http ĊĊ Ċ import Ġch . r my . android . http _ shortcuts . exceptions . Invalid Proxy Exception Ċ import Ġch . r my . android . http _ shortcuts . extensions . map If Ċ import Ġcom . bur gst aller . okhttp . digest . Credentials Ċ import Ġcom . facebook . ste tho . okhttp 3 . St eth o Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . Proxy Ċ import Ġjava . security . cert . Certificate Exception Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġjavax . net . ssl . SSL Context Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ internal Ġobject ĠHttpClient s Ġ{ ĊĊĠĠĠ Ġfun ĠgetClient ( ĊĠĠĠĠĠĠĠ Ġaccept All Certificates : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġusername : ĠString ?, ĊĠĠĠĠĠĠĠ Ġpassword : ĠString ?, ĊĠĠĠĠĠĠĠ Ġfollow Redirect s : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġtimeout : ĠLong , ĊĠĠĠĠĠĠĠ Ġproxy Host : ĠString ?, ĊĠĠĠĠĠĠĠ Ġproxy Port : ĠInt ? ĊĠĠĠ Ġ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ Ġ( if Ġ( accept All Certificates ) Ġcreate Unsafe Ok HttpClient Builder () Ġelse Ġcreate Default Ok HttpClient Builder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map If ( username Ġ!= Ġnull Ġ&& Ġpassword Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth enticator Ġ= ĠDigest Authenticator ( Credentials ( username , Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . auth enticator ( auth enticator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow Redirect s ( follow Redirect s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow Ssl Redirect s ( follow Redirect s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( timeout , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( timeout , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( timeout , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map If ( proxy Host Ġ!= Ġnull Ġ&& Ġproxy Port Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . proxy ( Proxy ( Proxy . Type . HTTP , ĠInet SocketAddress ( proxy Host !! , Ġproxy Port !! ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Proxy Exception ( e . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( St eth o Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Default Ok HttpClient Builder () Ġ= ĠOk HttpClient . Builder () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Unsafe Ok HttpClient Builder (): ĠOk HttpClient . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrust All Certs Ġ= ĠarrayOf < X 5 0 9 Trust Manager >( object Ġ: ĠX 5 0 9 Trust Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Certificate Exception :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Client Trusted ( chain : ĠArray < java . security . cert . X 5 0 9 Certificate >, Ġauth Type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Certificate Exception :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Server Trusted ( chain : ĠArray < java . security . cert . X 5 0 9 Certificate >, Ġauth Type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Accepted Iss u ers (): ĠArray < java . security . cert . X 5 0 9 Certificate > Ġ= Ġempty Array () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġssl Context Ġ= ĠSSL Context . getInstance (" SSL ") ĊĠĠĠĠĠĠĠ Ġssl Context . init ( null , Ġtrust All Certs , Ġjava . security . Secure Random ()) ĊĠĠĠĠĠĠĠ Ġval Ġssl Socket Factory Ġ= Ġssl Context . socket Factory ĊĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ssl Socket Factory ( ssl Socket Factory , Ġtrust All Certs [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. hostname Verifier Ġ{ Ġ_, Ġ_ Ġ-> Ġtrue Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ