package Ġcom . aab ul h aj . hu ji app Ċ Ċ import ĠSession Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . MODE _ PRIVATE Ċ import Ġandroid . os . AsyncTask Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . lang . reflect . Type ĊĊ Ċ object ĠCache Ġ{ ĊĊĠĠĠ Ġfun Ġcache Object ( context : ĠContext ?, Ġ` object `: ĠAny , Ġtoken : ĠType , Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite String ( context , ĠSession . get CacheKey ( name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson Builder (). create (). toJson (` object `, Ġtoken )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Cached Object ( context : ĠContext ?, Ġtoken : ĠType , ĠfileName : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder (). create (). fromJson ( readString ( context , ĠSession . get CacheKey ( fileName )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread String ( context : ĠContext , ĠfileName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġcontext . open File Input ( Session . get CacheKey ("$ fileName . cache ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inputStream Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput StreamReader Ġ= ĠInputStreamReader ( inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffered Reader Ġ= ĠBufferedReader ( input StreamReader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreceive String Ġ= Ġbuffered Reader . readLine () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( receive String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( receive String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive String Ġ= Ġbuffered Reader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite String ( context : ĠContext , ĠfileName : ĠString , Ġjson : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMy AsyncTask ( context ). execute ( fileName , Ġjson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMy AsyncTask Ġinternal Ġconstructor ( context : ĠContext ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Task < String , ĠVoid , ĠVoid >() Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext : ĠWeak Reference < Context > Ġ= ĠWeak Reference ( context ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠString ): ĠVoid ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputStream Writer Ġ= ĠOutputStream Writer ( context . get ()?. open File Output ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . get CacheKey ("${ params [ 0 ] }. cache "), ĠMODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream Writer . write ( params [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream Writer . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }