package Ġjp . ne phy . hyp ixel in Ċ Ċ import Ġcom . github . sal om on br ys . kot son . contains Ċ import Ġcom . google . gson .* Ċ import Ġjp . ne phy . hyp ixel in . response . Response Object Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ Ċ class ĠH yp ixel in Response ( val Ġrequest : ĠRequest , Ġval Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcontent : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun ĠgetContent (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( content Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ( response . body ()?. string () Ġ?: Ġ""). un escape HTML Characters () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget JsonObject ( content : ĠString ) Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠGson (). fromJson ( content , ĠJsonObject :: class . java ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠJson Syntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Invalid ĠJson Ġformat Ġreturned . Ġ($ content )") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget Response Object (): ĠResponse Object < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠgetContent () ĊĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġget JsonObject ( content ) ĊĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . contains (" cause ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( jsonObject [" cause "]. asString ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . contains (" success ") Ġ&& Ġ! ĠjsonObject [" success "]. as Boolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Request Ġfailed .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT :: class . java . get Constructor ( Json Element :: class . java ). newInstance ( jsonObject ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Json Ġis Ġnot Ġmatched Ġwith Ġ${ T :: class . java . simple Name } ĠClass . Ġ($ content )") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInvocation TargetException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Json Ġis Ġnull . ĠUse ĠEmpty Ġclass Ġinstead Ġof Ġ${ T :: class . java . simple Name }. Ġ($ content )") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponse Object ( result , Ġcontent , Ġrequest , Ġresponse ) ĊĠĠĠ Ġ} Ċ } Ċ