package Ġcom . example . recorder . utils Ċ Ċ import Ġcom . example . model . Base Request Ċ import Ġcom . example . model . Base RequestBody Ċ import Ġcom . example . model . Base Response Ċ import Ġcom . example . model . Base ResponseBody Ċ import Ġokhttp 3 .* Ċ import Ġok io . Buffer Ċ import Ġjava . io . IOException Ċ Ċ object ĠOk http Data Converter Ġ{ ĊĠĠĠ Ġfun Ġfrom HttpRequest ( ok httpRequest : Ġokhttp 3 . Request ): ĠBase Request Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBase Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Request . url (). encoded Path (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Request . method (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Request . headers (). to Multimap (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom HttpRequest Body ( ok httpRequest . body ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfrom HttpResponse ( okhttp Response : Ġokhttp 3 . Response ): ĠBase Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBase Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Response . code (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Response . message (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Response . headers (). to Multimap (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuse Ġokhttp 3 . Response . peek Body Ġinstead Ġokhttp 3 . Response . body Ġof Ġ Ġso Ġthe Ġresponse Ġis Ġnot Ġclosed . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Http ResponseBody ( okhttp Response . peek Body ( Long . MAX _ VALUE )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp Response . protocol () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto HttpResponse Builder ( base Response : ĠBase Response ): Ġokhttp 3 . Response . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġbase Response . body ĊĠĠĠĠĠĠĠ Ġvar Ġokhttp ResponseBody : ĠResponse Body ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġmedia Type Ġ= ĠMediaType . parse ( response Body ?. contentType Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġresponse Body ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġokhttp ResponseBody Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Body . create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Body . bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Builder Ġ= ĠHeaders . Builder () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( name , Ġvalues ) Ġin Ġbase Response . headers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġvalues ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Builder . add ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġokhttp 3 . Response . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. code ( base Response . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. message ( base Response . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( headers Builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( okhttp ResponseBody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. protocol ( Protocol . get ( base Response . protocol . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfrom HttpRequest Body ( okhttp RequestBody : ĠRequest Body ?): ĠBase RequestBody ? Ġ{ ĊĠĠĠĠĠĠĠ Ġokhttp RequestBody ?. let Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent : ĠByteArray ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcontentType : ĠString ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . writeTo ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġbuffer . read ByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= Ġbody . contentType (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBase RequestBody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfrom Http ResponseBody ( okhttp ResponseBody : ĠResponse Body ?): ĠBase ResponseBody ? Ġ{ ĊĠĠĠĠĠĠĠ Ġokhttp ResponseBody ?. let Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBase ResponseBody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . bytes (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . contentType ()?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }