package Ġcom . yu ai hen . w cd xg . net . converter Ċ Ċ import Ġcom . blank j . util code . util . Gson Utils Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Parser Ċ import Ġcom . google . gson . Type Adapter Ċ import Ġcom . yu ai hen . w cd xg . net . exception . My Exception Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Converter Ċ import Ġjava . io . IOException Ċ import Ġjava . io . String Reader Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠY u ai hen . Ċ Ġ* Ġon Ġ 2 0 1 9 / 7 / 8 Ċ Ġ* Ġ è§£æŀĲ æľįåĬ¡åĻ¨ è¿ĶåĽŀ çļĦ å¼Ĥå¸¸ Ċ Ġ* ĠéĢļè¿ĩ json ä¸ŃçļĦ code Ċ Ġ*/ Ċ class ĠResponse Body Converter < T >( private Ġval Ġgson : ĠGson , Ġprivate Ġval Ġadapter : ĠType Adapter < T >) Ġ: ĊĠĠĠ ĠConverter < ResponseBody , ĠT > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Api " ĊĊĠĠĠĠĠĠĠ Ġ// å®ļä¹ī åĲİåı° è¿ĶåĽŀ çļĦ å¼Ĥå¸¸ code ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSUCCESS Ġ= Ġ 0 Ġ// Ġ æĪĲåĬŁ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUN _ LOGIN Ġ= Ġ- 1 0 0 1 Ġ// æľª çĻ»å½ķ çļĦ éĶĻè¯¯ çłģ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFAILURE Ġ= Ġ- 1 Ġ// Ġ å¤±è´¥ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ 5 0 0 Ġ= Ġ" æľįåĬ¡åĻ¨ å¼Ģ å°ı å·® äºĨ ï¼Į è¯· æ£ĢæŁ¥ ç½ĳç»ľ è¿ŀæİ¥ åĲİ éĩį è¯ķ ~ " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ 4 0 4 Ġ= Ġ" éĵ¾æİ¥ åľ°åĿĢ ä¸įåŃĺåľ¨ ï¼Į è¯· éĩį è¯ķ ~ " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ OTHER Ġ= Ġ" ç½ĳç»ľ è¿ŀæİ¥ åĩº éĶĻ ï¼Į è¯· éĩį è¯ķ ~ " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġconvert ( value : ĠResponse Body ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġvalue . string () ĊĠĠĠĠĠĠĠ Ġvalue . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparse Ġ= ĠJson Parser (). parse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ æĺ¯åĲ¦ æľī error åŃĹæ®µ ä¸Ķ error åŃĹæ®µ ä¸į ä¸º 0 ï¼Į å¹¶ä¸Ķ æĭ¥ æľī reason åŃĹæ®µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parse . is JsonObject Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . as JsonObject . getAs Json Primitive (" errorCode "). as Int Ġ!= Ġ 0 Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse . as JsonObject . has (" error Msg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¼Ĥå¸¸ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġparse . as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Exception Ġ= ĠMy Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . getAs Json Primitive (" errorCode "). as Int , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . getAs Json Primitive (" error Msg "). asString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠæĬ Ľ åĩº å¼Ĥå¸¸ Ġ ç»Łä¸Ģ äº¤ çĶ± ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠBase ViewModel # getError Msg ( Throwable ) å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġmy Exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . read ( gson . new Json Reader ( String Reader ( response ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }