package Ġcom . young . net . callback Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Message Ċ import Ġcom . young . net . callback . IC allback Ċ import Ġcom . young . net . Net Init Ċ import Ġcom . young . net . exception . ApiException Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . lang . reflect . Type Ċ Ċ /** Ċ Ġ* Ġ@ author : Ġ ĠYo ung Ċ Ġ* Ġ. Ċ Ġ* Ġ@ email : ĠĠĠ 1 1 0 4 0 9 0 8 7 2 @ qq . com Ċ Ġ* Ġ. Ċ Ġ* Ġ@ date Ġ: ĠĠĠ 2 0 2 1 / 8 / 2 6 Ġ 1 1 : 2 4 Ġ åĳ¨ åĽĽ Ċ Ġ* Ġ ãĢĢãĢĢ Ġ ãģ¸ ãĢĢãĢĢãĢĢãĢĢ ãĢĢ ï¼ ı | Ċ ãĢĢ ãĢĢ / ï¼ ¼ 7 ãĢĢ ãĢĢ âĪ ł ï¼ ¿ / Ċ ãĢĢ Ġ/ ãĢĢ âĶĤ ãĢĢãĢĢ Ġ ï¼ ı ãĢĢ ï¼ ı Ċ ãĢĢ âĶĤ ãĢĢ Z Ġ ï¼ ¿ , ï¼ ľ ãĢĢ ï¼ ı ãĢĢãĢĢ Ġ/ ` ãĥ ½ Ċ ãĢĢ âĶĤ ãĢĢãĢĢãĢĢãĢĢ ãĢĢ ãĥ ½ ãĢĢãĢĢ Ġ/ ãĢĢ ãĢĢ ãĢ ī Ċ ãĢĢ ĠY ãĢĢãĢĢãĢĢãĢĢ ãĢĢ ` ãĢĢ Ġ/ ãĢĢ ãĢĢ / Ċ ãĢĢ ï½ ² âĹ ı ãĢĢ ï½ ¤ ãĢĢ âĹ ı ãĢĢ ãĢĢ â Ĭ Ĥ â Ĭ ĥ ãĢ Ī ãĢĢ ãĢĢ / Ċ ãĢĢ () ãĢĢ Ġ ãģ¸ ãĢĢãĢĢ ãĢĢ ãĢĢ | ãĢĢ ï¼ ¼ ãĢ Ī Ċ ãĢĢ ãĢĢ > ï½ ° Ġ ï½ ¤ _ ãĢĢ ĠãĤ £ ãĢĢ ĠâĶĤ Ġ ï¼ ı ï¼ ı Ċ ãĢĢ Ġ/ Ġ ãģ¸ ãĢĢãĢĢ Ġ/ ãĢĢ ï ¾ ī ï¼ ľ | Ġ ï¼ ¼ ï¼ ¼ Ċ ãĢĢ Ġãĥ ½ _ ï ¾ ī ãĢĢ ãĢĢ (_ ï¼ ı ãĢĢ ĠâĶĤ ï¼ ı ï¼ ı Ċ ãĢĢãĢĢ 7 ãĢĢãĢĢãĢĢãĢĢ ãĢĢãĢĢ ãĢĢ | ï¼ ı Ċ ãĢĢ ãĢĢ ï¼ ŀ âĢķ r ï¿ £ ï¿ £ ` ï½ ° âĢķ ï¼ ¿ ĊĊ Ġ* Ġ@ description : ĠRet rofit ĠçļĦ å¼ĤæŃ¥ è¯·æ±Ĥ åĽŀè°ĥ Ċ Ġ*/ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠRet rofit Callback < T >( ĊĠĠĠ Ġprivate Ġval Ġcallback : ĠI Callback < T >, Ċ // ĠĠĠ Ġprivate Ġval Ġresult Type : ĠClass < T > ĊĠĠĠ Ġprivate Ġval Ġresult Type : ĠType , ĊĠĠĠ Ġ// Ġèİ·åıĸ ĠCall <?> Ġ å¯¹è±¡çļĦ åĽŀè°ĥ ĊĠĠĠ Ġprivate Ġval Ġcall Callback : ĠI Get Call ? Ċ ) Ġ: ĠCallback < String > Ġ{ ĊĠĠĠ Ġ// Ġæ ¶ Ī æģ¯ ç±»åŀĭ Ġ- Ġ æĪĲåĬŁ ĊĠĠĠ Ġprivate Ġval ĠMESSAGE _ TYPE _ SUCCESS Ġ= Ġ 0 x 1 0 ĊĊĠĠĠ Ġ// Ġæ ¶ Ī æģ¯ ç±»åŀĭ Ġ- Ġ å¤±è´¥ ĊĠĠĠ Ġprivate Ġval ĠMESSAGE _ TYPE _ FAILURE Ġ= Ġ 0 x 1 1 ĊĊĠĠĠ Ġprivate Ġval Ġm Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper (), Ġobject Ġ: ĠHandler . Callback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMESSAGE _ TYPE _ SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ( m Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMESSAGE _ TYPE _ FAILURE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ( m ApiException !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm ApiException : ĠApiException ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Result : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < String >, Ġresponse : ĠResponse < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Callback ?. on Get ( call ) ĊĠĠĠĠĠĠĠ Ġm ApiException Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Result Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Str Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body Str Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Result Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ SUCCESS ). send To Target () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Pass ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Result Ġ= Ġbody Str Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ SUCCESS ). send To Target () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Result Ġ= ĠNet Init . getData Parse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse Json < T >( body Str , Ġresult Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ SUCCESS ). send To Target () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ApiException Ġ= ĠApiException . handle Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ FAILURE ). send To Target () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġresponse . error Body ()?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message Ġ== Ġnull Ġ|| Ġmessage . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġresponse . message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ApiException Ġ= ĠApiException ( response . code (), Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ FAILURE ). send To Target () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < String >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm ApiException Ġ= ĠApiException . handle Exception ( t ) ĊĠĠĠĠĠĠĠ Ġm Handler . obtain Message ( MESSAGE _ TYPE _ FAILURE ). send To Target () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonSuccess ( data : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Success ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Failure ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Failure ( e ) ĊĠĠĠĠĠĠĠ ĠNet Init . common Error Callback ?. on Call ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĺ¯åĲ¦ çķ¥ è¿ĩ è§£æŀĲ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[@ return ] Ġtrue : Ġä¸į è§£æŀĲ Ġfalse : Ġ è§£æŀĲ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Pass (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Type Ġ== ĠString :: class . java ĊĠĠĠ Ġ} Ċ }