package Ġcom . im yy q . mv vm . http Ċ Ċ import Ġcom . im yy q . mv vm . base . I Base Response Ċ import Ġcom . im yy q . mv vm . base . Page I Base Response Ċ import Ġcom . im yy q . mv vm . utils . Log Util Ċ import Ġretrofit 2 . HttpException Ċ Ċ object ĠHttp Handler Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ è¯·æ±Ĥ ç»ĵæŀľ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ entity ] Ġ å®ŀä½ĵ ĊĠĠĠĠ Ġ* Ġ[ on Success ] Ġ çĬ¶æĢģ çłģ å¯¹ äºĨ å°± åĽŀè°ĥ ĊĠĠĠĠ Ġ* Ġ[ on Result ] Ġ çĬ¶æĢģ çłģ å¯¹ äºĨ ï¼Į ä¸Ķ å®ŀä½ĵ ä¸įæĺ¯ Ġnull Ġ æīį åĽŀè°ĥ ĊĠĠĠĠ Ġ* Ġ[ on Failed ] Ġæľī éĶĻè¯¯ åıĳçĶŁ ï¼Į åı¯èĥ½ æĺ¯ æľįåĬ¡ ç«¯ éĶĻè¯¯ ï¼Į åı¯èĥ½ æĺ¯ æķ°æį® éĶĻè¯¯ ï¼Į è¯¦ è§ģ Ġcode Ġ éĶĻè¯¯ çłģ åĴĮ Ġmsg Ġ éĶĻè¯¯ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġhandle Result ( ĊĠĠĠĠĠĠĠ Ġentity : ĠI Base Response < T ?> ?, ĊĠĠĠĠĠĠĠ ĠonSuccess : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġon Result : Ġ(( t : ĠT ) Ġ-> ĠUnit ), ĊĠĠĠĠĠĠĠ Ġon Failed : Ġ(( code : ĠInt , Ġmsg : ĠString ?) Ġ-> ĠUnit ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĺ² æŃ¢ å®ŀä½ĵ ä¸º Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( entity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed . invoke ( entity Nullable , Ġmsg Entity Nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġentity . code () ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġentity . msg () ĊĠĠĠĠĠĠĠ Ġ// Ġ éĺ² æŃ¢ çĬ¶æĢģ çłģ ä¸º Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed . invoke ( entity Code Nullable , Ġmsg Entity Code Nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġè¯·æ±Ĥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠ Ġif Ġ( entity . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĽŀè°ĥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å®ŀä½ĵ ä¸į ä¸º Ġnull Ġ æīį æľī ä»· åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity . data ()?. let Ġ{ Ġon Result . invoke ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¤±è´¥ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed ?. invoke ( code , Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĨ é¡µ è¯·æ±Ĥ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġhandle Page Result ( ĊĠĠĠĠĠĠĠ Ġentity : ĠPage I Base Response < T ?> ?, ĊĠĠĠĠĠĠĠ ĠonSuccess : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġon Result : Ġ(( t : ĠMutable List < T ? >, Ġtotal : ĠInt , Ġindex : ĠInt , Ġpages : ĠInt ) Ġ-> ĠUnit ), ĊĠĠĠĠĠĠĠ Ġon Failed : Ġ(( code : ĠInt , Ġmsg : ĠString ?) Ġ-> ĠUnit ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ éĺ² æŃ¢ å®ŀä½ĵ ä¸º Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( entity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed . invoke ( entity Nullable , Ġmsg Entity Nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġentity . code () ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġentity . msg () ĊĠĠĠĠĠĠĠ Ġ// Ġ éĺ² æŃ¢ çĬ¶æĢģ çłģ ä¸º Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed . invoke ( entity Code Nullable , Ġmsg Entity Code Nullable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġè¯·æ±Ĥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠ Ġif Ġ( entity . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĽŀè°ĥ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å®ŀä½ĵ ä¸į ä¸º Ġnull Ġ æīį æľī ä»· åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity . data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġon Result . invoke ( it , Ġentity . total (), Ġentity . index (), Ġentity . pages ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¤±è´¥ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed . invoke ( code , Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ å¼Ĥå¸¸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Exception ( ĊĠĠĠĠĠĠĠ Ġe : ĠException , ĊĠĠĠĠĠĠĠ Ġon Failed : Ġ( code : ĠInt , Ġmsg : ĠString ?) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Log Util . is Log ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( e Ġis ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed ( e . code (), Ġe . message ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= ĠLog Util . get StackTrace String ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot HttpException , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ msg Not HttpException , Ġ åħ·ä½ĵ éĶĻè¯¯ æĺ¯ \ n ${ if Ġ( log . isEmpty ()) Ġe . message Ġelse Ġlog }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }