package Ġcom . q ing ch eng . base Ċ Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Clipboard Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . Javascript Interface Ċ import Ġandroid . webkit . WebView Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . IOException Ċ Ċ open Ġclass ĠBase Js Interface ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval ĠwebView : ĠWebView ) Ġ{ ĊĠ Ġ@ Javascript Interface ĊĠ Ġfun Ġfetch ( url : ĠString , Ġoptions : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġopt Ġ= Ġif Ġ( options Ġ== Ġ" undefined ") Ġnull Ġelse ĠJSONObject ( options ) ĊĠĠĠ Ġval Ġh Ġ= Ġopt ?. getJSONObject (" headers ") ĊĠĠĠ Ġval Ġk Ġ= Ġh ?. keys () ĊĠĠĠ Ġval Ġheaders Ġ= ĠHeaders . Builder () ĊĠĠĠ Ġk ?. forEach Ġ{ Ġheaders . add ( it , Ġh . getString ( it )) Ġ} ĊĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠ Ġ. method ( ĊĠĠĠĠĠĠĠ Ġopt ?. getString (" method ") Ġ?: Ġ" GET ", ĊĠĠĠĠĠĠĠ Ġopt ?. getJSONObject (" body ") ?. toString ()?. to RequestBody () ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. headers ( headers . build ()) ĊĠĠĠĠĠ Ġ. url ( url ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ ĠOk HttpClient (). new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On UI Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠwebView . evaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" javascript : Ġwindow .${ JS _ INTERFACE _ NAME }. on Net Failure (`${ e . message }`) ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġresponse . body ?. string () ĊĠĠĠĠĠĠĠ Ġrun On UI Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠwebView . evaluate Javascript ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" javascript : Ġwindow .${ JS _ INTERFACE _ NAME }. on Net Response (`${ res }`) ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġ@ Javascript Interface ĊĠ Ġfun Ġwrite Clipboard ( str : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠ Ġmanager . set Primary Clip ( Clip Data . new Plain Text ( str , Ġstr )) ĊĠ Ġ} Ċ } Ċ