package Ġcom . study . u . network Ċ Ċ import Ġcom . study . u . Build Config Ċ import Ġcom . study . u . data . Asset Ċ import Ġcom . study . u . data . Product Ċ import Ġcom . study . u . data . request . Login Request Ċ import Ġcom . study . u . data . request . Modify Password Request Ċ import Ġcom . study . u . data . request . Withdraw Request Ċ import Ġcom . study . u . exception . API Exception Ċ import Ġcom . study . u . ext . decode Ċ import Ġcom . study . u . utilities . MM KV Constants Ċ import Ġcom . study . u . utilities . ZY _ SOURCE Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠHttp Repository Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæķ°æį® èĦ ± å£ ³ ä¸İ éĶĻè¯¯ é¢Ħ å¤ĦçĲĨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġpre Process Data ( response Body : ĠApiResponse < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( response Body . code Ġ== Ġ 0 Ġ&& Ġresponse Body . data Ġ!= Ġnull ) Ġresponse Body . data ĊĠĠĠĠĠĠĠ Ġelse Ġthrow ĠAPI Exception ( response Body . code , Ġresponse Body . msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ApiService (): ĠApi Service Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Build Config . BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( M oshi Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( provide Ok HttpClient ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( ApiService :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Ok HttpClient (): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Timeout ( 5 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Timeout ( 5 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Timeout (( 6 0 Ġ* Ġ 3 ), ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( provide Logging Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interceptor ( provide Header Interceptor ()) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Logging Interceptor (): ĠHttp Logging Interceptor Ġ= ĊĠĠĠĠĠĠĠ ĠHttp Logging Interceptor ( Http Logging Interceptor . Logger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i ( it ) ĊĠĠĠĠĠĠĠ Ġ}). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . level Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Header Interceptor (): ĠInter ceptor Ġ= ĊĠĠĠĠĠĠĠ ĠInter ceptor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠSystem . currentTimeMillis (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġdecode ( MM KV Constants . TOKEN , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġit . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Connection ", Ġ" close ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" timestamp ", Ġtimestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" token ", Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" app _ type ", ĠZ Y _ SOURCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĻ»å½ķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġuser Login ( ĊĠĠĠĠĠĠĠ Ġlogin Request : ĠLogin Request ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). user Login ( login Request ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æ³¨åĨĮ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġuser Register ( ĊĠĠĠĠĠĠĠ Ġlogin Request : ĠLogin Request ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). user Register ( login Request ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ å¯Ĩçłģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġuser Modify Password ( ĊĠĠĠĠĠĠĠ Ġmodify Password Request : ĠModify Password Request ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). user Modify Password ( modify Password Request ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åķĨåĵģ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġproduct List (): ĠList < Product >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). product List () ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸ĭ åįķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġorder Add ( productId : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). order Add ( productId ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ èµĦ äº§ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġasset Find (): ĠAsset Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). asset Find () ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæıĲ çİ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġasset Withdraw ( withdraw Request : ĠWith draw Request ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġget ApiService (). asset Withdraw ( withdraw Request ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpre Process Data ( response Body ) ĊĠĠĠ Ġ} Ċ }