/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . network Ċ Ċ import Ġkotlin . js . Promise ĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ- Ġmigrate Ġto Ġmulti platform . Ċ import Ġkotlin . js . json ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ- Ġmigrate Ġto Ġmulti platform . Ċ Ċ // ĠNetwork Ġconnector Ġto Ġwork Ġwith Ġbasic Ġurl Ġrequests . Ċ class ĠUrl Network Connector ( private Ġval Ġhost : ĠString , Ġprivate Ġval Ġport : ĠInt ? Ġ= Ġnull ) Ġ: ĠNetwork Connector () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġurl Ġ= Ġ"$ host ${ port ?. let Ġ{ Ġ": $ port " Ġ} Ġ?: Ġ"" }" ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠString ?> Ġsend Base Request ( method : ĠRequestMethod , Ġpath : ĠString , Ġuser : ĠString ?, Ġpassword : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Json ContentType : ĠBoolean , Ġbody : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler : Ġ( url : ĠString , Ġresponse : Ġdynamic ) Ġ-> ĠNothing ?): ĠPromise < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfull Url Ġ= Ġ"$ url /$ path " ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġrequire (" node - fetch ") ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġmutable ListOf < Pair < String , ĠString >>() ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull Ġ&& Ġpassword Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . add (" Authorization " Ġto Ġget Auth ( user , Ġpassword )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( accept Json ContentType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . add (" Accept " Ġto Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . add (" Content - Type " Ġto Ġ" application / json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġrequest ( full Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" method " Ġto Ġmethod . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" headers " Ġto Ġjson (*( headers . to Typed Array ())), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" body " Ġto Ġbody ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). then Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( JSON . stringify ( response )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler ( full Url , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ