/** Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 Ġvk . com Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ */ Ċ package Ġcom . vk . k net . core . http Ċ Ċ import Ġcom . vk . k net . core . ext . from Multimap Ċ import Ġcom . vk . k net . core . ext . getHeader Ċ import Ġcom . vk . k net . core . http . body . request . HttpRequest Body Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ Ċ data Ġclass ĠHttpRequest ( ĊĠĠĠ Ġval Ġmethod : ĠHttpMethod , ĊĠĠĠ Ġval Ġurl : ĠString , ĊĠĠĠ Ġval Ġheaders : ĠMap < String , ĠList < String >> Ġ= Ġempty Map (), ĊĠĠĠ Ġval Ġbody : ĠHttp RequestBody ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġpayload : ĠMap < Http Payload , ĠAny >? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrequest Counter Ġ= ĠAtomic Long ( 0 ) ĊĠĠĠĠĠĠĠ Ġfun Ġget ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠList < String >> Ġ= Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody : ĠHttp RequestBody ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠHttpRequest Ġ= ĠHttpRequest ( HttpMethod . GET , Ġurl , Ġheaders , Ġbody ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġpost ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠList < String >> Ġ= Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody : ĠHttp RequestBody ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠHttpRequest Ġ= ĠHttpRequest ( HttpMethod . POST , Ġurl , Ġheaders , Ġbody ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġid : ĠLong Ġ= Ġrequest Counter . get And Increment () ĊĊĠĠĠ Ġval Ġuri : ĠHttp Uri Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠHttp Uri . from ( url ) Ġ} ĊĊĠĠĠ Ġval Ġis Http : ĠBoolean Ġby Ġlazy Ġ{ Ġuri . scheme Ġ== Ġ" http " Ġ} ĊĠĠĠ Ġval Ġis Https : ĠBoolean Ġby Ġlazy Ġ{ Ġuri . scheme Ġ== Ġ" https " Ġ} ĊĊĠĠĠ Ġval Ġis Get : ĠBoolean Ġ= Ġmethod . is Get ĊĠĠĠ Ġval Ġis Post : ĠBoolean Ġ= Ġmethod . is Post ĊĊĠĠĠ Ġfun Ġfold Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders . map Values Ġ{ Ġvalues Ġ-> Ġvalues . value . from Multimap () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Headers ( header : ĠString ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders . getHeader ( header ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Header ( header : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders . getHeader ( header )?. from Multimap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠAny > Ġwith Payload ( key : ĠHttp Payload , Ġvalue : ĠV ): ĠHttpRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp ays Ġ= Ġpayload ?. to Mutable Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġp ays [ key ] Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcopy ( payload Ġ= Ġp ays ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< V Ġ: ĠAny > Ġget Payload ( key : ĠHttp Payload ): ĠV ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġpayload ?. get ( key ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġas ĠV ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ