package Ġcom . github . ush ios an 2 3 . network utils . http Ċ Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . JsonObject Ċ import Ġkotlinx . serialization . json . decode FromJson Element Ċ import Ġjava . net . http . HttpResponse Ċ Ċ /** Ċ Ġ* ĠCustom Ġjson Ġencoder Ċ Ġ*/ Ċ val Ġjson Encoder Ġ= ĠJson Ġ{ Ċ ĉ encode Defaults Ġ= Ġtrue Ċ ĉ pretty Print Ġ= Ġtrue Ċ ĉ ignore Unknown Keys Ġ= Ġtrue Ċ ĉ allow Structured Map Keys Ġ= Ġtrue Ċ } Ċ Ċ /** Ċ Ġ* ĠCheck Ġif Ġrequest Ġis Ġvalid Ġjson Ġresponse Ċ Ġ*/ Ċ val ĠHttpResponse <* >. isValid Json : ĠBoolean Ċ ĉ get () Ġ= Ġtry Ġ{ Ċĉ ĉ when Ġ( val Ġbody Ġ= Ġbody ()) Ġ{ Ċĉĉ ĉ is ĠJson Element , ĠJsonObject Ġ-> Ġtrue Ċĉĉ ĉ is ĠString Ġ-> Ġ{ Ċĉĉĉ ĉ json Encoder . decode FromString < Json Element >( body ) Ċĉĉĉ ĉ true Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ-> Ġfalse Ċĉ ĉ } Ċ ĉ } Ġcatch Ġ( ignored : ĠException ) Ġ{ Ċĉ ĉ false Ċ ĉ } Ċ Ċ /** Ċ Ġ* ĠGet Ġjson Ġelement Ġfrom Ġresponse Ġobject Ċ Ġ* Ċ Ġ* Ġ@ return Ġ[ Json Element ] Ġif Ġis Ġvalid Ġjson Ġor Ġ` null ` Ġif Ġnot Ċ Ġ*/ Ċ fun ĠHttpResponse <* >. get Json (): ĠJsonObject ? Ġ{ Ċ ĉ // ĠCheck Ġif Ġis Ġvalid Ġjson Ċ ĉ if Ġ(! isValid Json ) Ġreturn Ġnull ĊĊ ĉ // ĠDecode Ġelement Ċ ĉ return Ġtry Ġ{ Ċĉ ĉ when Ġ( val Ġbody Ġ= Ġbody ()) Ġ{ Ċĉĉ ĉ is ĠJson Element Ġ-> Ġbody Ġas ĠJsonObject ? Ċĉĉ ĉ is ĠJsonObject Ġ-> Ġbody Ċĉĉ ĉ is ĠString Ġ-> Ġjson Encoder . decode FromString ( body ) Ċĉĉ ĉ else Ġ-> Ġnull Ċĉ ĉ } Ċ ĉ } Ġcatch Ġ( ignored : ĠException ) Ġ{ Ċĉ ĉ null Ċ ĉ } Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġcustom Ġelement Ġfrom Ġresponse Ġobject Ċ Ġ* Ċ Ġ* Ġ@ return Ġ[ T ] Ġobject Ġor Ġ` null ` Ġif Ġis Ġnot Ġvalid Ġjson Ġobject Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT > ĠHttpResponse <* >. get Json (): ĠT ? Ġ{ Ċ ĉ // ĠCheck Ġif Ġis Ġvalid Ġjson Ċ ĉ if Ġ(! isValid Json ) Ġreturn Ġnull ĊĊ ĉ // ĠDecode Ġelement Ċ ĉ return Ġtry Ġ{ Ċĉ ĉ when Ġ( val Ġbody Ġ= Ġbody ()) Ġ{ Ċĉĉ ĉ is ĠJson Element Ġ-> Ġjson Encoder . decode FromJson Element < T >( body ) Ċĉĉ ĉ is ĠJsonObject Ġ-> Ġjson Encoder . decode FromJson Element < T >( body ) Ċĉĉ ĉ is ĠString Ġ-> Ġjson Encoder . decode FromString < T >( body ) Ċĉĉ ĉ else Ġ-> Ġnull Ċĉ ĉ } Ċ ĉ } Ġcatch Ġ( ignored : ĠException ) Ġ{ Ċĉ ĉ null Ċ ĉ } Ċ } Ċ