package Ġcom . mo eg irl viewer . request Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . mo eg irl viewer . Constants Ċ import Ġcom . mo eg irl viewer . R Ċ import Ġcom . mo eg irl viewer . request . util . Mo e ResponseType .* Ċ import Ġcom . mo eg irl viewer . request . util . probe Mo e ResponseType Ċ import Ġcom . mo eg irl viewer . request . util . to Mo e Request Error Ċ import Ġcom . mo eg irl viewer . request . util . to QueryString Params Ċ import Ġcom . mo eg irl viewer . screen . captcha . Captcha Route Arguments Ċ import Ġcom . mo eg irl viewer . util . Globals Ċ import Ġcom . mo eg irl viewer . util . navigate Ċ import Ġcom . mo eg irl viewer . util . toast Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġokhttp 3 . Form Body Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġjava . net . Socket Exception Ċ import Ġjava . net . Socket TimeoutException Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ val Ġmo e Ok HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠ Ġ. cookie Jar ( cookie Jar ) ĊĠ Ġ. add Interceptor ( Common Config Interceptor ()) ĊĠ Ġ. add Interceptor ( Mo e Interceptor ()) Ċ // Ġ Ġ. add Interceptor ( Http Logging Interceptor (). apply Ġ{ Ċ // ĠĠĠ Ġthis . level Ġ= ĠHttp Logging Interceptor . Level . BODY Ċ // Ġ Ġ}) ĊĠ Ġ. build () Ċ Ċ suspend Ġfun Ġ< T > Ġmo e Request ( ĊĠ Ġparams : ĠMap < String , ĠAny >, ĊĠ Ġmethod : ĠMo e Request Method Ġ= ĠMo e Request Method . GET , ĊĠ ĠbaseUrl : ĠString Ġ= ĠConstants . api Url , ĊĠ Ġentity : ĠClass < T >? Ġ= Ġnull , Ċ ): ĠT Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠ Ġval Ġurl Builder Ġ= ĠbaseUrl . to Http Url OrNull () !!. newBuilder () ĊĠ Ġval Ġrequest Builder Ġ= ĠRequest . Builder () ĊĊĠ Ġwhen Ġ( method ) Ġ{ ĊĠĠĠ ĠMo e Request Method . GET Ġ-> Ġ{ ĊĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġparams ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġis ĠList < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġvalue . map Ġ{ Ġit . toString () Ġ}. to QueryString Params ( key ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Builder . add QueryParameter ( it . first , Ġit . second ) ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġurl Builder . add QueryParameter ( key , Ġvalue . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ ĠMo e Request Method . POST Ġ-> Ġ{ ĊĠĠĠĠĠ Ġval Ġbody Builder Ġ= ĠForm Body . Builder () ĊĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġparams ) Ġbody Builder . add ( key , Ġvalue . toString ()) ĊĠĠĠĠĠ Ġrequest Builder . post ( body Builder . build ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġrequest Ġ= Ġrequest Builder ĊĠĠĠ Ġ. url ( url Builder . build ()) ĊĠĠĠ Ġ. build () ĊĊĠ Ġtry Ġ{ ĊĠĠĠ Ġval Ġresponse Ġ= Ġmo e Ok HttpClient . new Call ( request ). execute () ĊĊĠĠĠ Ġif Ġ(! response . is Successful ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( response . code Ġ== Ġ 4 0 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠMo e Request TimeoutException () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ("[ Mo e Request HttpException ]", Ġresponse . body ?. string () Ġ?: Ġ" body ä¸įåŃĺåľ¨ ") ĊĠĠĠĠĠĠĠ Ġthrow ĠMo e Request HttpException ( ĊĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġresponse . code , ĊĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġresponse . message ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbody Content Ġ= Ġresponse . body !!. string () ĊĊĠĠĠ Ġwhen ( response . probe Mo e ResponseType ( body Content )) Ġ{ ĊĠĠĠĠĠ ĠDATA Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠGson (). fromJson ( body Content , Ġentity ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġresponse . body !!. to Mo e Request Error ( body Content ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠPOL L Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġbody Content Ġas ĠT ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠTX _ CAP T CHA Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠGlobals . nav Controller . navigate ( Captcha Route Arguments ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcapt cha Html Ġ= Ġbody Content , ĊĠĠĠĠĠĠĠĠĠ Ġ)) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . launch Single Top Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠMo e Request Wiki Exception (" è¢« èħ ¾ è®¯ captcha æĭ ¦ æĪª ") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠTX _ BLOCK ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast ( Globals . context . getString ( R . string . tx Blocked )) ĊĠĠĠĠĠĠĠ Ġthrow ĠMo e Request Wiki Exception (" è¢« èħ ¾ è®¯ éĺ² çģ« å¢ Ļ æĭ ¦ æĪª ") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠUNKNOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠMo e Request Wiki Exception (" æľª çŁ¥ éĶĻè¯¯ ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ġcatch Ġ( e : ĠSocket TimeoutException ) Ġ{ ĊĠĠĠ Ġthrow ĠMo e Request TimeoutException ( e ) ĊĠ Ġ} Ġcatch Ġ( e : ĠUnknown Host Exception ) Ġ{ ĊĠĠĠ Ġthrow ĠMo e Request TimeoutException ( ĊĠĠĠĠĠ Ġcause Ġ= Ġe ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠMo e Request Method Ġ{ ĊĠ ĠGET , ĊĠ ĠPOST Ċ } Ċ Ċ open Ġclass ĠMo e RequestException ( ĊĠ Ġoverride Ġval Ġmessage : ĠString , ĊĠ Ġval Ġcode : ĠString , ĊĠ Ġcause : ĠThrowable ? Ġ= Ġnull , Ċ ) Ġ: ĠException ( message , Ġcause ) Ċ Ċ open Ġclass ĠMo e Request Wiki Exception ( ĊĠ Ġmessage : ĠString , ĊĠ Ġcode : ĠString Ġ= Ġ" custom Error ", ĊĠ Ġcause : ĠThrowable ? Ġ= Ġnull Ċ ) Ġ: ĠMo e RequestException ( ĊĠ Ġmessage Ġ= Ġ"[ Mo e Request Wiki Exception ] Ġ$ code : Ġ$ message ", ĊĠ Ġcode Ġ= Ġcode , ĊĠ Ġcause Ġ= Ġcause Ċ ) Ċ Ċ open Ġclass ĠMo e Request HttpException ( ĊĠ Ġmessage : ĠString , ĊĠ Ġcode : ĠInt Ġ= Ġ 0 , ĊĠ Ġcause : ĠThrowable ? Ġ= Ġnull Ċ ) Ġ: ĠMo e RequestException ( ĊĠ Ġmessage Ġ= Ġmessage , ĊĠ Ġcode Ġ= Ġ" http :$ code ", ĊĠ Ġcause Ġ= Ġcause Ċ ) Ċ Ċ class ĠMo e Request TimeoutException ( ĊĠ Ġcause : ĠThrowable ? Ġ= Ġnull Ċ ) Ġ: ĠMo e Request HttpException ( ĊĠ Ġmessage Ġ= ĠGlobals . context . getString ( R . string . net Err ), ĊĠ Ġcode Ġ= Ġ 4 0 4 , ĊĠ Ġcause Ġ= Ġcause Ċ )