package Ġarray Ċ Ċ import Ġjava . net . URI Ċ import Ġjava . net . http . HttpClient Ċ import Ġjava . net . http . HttpRequest Ċ import Ġjava . net . http . HttpResponse Ċ import Ġjava . time . Duration Ċ Ċ class ĠHttp Result Jvm ( ĊĠĠĠ Ġoverride Ġval Ġcode : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġcontent : ĠString Ċ ) Ġ: ĠHttp Result Ċ Ċ private Ġfun Ġmake HttpClient (): ĠHttpClient Ġ{ ĊĠĠĠ Ġreturn ĠHttpClient . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. follow Redirect s ( HttpClient . Redirect . NORMAL ) ĊĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ actual Ġfun ĠhttpRequest ( url : ĠString , Ġheaders : ĠMap < String , ĠString >? ): ĠHttp Result Ġ{ ĊĠĠĠ Ġval ĠhttpRequest Ġ= ĠHttpRequest . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. uri ( URI ( url )) ĊĠĠĠĠĠĠĠ Ġ. timeout ( Duration . of Minutes ( 1 )) ĊĠĠĠĠĠĠĠ Ġ. GET () ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders ?. forEach Ġ{ Ġ( k , Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm . header ( k , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġval Ġresult Ġ= Ġmake HttpClient (). send ( httpRequest , ĠHttpResponse . Body Handlers . of String ()) ĊĠĠĠ Ġreturn ĠHttp Result Jvm ( result . statusCode (). to Long (), Ġresult . body ()) Ċ } Ċ Ċ actual Ġfun Ġhttp Post ( url : ĠString , Ġcontent : ĠByteArray , Ġheaders : ĠMap < String , ĠString >? ): ĠHttp Result Ġ{ ĊĠĠĠ Ġval ĠhttpRequest Ġ= ĠHttpRequest . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. uri ( URI ( url )) ĊĠĠĠĠĠĠĠ Ġ. timeout ( Duration . of Minutes ( 1 )) ĊĠĠĠĠĠĠĠ Ġ. POST ( HttpRequest . Body Publish ers . of ByteArray ( content )) ĊĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders ?. forEach Ġ{ Ġ( k , Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm . header ( k , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠ Ġval Ġresult Ġ= Ġmake HttpClient (). send ( httpRequest , ĠHttpResponse . Body Handlers . of String ()) ĊĠĠĠ Ġreturn ĠHttp Result Jvm ( result . statusCode (). to Long (), Ġresult . body ()) Ċ } Ċ