package Ġname . k oc ian . api . testing Ċ Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġokhttp 3 . Headers . Companion . to Headers Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġjava . time . Duration . of Seconds Ċ Ċ object ĠNetwork Client Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġ. call Timeout ( of Seconds ( Configuration . timeout )) ĊĠĠĠĠĠĠĠ Ġ. connect Timeout ( of Seconds ( Configuration . timeout )) ĊĠĠĠĠĠĠĠ Ġ. read Timeout ( of Seconds ( Configuration . timeout )) ĊĠĠĠĠĠĠĠ Ġ. write Timeout ( of Seconds ( Configuration . timeout )) ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( it . trim ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġfun Ġexecute ( request : ĠRequest ): ĠResponse Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ" application / json ; Ġcharset = utf - 8 ". to MediaType () ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= Ġokhttp 3 . Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( request . headers . to Headers ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( request . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request . method Ġin ĠlistOf ( HttpMethod . POST )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . method ( request . method . name , Ġrequest . payload . to RequestBody ( json )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . method ( request . method . name , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġclient . new Call ( req ). execute () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponse (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Ġ= Ġres ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġres . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġres . body ?. string () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġif Ġ( response Body . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson . decode FromString < Json Element >( response Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ