@ file : Suppress (" UN CHECK ED _ CAST ", Ġ" Member Visibility Can Be Private ") Ċ Ċ package Ġcom . dr ake . net . sample . converter Ċ Ċ import Ġcom . dr ake . net . Net Config Ċ import Ġcom . dr ake . net . convert . Net Converter Ċ import Ġcom . dr ake . net . exception . Convert Exception Ċ import Ġcom . dr ake . net . exception . Request Params Exception Ċ import Ġcom . dr ake . net . exception . Response Exception Ċ import Ġcom . dr ake . net . exception . Server Response Exception Ċ import Ġcom . dr ake . net . request . k Type Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . serializer Ċ import Ġokhttp 3 . Response Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġjava . lang . reflect . Type Ċ import Ġkotlin . reflect . K Type Ċ Ċ class ĠSerialization Converter ( ĊĠĠĠĠĠĠĠ Ġval Ġsuccess : ĠString Ġ= Ġ" 0 ", ĊĠĠĠĠĠĠĠ Ġval Ġcode : ĠString Ġ= Ġ" code ", ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠString Ġ= Ġ" msg " Ċ ) Ġ: ĠNet Converter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġjson Decoder Ġ= ĠJson Ġ{ ĊĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue Ġ// ĠJSON åĴĮ æķ°æį® æ¨¡åŀĭ åŃĹæ®µ åı¯ä»¥ ä¸į åĮ¹éħį ĊĠĠĠĠĠĠĠ Ġco erce Input Values Ġ= Ġtrue Ġ// Ġå¦Ĥæŀľ JSON åŃĹæ®µ æĺ¯ Null åĪĻ ä½¿çĶ¨ é»ĺè®¤ åĢ¼ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< R > Ġon Convert ( suc ceed : ĠType , Ġresponse : ĠResponse ): ĠR ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNet Converter . on Convert < R >( suc ceed , Ġresponse ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠConvert Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġresponse . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġin Ġ 2 0 0 .. 2 9 9 Ġ-> Ġ{ Ġ// Ġè¯·æ±Ĥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody String Ġ= Ġresponse . body ?. string () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Type Ġ= Ġresponse . request . k Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠConvert Exception ( response , Ġ" Request Ġdoes Ġnot Ġcontain ĠK Type ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( body String ) Ġ// Ġèİ·åıĸ JSON ä¸Ń åĲİ ç«¯ å®ļä¹ī çļĦ éĶĻè¯¯ çłģ åĴĮ éĶĻè¯¯ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json . getString ( this . code ) Ġ== Ġsuccess ) Ġ{ Ġ// Ġå¯¹ æ¯Ķ åĲİ ç«¯ èĩªå®ļä¹ī éĶĻè¯¯ çłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody String . parse Body < R >( k Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġ éĶĻè¯¯ çłģ åĮ¹éħį å¤±è´¥ , Ġ å¼Ģå§ĭ åĨĻåħ¥ éĶĻè¯¯ å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġjson . opt String ( message , ĠNet Config . app . getString ( com . dr ake . net . R . string . no _ error _ message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠResponse Exception ( response , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ Ġ// Ġ åĽºå®ļ æł¼å¼ı JSON åĪĨæŀĲ å¤±è´¥ çĽ´æİ¥ è§£æŀĲ JSON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody String . parse Body < R >( k Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġin Ġ 4 0 0 .. 4 9 9 Ġ-> Ġthrow ĠRequest Params Exception ( response , Ġcode . toString ()) Ġ// Ġè¯·æ±Ĥ åıĤæķ° éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ>= Ġ 5 0 0 Ġ-> Ġthrow ĠServer Response Exception ( response , Ġcode . toString ()) Ġ// Ġ æľįåĬ¡åĻ¨ å¼Ĥå¸¸ éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠConvert Exception ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< R > ĠString . parse Body ( suc ceed : ĠK Type ): ĠR ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjson Decoder . decode FromString ( Json . serializers Module . serializer ( suc ceed ), Ġthis ) Ġas ĠR ĊĠĠĠ Ġ} Ċ }