package Ġedu . c sh . ch ase . sprint Ċ Ċ import Ġedu . c sh . ch ase . k json . Json Ċ import Ġedu . c sh . ch ase . k json . Json Base Ċ import Ġokhttp 3 . Headers Ċ import Ġjava . io . IOException Ċ import Ġokhttp 3 . Response Ġas ĠOk Response Ċ Ċ sealed Ġclass ĠResponse ( val Ġrequest : ĠRequest ) Ġ{ ĊĊĠĠĠ Ġabstract Ġoverride Ġfun ĠtoString (): ĠString ĊĊĠĠĠ Ġclass ĠSuccess ( request : ĠRequest , Ġval ĠstatusCode : ĠInt , Ġval Ġbody : ĠByteArray ?, Ġval Ġheaders : ĠHeaders ?) Ġ: ĠResponse ( request ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor ( request : ĠRequest , Ġresponse : ĠOk Response ) Ġ: Ġthis ( request , Ġresponse . code , Ġresponse . body ?. bytes (), Ġresponse . headers ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbody As Json : ĠJson Base ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġbody AsString ?. let Ġ{ ĠJson . parse ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbody AsString : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġbody ?. let Ġ{ ĠString ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġbody AsString Ġ?: Ġ" null " ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFailure ( request : ĠRequest , Ġval ĠstatusCode : ĠInt , Ġval Ġbody : ĠByteArray ?, Ġval Ġheaders : ĠHeaders ?) Ġ: ĠResponse ( request ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor ( request : ĠRequest , Ġresponse : ĠOk Response ) Ġ: Ġthis ( request , Ġresponse . code , Ġresponse . body ?. bytes (), Ġresponse . headers ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbody As Json : ĠJson Base ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġbody AsString ?. let Ġ{ ĠJson . parse ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbody AsString : ĠString ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġbody ?. let Ġ{ ĠString ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġbody AsString Ġ?: Ġ" null " ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠConnection Error ( request : ĠRequest , Ġval Ġerror : ĠIOException ) Ġ: ĠResponse ( request ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġerror . message Ġ?: Ġ" null " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcode : ĠInt ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> ĠstatusCode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> ĠstatusCode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( response : Ġokhttp 3 . Response , Ġrequest : ĠRequest ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġresponse . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( code Ġin Ġ 2 0 0 .. 2 9 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġcode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġresponse . body ?. use Ġ{ Ġit . bytes () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġresponse . headers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ= Ġcode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġresponse . body ?. use Ġ{ Ġit . bytes () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= Ġresponse . headers ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }