package Ġio . coroutines . cache . core Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Syntax Exception Ċ import Ġretrofit 2 . Response Ċ import Ġjava . io . String Reader Ċ import Ġjava . lang . reflect . Parameterized Type Ċ import Ġjava . lang . reflect . Type Ċ Ċ interface ĠJson Mapper Ġ{ ĊĠĠĠ Ġfun ĠtoJson ( src : ĠAny ): ĠString ĊĠĠĠ Ġfun Ġ< T > Ġfrom Json ( json : ĠString , ĠtypeOf T : ĠType ): ĠT ĊĠĠĠ Ġfun Ġ< T > Ġassert Valid Json ( result : ĠT ): ĠBoolean Ċ } Ċ Ċ class ĠGson Ret rofit Mapper Ġ: ĠJson Mapper Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoJson ( src : ĠAny ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġsrc Ġas ĠResponse < *> ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () !! ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). toJson ( body , Ġbody . java Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Json Syntax Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġfrom Json ( json : ĠString , Ġretrofit Response : ĠType ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠString Reader ( json ) ĊĠĠĠĠĠĠĠ Ġval Ġparameter ized Type Ġ= Ġretrofit Response Ġas ĠParameter ized Type ĊĠĠĠĠĠĠĠ Ġval Ġstored Type Ġ= Ġparameter ized Type . actual Type Arguments [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġstored Json Ġ= ĠGson (). fromJson ( reader , Ġstored Type ) Ġas ĠAny ĊĠĠĠĠĠĠĠ Ġreturn ĠResponse . success ( stored Json ) Ġas ĠT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġassert Valid Json ( result : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠResponse <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ