package Ġcom . y ay las . dog ce o . data . network Ċ Ċ import Ġcom . google . gson .* Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . y ay las . dog ce o . data . network . models . ApiResponse Ċ import Ġcom . y ay las . dog ce o . data . network . models . ApiResponse DTO Ċ import Ġjava . lang . Class CastException Ċ import Ġjava . lang . reflect . Type ĊĊ Ċ class ĠApiResponse Deserializer Ġ: ĠJson Deserializer < ApiResponse > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( ĊĠĠĠĠĠĠĠ Ġjson : ĠJson Element ?, ĊĠĠĠĠĠĠĠ ĠtypeOf T : ĠType ?, ĊĠĠĠĠĠĠĠ Ġcontext : ĠJson Deserialization Context ? ĊĠĠĠ Ġ): ĠApiResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠApiResponse ( data Ġ= Ġempty List (), Ġerror Ġ= Ġnull , Ġb reed Ġ= Ġnull , Ġparent B reed Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( json Ġ== Ġnull Ġ|| Ġjson Ġis ĠJson Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . error Ġ= Ġ" Can 't Ġfind Ġthe Ġresponse !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse DTO Ġ= ĠGson (). fromJson ( json , ĠApiResponse DTO :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response DTO . status Ġ!= ĠSUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . error Ġ= Ġresponse DTO . message . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . data Ġ= Ġresponse DTO . message Ġas ĠList < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . error Ġ= Ġ" Response Ġis Ġcorrupted !" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSUCCESS Ġ= Ġ" success " ĊĠĠĠ Ġ} Ċ }