package Ġcom . d ast an apps . d ast an lib . network Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . android . vol ley .* Ċ import Ġcom . android . vol ley . toolbox . JsonArray Request Ċ import Ġcom . android . vol ley . toolbox . JsonObject Request Ċ import Ġcom . android . vol ley . toolbox . String Request Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġcom . d ast an apps . d ast an lib . D ast an Lib App Ċ import Ġcom . d ast an apps . d ast an lib . log . Logger Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠD ast an ĠI q bal Ġon Ġ 1 0 / 7 / 2 0 1 5 . Ċ Ġ*/ Ċ class ĠVol ley Request Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠaddTo Request Queue ( req : ĠRequest < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġreq . tag Ġ= ĠTAG ĊĠĠĠĠĠĠĠ Ġrequest Queue . add ( req ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Pending Requests ( tag : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Request Queue Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Request Queue !!. cancel All ( tag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠVol ley Request :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Request Queue : ĠRequest Queue ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTIME OUT Ġ= Ġ 6 0 Ġ* Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġget JsonArray ( url : ĠString , Ġreq Id : ĠInt , Ġrequest Json : ĠJSONArray , Ġi Rest Request : ĠI Rest Request /* , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal ĠMap < String , ĠString > Ġheaders */) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Request Ġ= Ġobject Ġ: ĠJson Array Request ( Request . Method . GET , Ġurl , Ġrequest Json , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Rest Request . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Rest Request . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġpublic ĠMap < String , ĠString > Ġget Headers () Ġthrows ĠAuth Failure Error Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Array Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( json Array Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetString ( url : ĠString , Ġreq Id : ĠInt , Ġrequest Json : ĠString , Ġrest Req : ĠI Rest Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠString Request ( Request . Method . GET , Ġurl , Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" address Ġpri y am Ġresponse ", response ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRest Response . parse Display Add ( response ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" address Ġpri y am Ġresponse ", error . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body ContentType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" application / json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequest Json . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( 9 0 Ġ* Ġ 1 0 0 0 , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry Ġdon 't Ġchange Ġthis Ġvalue Ġit Ġwill Ġaffect Ġon Ġcart Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetString ( url : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . i ( TAG , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= ĠString Request ( Request . Method . GET , Ġurl , ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" address Ġpri y am Ġresponse ", response ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRest Response . parse Display Add ( response ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" address Ġpri y am Ġresponse ", error . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( 9 0 Ġ* Ġ 1 0 0 0 , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry Ġdon 't Ġchange Ġthis Ġvalue Ġit Ġwill Ġaffect Ġon Ġcart Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Post JsonObject ( url : ĠString , Ġpost Params : ĠHashMap < String , ĠString >, Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠString Request ( Request . Method . POST , Ġurl , ĠResponse . Listener Ġ{ Ġresponse Ġ-> Ġrest Req . on Response ( req Id , Ġresponse . toString ()) Ġ}, ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ?. network Response Ġ!= Ġnull Ġ&& Ġerror . network Response . statusCode Ġ== Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġ" 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [" Content - Type "] Ġ= Ġ" application / json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Network Response ( response : ĠNetwork Response ): ĠResponse < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . parse Network Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpost Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Post Body JsonObject ( url : ĠString , Ġbody Post : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request , Ġheaders : ĠMutable Map < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠString Request ( Request . Method . POST , Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> Ġrest Req . on Response ( req Id , Ġresponse . toString ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ?. network Response Ġ!= Ġnull Ġ&& Ġerror . network Response . statusCode Ġ== Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġ" 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Network Response ( response : ĠNetwork Response ): ĠResponse < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . parse Network Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body ContentType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" application / json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Params () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbody Post . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Patch Body JsonObject ( url : ĠString , Ġbody Post : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request , Ġheaders : ĠMutable Map < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠString Request ( Request . Method . PATCH , Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> Ġrest Req . on Response ( req Id , Ġresponse . toString ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ?. network Response Ġ!= Ġnull Ġ&& Ġerror . network Response . statusCode Ġ== Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġ" 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror ?. message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Network Response ( response : ĠNetwork Response ): ĠResponse < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . parse Network Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body ContentType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" application / json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Params () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbody Post . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Put Body JsonObject ( url : ĠString , Ġbody Post : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request , Ġheaders : ĠMutable Map < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠString Request ( Request . Method . PUT , Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> Ġrest Req . on Response ( req Id , Ġresponse . toString ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ?. network Response Ġ!= Ġnull Ġ&& Ġerror . network Response . statusCode Ġ== Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġ" 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġparse Network Response ( response : ĠNetwork Response ): ĠResponse < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . parse Network Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body ContentType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" application / json " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Params (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . get Params () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Body (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbody Post . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( 3 0 Ġ* Ġ 1 0 0 0 , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget JsonArray ( url : ĠString , Ġreq Id : ĠInt , Ġi Rest Request : ĠI Rest Request , Ġheaders : ĠMutable Map < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Request Ġ= Ġobject Ġ: ĠJson Array Request ( Request . Method . GET , Ġurl , Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Rest Request . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Rest Request . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Array Request . retry Policy Ġ= ĠDefault Retry Policy ( 1 5 Ġ* Ġ 1 0 0 0 , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( json Array Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Json Obj ( url : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request , Ġheaders : ĠMutable Map < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠJsonObject Request ( Request . Method . GET , Ġurl , Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . remove (" Content - Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( 1 5 Ġ* Ġ 1 0 0 0 , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Json Obj ( url : ĠString , Ġreq Id : ĠInt , Ġrequest Json : ĠJSONObject , Ġrest Req : ĠI Rest Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= ĠJsonObject Request ( Request . Method . GET , Ġurl , Ġrequest Json , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Json Obj ( url : ĠString , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= ĠJsonObject Request ( Request . Method . GET , Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . on Response ( req Id , Ġresponse . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġget J Post JsonObject ( url : ĠString , Ġbody Post : ĠJSONObject , Ġreq Id : ĠInt , Ġrest Req : ĠI Rest Request , Ġheaders : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= Ġobject Ġ: ĠJsonObject Request ( Request . Method . POST , Ġurl , Ġbody Post , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> Ġrest Req . on Response ( req Id , Ġresponse . toString ()) Ġ}, Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error ?. network Response Ġ!= Ġnull Ġ&& Ġerror . network Response . statusCode Ġ== Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġ" 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req . onError ( req Id , Ġerror ?. message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject Request . retry Policy Ġ= ĠDefault Retry Policy ( TIMEOUT , Ġ// timeout Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Retry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 f ) ĠĠĠĠĠĠĠ Ġ// Backoff Ġmultiplier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// time =( time +( timeout * multi ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Request Queue ( jsonObject Request , Ġurl ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< T > ĠaddTo Request Queue ( req : ĠRequest < T >, Ġtag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġdefault Ġtag Ġif Ġtag Ġis Ġempty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreq . tag Ġ= Ġif Ġ( TextUtils . isEmpty ( tag )) ĠTAG Ġelse Ġtag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Queue . add ( req ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Queue : ĠRequest Queue Ġ= ĠVol ley . new Request Queue ( D ast an Lib App . INSTANCE ) ĊĠĠĠ Ġ} Ċ } Ċ