package Ġuk . ac . n cl . open lab . ongo ing ness . utilities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġokhttp 3 .* Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġuk . ac . n cl . open lab . ongo ing ness . Build Config Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . Exception Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠAllows Ġinteractions Ġwith Ġthe ĠO ngo ing ness ĠAPI . Ċ Ġ* Ċ Ġ* Ġ@ author ĠL uis ĠCar val ho , ĠDaniel ĠW el sh Ċ Ġ*/ Ċ class ĠAPI ( val Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAPI Ġserver Ġbase Ġend - point . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġapi Url Ġ= ĠBuild Config . API _ URL ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUser Ġauthentication Ġtoken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġtoken : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClient Ġin Ġcharge Ġof Ġhandling Ġthe Ġcommunications . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 3 0 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Timeout ( 3 0 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 3 0 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connection Specs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Connection Spec . MO DER N _ TLS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Spec . CLE ART EXT )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor Ġ{ Ġchain Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequest Ġ= Ġchain . request () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresponse Ġ: ĠResponse ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġchain . proceed ( request ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtry Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! response !!. is Successful Ġ&& Ġtry Count Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" intercept ", Ġ" Request Ġis Ġnot Ġsuccessful Ġ- Ġ$ try Count ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord Failure ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġa Ġauthentication Ġtoken Ġfrom Ġthe Ġapi Ġusing Ġthe Ġdevices Ġwifi Ġmac Ġaddress . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġfunction Ġto Ġcall Ġafter Ġgenerating Ġa Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġgenerate Token ( callback : Ġ( token : String ?) Ġ-> ĠUnit , Ġon Failure Callback : Ġ( e : ĠIOException ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠLog . d (" generate Token ", Ġ" called ") ĊĊĠĠĠĠĠĠĠ Ġif ( token Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmac : ĠString Ġ= Ġget Mac Address () Ġ// ĠGet Ġmac Ġaddress ĊĠĠĠĠĠĠĠ ĠLog . d (" MAC ĠAddress ", Ġmac ) ĊĠĠĠĠĠĠĠ ĠLog . d (" API ĠURL ", Ġapi Url ) ĊĠĠĠĠĠĠĠ Ġval Ġform Body Ġ= ĠForm Body . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" mac ", Ġmac ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( api Url +" auth / mac ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( form Body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Callback ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" tt t ", Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response . code (). toString (). startsWith (' 5 ') Ġ|| Ġresponse . code (). toString (). startsWith (' 4 ') Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġresponse . code (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Callback ( IOException ( code )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneric Response : ĠGeneric Response Ġ= Ġgson . fromJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. string (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeneric Response :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ= Ġgeneric Response . payload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Callback ( IOException ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠFetch Ġall Ġmedia Ġitems Ġof Ġthe Ġauthenticated Ġuser . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġcallback Ġfunction Ġcalled Ġafter Ġfetching Ġthe Ġmedia . ĊĠĠĠĠ Ġ* Ġ Ġ@ param Ġfailure Ġfunction Ġcalled Ġif Ġthe Ġfetching Ġfails . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch Media Payload ( callback : Ġ( Response ?) Ġ-> ĠUnit , Ġfailure : Ġ( e : ĠIOException ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgenerate Token ( Ġcallback Ġ= Ġ{ Ġtoken Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" API ", token ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" media " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( api Url Ġ+ Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - access - token ", Ġtoken !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}, Ġon Failure Callback Ġ= Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġinferred Ġmedia Ġof Ġthe Ġauthenticated Ġuser . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmedia ID Ġid Ġof Ġthe Ġcurrent Ġmedia Ġitem Ġin Ġdevice Ġbelong ing Ġto Ġpresent Ġcollection . ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġfunction Ġcalled Ġafter Ġfetching Ġthe Ġmedia . ĊĠĠĠĠ Ġ* Ġ@ param Ġfailure Ġfunction Ġcalled Ġif Ġthe Ġfetching Ġfails . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch In ferred Media ( media ID : ĠString , Ġcallback : Ġ( Response ?) Ġ-> ĠUnit , Ġfailure : Ġ( e : ĠIOException ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgenerate Token ( Ġcallback Ġ= Ġ Ġ{ Ġtoken Ġ-> Ġ ĠLog . d (" API ", token ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" media / linked Media All _ Weighted /? media Id =$ media ID & draw If New = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( api Url Ġ+ Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - access - token ", Ġtoken !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}, Ġon Failure Callback Ġ= Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġmedia Ġfile Ġfrom Ġa Ġgiven Ġlink . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlink Ġlink Ġof Ġthe Ġmedia Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġsize Ġdimensions Ġof Ġthe Ġmedia Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġfunction Ġcalled Ġafter Ġfetching Ġthe Ġmedia Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġfailure Ġfunction Ġcalled Ġif Ġthe Ġfetching Ġfails . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch Bitmap ( link : String , Ġsize : Int Ġ= Ġ 3 0 0 , Ġcallback : Ġ( ResponseBody ?) Ġ-> ĠUnit , Ġfailure : Ġ( e : ĠIOException ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgenerate Token ( Ġcallback Ġ= Ġ Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" API ", Ġtoken ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" media /$ link /? size =$ size " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( api Url Ġ+ Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - access - token ", Ġtoken !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall ?, Ġe : ĠIOException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" API ", Ġ" Error Ġhere :"+ e . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall ?, Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" API "," Got Ġimage : Ġ"+ response . body (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response . body ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}, Ġon Failure Callback Ġ= Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSends Ġa Ġgiven Ġstring Ġof Ġlogs . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlogs ĠJSON Ġformatted Ġstring Ġof Ġlogs Ġto Ġbe Ġsent . ĊĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġfunction Ġcalled Ġafter Ġsuccessfully Ġsending Ġthe Ġlogs . ĊĠĠĠĠ Ġ* Ġ@ param Ġfailure Ġfunction Ġcalled Ġif Ġthe Ġoperation Ġfails . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsend Logs ( logs : String , Ġcallback : Ġ( ResponseBody ?) Ġ-> ĠUnit , Ġfailure : Ġ( e : ĠIOException ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġgenerate Token ( Ġcallback Ġ= Ġ Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" API ", Ġtoken ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠJSON : ĠMediaType ? Ġ= ĠMediaType . parse (" application / json ; Ġcharset = utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject (); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject . put (" logs ", ĠJSONArray ( logs )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ: ĠRequest Body Ġ Ġ= ĠRequest Body . create ( JSON , ĠjsonObject . toString ()); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" log " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( api Url Ġ+ Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" x - access - token ", Ġtoken !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall ?, Ġe : ĠIOException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" API ", Ġ" Error Ġhere :"+ e . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( e !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall ?, Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response . body ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}, Ġon Failure Callback Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } ĊĊ