package Ġio . ag ora . ag ora . entities Ċ Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . File Ċ import Ġjava . util . HashMap Ċ Ċ import Ġandroid . content . Context Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . ko ush ik dut ta . async . future . Future Callback Ċ import Ġcom . ko ush ik dut ta . ion . Ion Ċ import Ġcom . ko ush ik dut ta . ion . builder . Builders Ċ import Ġcom . google . gson . Json Parser Ċ Ċ class ĠRequest Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠBASE _ URL Ġ= Ġ" http :// ec 2 - 3 5 - 1 8 0 - 1 0 3 - 1 3 0 . eu - west - 3 . compute . amazonaws . com : 3 0 0 0 / api / v 1 /" ĊĠĠĠ Ġprivate Ġval Ġurl Params Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠ Ġprivate Ġvar Ġheader Params Ġ= ĠHashMap < String , ĠString >() ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrequest : ĠRequest Ġ= ĠRequest () ĊĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequest ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Header ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Params [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd QueryString ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġurl Params [ key ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġsuccess ( obj : ĠJSONObject ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfail ( error : ĠString ) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetDefault Url Params (_ route : ĠString , Ġobj : ĠJSONObject ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġroute Ġ= Ġ_ route ĊĠĠĠĠĠĠĠ Ġvar Ġis First : ĠBoolean ? Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġurl Params . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġ'? '. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġ'& '. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġentry . key Ġ+ Ġ'=' . toString () Ġ+ Ġentry . value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( obj ?. names () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġobj . names (). length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġ'? '. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġ'& '. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ+= Ġobj . names (). getString ( i ) Ġ+ Ġ'=' . toString () Ġ+ Ġobj . get ( obj . names (). getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġroute ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat ( json : ĠJSONObject ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Parser Ġ= ĠJson Parser () ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġjson Parser . parse ( json . toString ()) Ġas ĠJsonObject ĊĠĠĠ Ġ} ĊĊĠĠ Ġ/* private Ġfun Ġformat ( json : ĠJSONObject ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠJsonObject () ĊĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġjson . keys () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġiterator . next () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret . addProperty ( key , Ġjson . get ( key ) Ġas ĠString ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSomething Ġwent Ġwrong ! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġfun Ġsend File ( ctx : ĠContext , Ġroute : ĠString , Ġpathname : ĠString , ĠqueryString : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIon . with ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( setDefault Url Params ( BASE _ URL Ġ+ Ġroute , ĠqueryString )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Multipart File (" file ", Ġ" application / octet ", ĠFile ( pathname )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Callback ( object Ġ: ĠFuture Callback < JsonObject > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed ( e : ĠException , Ġresult : ĠJsonObject ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Suc ceed Ġ= Ġresult ?. get (" success ") Ġ!= Ġnull Ġ&& Ġresult . get (" success "). as Boolean ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Suc ceed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess ( if Ġ( result !!. get (" data ") Ġ!= Ġnull ) ĠJSONObject ( result . get (" data "). toString ()) Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġret Ġ= Ġif Ġ( result Ġ!= Ġnull ) Ġresult . get (" message ") Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġret Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret Ġ= Ġresult . get (" error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfail ( if Ġ( ret Ġ!= Ġnull ) Ġret . asString Ġelse Ġ" unk now Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Request Headers ( req : ĠBuild ers . Any . B ): ĠBuild ers . Any . B Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġheader Params ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . add Header ( key , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġreq ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( ctx : ĠContext , Ġroute : ĠString , Ġmethod : ĠString , ĠqueryString : ĠJSONObject , Ġbody : ĠJSONObject ?, Ġcb : ĠCallback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠIon . with ( ctx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( method , ĠsetDefault Url Params ( BASE _ URL Ġ+ Ġroute , ĠqueryString )) ĊĊĠĠĠĠĠĠĠ Ġprintln (" SEND ING ") ĊĠĠĠĠĠĠĠ Ġprintln ( setDefault Url Params ( BASE _ URL Ġ+ Ġroute , ĠqueryString )) ĊĠĠĠĠĠĠĠ Ġif Ġ( body Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . set JsonObject Body ( format ( body )) ĊĠĠĠĠĠĠĠ Ġset Request Headers ( req ) ĊĠĠĠĠĠĠĠ Ġreq . as JsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Callback ( object Ġ: ĠFuture Callback < JsonObject > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed ( e : ĠException ?, Ġresult : ĠJsonObject ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Suc ceed Ġ= Ġresult Ġ!= Ġnull Ġ&& Ġ( result . get (" errors ") Ġ== Ġnull Ġ|| Ġresult . has (" errors ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" REQUEST ĠRESP ONSE ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Suc ceed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . success ( JSONObject ( result . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . fail ( if Ġ( result Ġ!= Ġnull ) Ġresult . getAs JsonArray (" errors "). toString () Ġelse Ġ" unknown Error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( error : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }