package Ġcom . u oooo . vol ley . ext . toolbox Ċ Ċ import Ġcom . android . vol ley . Auth Failure Error Ċ import Ġcom . android . vol ley . Header Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . toolbox . Base Http Stack Ċ import Ġcom . android . vol ley . toolbox . HttpResponse Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġ@ sub ra h man ya Ġ Ġon Ġ 2 / 3 / 1 8 . Ċ Ġ* Ċ Ġ* ĠC RED ITS : Ċ Ġ* Ġ< 1 > https :// gist . github . com / al ash ow / c 9 6 c 0 9 3 2 0 8 9 9 e 4 caa 0 6 b Ċ Ġ* Ġ< 2 > https :// gist . github . com / int ari / e 5 7 a 9 4 5 eed 9 c 2 ee 0 f 9 eb 9 0 8 2 4 6 9 6 9 8 f 3 Ċ Ġ* Ġ< 3 > https :// gist . github . com / al ire za af kar / a 6 2 d 6 a 9 a 7 e 5 8 2 3 2 2 ca 1 a 7 6 4 bad 1 1 6 a 7 0 Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠReason : Ġfor Ġmaking Ġthe ĠVol ley Ġuse Ġlatest Ġokhttp stack Ġwork Ġfor Ġlatest Ġversion ĠVol ley Ġ 1 . 1 . 0 Ġby Ġremoving Ġall Ġdeprecated Ġorg . apache Ġdependencies ! Ċ Ġ*/ Ċ Ċ class ĠOk Http Stack ( private Ġval Ġinterceptor List : ĠList < Interceptor > Ġ= ĠlistOf ()) Ġ: ĠBase Http Stack () Ġ{ ĊĊĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠ Ġprivate Ġfun Ġset Connection Parameters For Request ( ĊĠĠĠĠĠĠĠ Ġbuilder : Ġokhttp 3 . Request . Builder , ĊĠĠĠĠĠĠĠ Ġrequest : ĠRequest < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . DEPRECATED _ GET _ OR _ POST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnsure Ġbackwards Ġcompatibility . Ġ ĠVol ley Ġassumes Ġa Ġrequest Ġwith Ġa Ġnull Ġbody Ġis Ġa ĠGET . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Body Ġ= Ġrequest . body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post Body Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . post ( post Body . to RequestBody ( request . body ContentType . to MediaType OrNull ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . GET Ġ-> Ġbuilder . get () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . DELETE Ġ-> Ġbuilder . delete ( create RequestBody ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . POST Ġ-> Ġbuilder . post ( create RequestBody ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . PUT Ġ-> Ġbuilder . put ( create RequestBody ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . HEAD Ġ-> Ġbuilder . head () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . OPTIONS Ġ-> Ġbuilder . method (" OPTIONS ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . TRACE Ġ-> Ġbuilder . method (" TRACE ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Method . PATCH Ġ-> Ġbuilder . patch ( create RequestBody ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġmethod Ġtype .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠ Ġprivate Ġfun Ġcreate RequestBody ( r : ĠRequest < *> ): ĠRequest Body Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( r Ġis ĠOk HttpRequest Body Request <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġr . request Body ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġr . body Ġ?: Ġbyte ArrayOf () ĊĠĠĠĠĠĠĠ Ġreturn Ġbody . to RequestBody ( r . body ContentType . to MediaType OrNull ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠAuth Failure Error :: class ) ĊĠĠĠ Ġoverride Ġfun Ġexecute Request ( ĊĠĠĠĠĠĠĠ Ġrequest : ĠRequest <* >, ĊĠĠĠĠĠĠĠ Ġadditional Headers : ĠMap < String , ĠString > ĊĠĠĠ Ġ): ĠHttpResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Builder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġval Ġtimeout Ms Ġ= Ġrequest . timeout Ms ĊĊĠĠĠĠĠĠĠ Ġclient Builder . connect Timeout ( timeout Ms . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġclient Builder . read Timeout ( timeout Ms . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠ Ġclient Builder . write Timeout ( timeout Ms . to Long (), ĠTimeUnit . MILLISECONDS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġok HttpRequest Builder Ġ= Ġokhttp 3 . Request . Builder () ĊĠĠĠĠĠĠĠ Ġok HttpRequest Builder . url ( request . url ) ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġrequest . headers ĊĠĠĠĠĠĠĠ Ġheaders . keys . forEach Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [ name ]?. also Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpRequest Builder . add Header ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadditional Headers . keys . forEach Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Headers [ name ]?. also Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpRequest Builder . add Header ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Connection Parameters For Request ( ok HttpRequest Builder , Ġrequest ) ĊĊĠĠĠĠĠĠĠ Ġinterceptor List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Builder . add Network Interceptor ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġclient Builder . build () ĊĠĠĠĠĠĠĠ Ġval Ġok HttpRequest Ġ= Ġok HttpRequest Builder . build () ĊĠĠĠĠĠĠĠ Ġval Ġok Http Call Ġ= Ġclient . new Call ( ok HttpRequest ) ĊĠĠĠĠĠĠĠ Ġval Ġok HttpResponse Ġ= Ġok Http Call . execute () ĊĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġok HttpResponse . code ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġok HttpResponse . body ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbody ?. byte Stream () ĊĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= Ġbody ?. content Length ()?. toInt () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġresponse Headers Ġ= Ġmap Headers ( ok HttpResponse . headers ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠHttpResponse ( code , Ġresponse Headers , Ġcontent Length , Ġcontent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap Headers ( response Headers : ĠHeaders ): ĠList < Header > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠArrayList < Header >() ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġresponse Headers . size ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . add ( Header ( response Headers . name ( it ), Ġresponse Headers . value ( it ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠ Ġ} Ċ } Ċ