package Ġcom . cloudinary . http Ċ Ċ import Ġokhttp 3 .* Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . net . URL Ċ Ċ val ĠAP PLICATION _ OCT ET _ STREAM Ġ= ĠMediaType . parse (" application / octet - stream ") Ċ Ċ class ĠOk HttpClient Adapter ( private Ġvar Ġclient : ĠOk HttpClient ) Ġ: ĠHttpClient Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġpost ( url : ĠURL , Ġheaders : ĠMap < String , ĠString >, Ġentity : ĠMultip art Entity ) Ġ= ĊĠĠĠĠĠĠĠ Ġpost ( url , Ġheaders , Ġentity , Ġnull ) ĊĊĠĠĠ Ġoverride Ġfun Ġpost ( ĊĠĠĠĠĠĠĠ Ġurl : ĠURL , ĊĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġentity : ĠMultip art Entity , ĊĠĠĠĠĠĠĠ Ġprogress Callback : ĠProgress Callback ? ĊĠĠĠ Ġ): ĠHttpResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Builder Ġ= ĠMultip art Body . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( Multipart Body . FORM ) ĊĊĠĠĠĠĠĠĠ Ġentity . parts . forEach Ġ{ Ġ( name , Ġvalue ) Ġ-> Ġadd Part ( body Builder , Ġname , Ġvalue ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url . to External Form ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( body Builder . build ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġexecute ( headers , Ġrequest Builder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( url : ĠURL , Ġheaders : ĠMap < String , ĠString >): ĠHttpResponse ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Builder Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url . to External Form ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġexecute ( headers , Ġrequest Builder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute ( ĊĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġrequest Builder : ĠRequest . Builder ĊĠĠĠ Ġ): ĠHttpResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġheaders . forEach Ġ{ Ġrequest Builder . add Header ( it . key , Ġit . value ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . client . new Call ( request Builder . build ()). execute (). use Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Headers Ġ= Ġresponse . headers (). names (). associate By ({ Ġit !! Ġ}, Ġ{ Ġresponse . headers (). get ( it ) !! Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHttpResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . code (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. string (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Headers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Part ( builder : ĠMultip art Body . Builder , Ġname : ĠString , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġbuilder . add FormData Part ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFile Ġ-> Ġbuilder . add FormData Part ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" file ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Body . create ( APPLICATION _ OCT ET _ STREAM , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġbuilder . add FormData Part ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" file ", Ġname , ĠRequest Body . create ( APPLICATION _ OCT ET _ STREAM , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInputStream Ġ-> Ġthrow ĠError ( IllegalArgumentException (" Ok Http Ġdoes Ġnot Ġsupport Ġuploading Ġstreams ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }