package Ġcom . s az illa . covid 1 9 Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . JsonArray Request Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . json . JSONArray Ċ import Ġjava . io . IOException Ċ Ċ enum Ġclass ĠJSON Url ( val Ġres Id : ĠInt ) Ġ{ ĊĠĠĠ ĠNational ( R . string . json _ url _ national ), ĊĠĠĠ ĠReg ional ( R . string . json _ url _ region al ), ĊĠĠĠ ĠPro v inc ial ( R . string . json _ url _ prov inc ial ) Ċ } Ċ Ċ class ĠRemote Json Provider ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcache Ġ= ĠHashMap < JSON Url , ĠJSONArray >() ĊĊĠĠĠ Ġfun Ġretrieve JSON ( json Url : ĠJSON Url ): ĠMaybe < JSONArray > Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( cache . containsKey ( json Url )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . just ( cache [ json Url ]) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . create < JSONArray > Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġcontext . getString ( json Url . res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Request Ġ= ĠJson Array Request ( Request . Method . GET , Ġurl , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener < JSONArray > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcache [ json Url ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . on Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( IOException (" Failed Ġto Ġretrieve Ġjson Ġfrom : Ġ$ url ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVol ley . new Request Queue ( context ). add ( json Array Request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ