package Ġde . dd k fm . h cloud Ċ Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . Json Parser Ċ import Ġcom . m ash ape . un ire st . http . HttpResponse Ċ import Ġcom . m ash ape . un ire st . http . JsonNode Ċ import Ġcom . m ash ape . un ire st . http . Un ire st Ċ import Ġcom . m ash ape . un ire st . request . GetRequest Ċ import Ġcom . m ash ape . un ire st . request . HttpRequest Ċ import Ġcom . m ash ape . un ire st . request . HttpRequest With Body Ċ import Ġorg . apache . log 4 j . Log Manager Ċ import Ġorg . json . JSONObject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmax sc Ġon Ġ 1 8 . 0 2 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ open Ġclass ĠApi Base Ġ{ ĊĠĠĠ Ġvar Ġtoken Ġ: ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġauth Ġ: ĠString Ġ= Ġ"" ĊĠĠĠ Ġprotected Ġval Ġlogger Ġ= ĠLog Manager . getLogger (" H Cloud - Kotlin ") ĊĠĠĠ Ġvar Ġendpoint Ġ: ĠString Ġ= Ġ" https :// api . he tz ner . cloud / v 1 "; ĊĠĠĠ Ġconstructor ( token Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . token Ġ= Ġtoken ; ĊĠĠĠĠĠĠĠ Ġthis . auth Ġ= Ġ" Bearer Ġ$ token "; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest ( type Ġ: ĠString , Ġurl Ġ: ĠString , Ġheader Ġ: ĠMap < String , ĠString > ?, Ġjson Ġ: ĠJSONObject ? Ġ= Ġnull ) Ġ: ĠHttpResponse < JsonNode >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"$ endpoint $ url " ĊĠĠĠĠĠĠĠ Ġvar Ġreq Ġ: ĠHttpRequest ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( type . toLowerCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" get " Ġ-> ĠUn ire st . get ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" post " Ġ-> ĠUn ire st . post ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" put " Ġ-> ĠUn ire st . put ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" delete " Ġ-> ĠUn ire st . delete ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġheaders Ġ= Ġheader Ġ?: Ġempty Map (); ĊĠĠĠĠĠĠĠ Ġvar Ġreq With Headers Ġ= Ġreq ?. headers ( headers )?. header (" Authorization ", Ġauth ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġresp Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( req With Headers Ġis ĠGet Request ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġget Req Ġ= Ġreq With Headers Ġas ĠGet Request ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Req ?. as Json (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( req With Headers Ġis ĠHttpRequest With Body ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchange Req Ġ= Ġreq With Headers Ġas ĠHttpRequest With Body ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Req ?. body ( json )?. as Json () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Req ?. as Json () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e Ġ: ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("$ type - Request Ġfailed : Ġ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen ( resp ?. status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 , Ġ 2 0 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgson Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġform ated Ġ= Ġgson . toJson ( parser . parse ( resp ?. body ?. toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" Resp : Ġ$ form ated ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("$ type - Request Ġfailed : Ġ[ ${ resp ?. status }: Ġ${ resp ?. status Text }] ĠResponse : Ġ${ resp ?. body . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠPOST Ġrequest ĊĠĠĠ Ġprotected Ġfun Ġpost ( url Ġ: ĠString , Ġheader Ġ: ĠMap < String , ĠString > ?, Ġjson Ġ: ĠJSONObject ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . request (" POST ", Ġurl , Ġheader , Ġjson )?. body ?. ` object ` ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠPUT Ġrequest ĊĠĠĠ Ġprotected Ġfun Ġput ( url Ġ: ĠString , Ġheader Ġ: ĠMap < String , ĠString > ?, Ġjson Ġ: ĠJSONObject ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . request (" PUT ", Ġurl , Ġheader , Ġjson )?. body ?. ` object ` ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠDELETE Ġrequest ĊĠĠĠ Ġprotected Ġfun Ġdelete ( url Ġ: ĠString , Ġheader Ġ: ĠMap < String , ĠString > ?, Ġjson Ġ: ĠJSONObject ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . request (" DELETE ", Ġurl , Ġheader , Ġjson )?. body ?. ` object ` ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠGET Ġrequest ĊĠĠĠ Ġprotected Ġfun Ġget ( url Ġ: ĠString , Ġheader Ġ: ĠMap < String , ĠString >? ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . request (" GET ", Ġurl , Ġheader )?. body ?. ` object ` ĊĠĠĠ Ġ} Ċ } Ċ