package Ġcom . y hs if . notif bot Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . android . gms . net . Cron et Provider Installer Ċ import Ġcom . google . android . gms . tasks . Tasks Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . as Executor Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . chromium . net . Cron et Engine Ċ import Ġorg . chromium . net . Cron et Exception Ċ import Ġorg . chromium . net . Upload Data Providers Ċ import Ġorg . chromium . net . Url Request Ċ import Ġorg . chromium . net . Url Response Info Ċ import Ġorg . chromium . net . impl . Java Cron et Provider Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . util . concurrent . ExecutionException Ċ Ċ class ĠHttp Sender ( ĊĠ Ġval ĠonSuccess : Ġ() Ġ-> ĠUnit , ĊĠ Ġval Ġon Failure : Ġ() Ġ-> ĠUnit , ĊĠ Ġval Ġon Net Fail : Ġ() Ġ-> ĠUnit , Ċ ) Ġ: ĠUrl Request . Callback () Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LABEL Ġ= Ġ" label " ĊĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ MSG Ġ= Ġ" msg " ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġprivate Ġval Ġengine : ĠC ron et Engine Ġby Ġlazy Ġ{ ĊĠĠĠĠĠ Ġlateinit Ġvar Ġbuilder : ĠC ron et Engine . Builder ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠTasks . await ( Cron et Provider Installer . install Provider ( context )) ĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠC ron et Engine . Builder ( context ) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠExecution Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠJava Cron et Provider ( context ). create Builder () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġbuilder . enable Http 2 ( true ). enable Qu ic ( true ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Engine ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! :: context . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġctx ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( ĊĠĠĠĠĠ Ġctx : ĠContext , ĊĠĠĠĠĠ Ġurl : ĠString , ĊĠĠĠĠĠ Ġlabel : ĠString , ĊĠĠĠĠĠ Ġmsg : ĠString , ĊĠĠĠĠĠ ĠonSuccess : Ġ() Ġ-> ĠUnit , ĊĠĠĠĠĠ Ġon Failure : Ġ() Ġ-> ĠUnit , ĊĠĠĠĠĠ Ġon Net Fail : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġinit Engine ( ctx ) ĊĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠUri . Builder () ĊĠĠĠĠĠĠĠĠĠ Ġ. append QueryParameter ( KEY _ LABEL , Ġlabel ) ĊĠĠĠĠĠĠĠĠĠ Ġ. append QueryParameter ( KEY _ MSG , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠ Ġ. get Encoded Query () !! ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Builder Ġ= Ġengine . new Url RequestBuilder ( ĊĠĠĠĠĠĠĠĠĠ Ġurl , ĊĠĠĠĠĠĠĠĠĠ ĠHttp Sender ( on Success , Ġon Failure , Ġon Net Fail ), ĊĠĠĠĠĠĠĠĠĠ ĠDispatch ers . IO . as Executor (), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreq Builder . set HttpMethod (" POST ") ĊĠĠĠĠĠĠĠ Ġreq Builder . add Header (" Content - Type ", Ġ" application / x - www - form - urlencoded ") ĊĠĠĠĠĠĠĠ Ġreq Builder . set Upload DataProvider ( ĊĠĠĠĠĠĠĠĠĠ ĠUpload Data Providers . create ( body . toByteArray (), Ġ 0 , Ġbody . length ), ĊĠĠĠĠĠĠĠĠĠ ĠDispatch ers . IO . as Executor (), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreq Builder . build (). start () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Url ( url : ĠString , Ġon Failure : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġengine . new Url RequestBuilder ( ĊĠĠĠĠĠĠĠĠĠ Ġurl , ĊĠĠĠĠĠĠĠĠĠ ĠHttp Sender ({}, Ġon Failure , Ġ{}), ĊĠĠĠĠĠĠĠĠĠ ĠDispatch ers . IO . as Executor (), ĊĠĠĠĠĠĠĠ Ġ). build (). start () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Redirect Received ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?, Ġnew Url : ĠString ) Ġ{ ĊĠĠĠ Ġ// ĠNever Ġfollow Ġredirects , Ġbut Ġtreat Ġit Ġas Ġsuccess ĊĠĠĠ Ġreq . cancel () ĊĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠ ĠonSuccess () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Response Started ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?) Ġ{ ĊĠĠĠ Ġval Ġcode Ġ= Ġinfo ?. get HttpStatusCode () ĊĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( code Ġ!= Ġnull Ġ&& Ġcode Ġ>= Ġ 2 0 0 Ġ&& Ġcode Ġ< Ġ 4 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonSuccess () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġon Failure () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreq . cancel () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Failed ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?, Ġe : ĠC ron et Exception ) Ġ{ ĊĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠ Ġon Net Fail () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠWe Ġdon 't Ġcare Ġabout Ġthe Ġfollowing Ġfunctions ĊĠ Ġoverride Ġfun Ġon Read Completed ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?, Ġbuf : ĠByteBuffer ) Ġ{} ĊĊĠ Ġoverride Ġfun Ġon Succeeded ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?) Ġ{} ĊĊĠ Ġoverride Ġfun Ġon Canceled ( req : ĠUrl Request , Ġinfo : ĠUrl Response Info ?) Ġ{} Ċ } Ċ