// ĠCreated Ġby Ġ è¶ħ æĤ Ł ç©º Ġon Ġ 2 0 2 1 / 4 / 1 0 . Ċ Ċ package Ġorg . cw k . work . example Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . decode FromJson Element Ċ import Ġkotlinx . serialization . json . jsonObject Ċ import Ġokhttp 3 . MediaType Ċ import Ġorg . cw k . work . HttpMethod Ċ import Ġorg . cw k . work . JSON Ċ import Ġorg . cw k . work . Work Data Ċ Ċ /** Ċ Ġ* ĠæĮĩå®ļ å»¶ è¿ Ł åĵįåºĶ ä»»åĬ¡ Ċ Ġ* Ċ Ġ* Ġ@ property ĠtestData ĠéľĢè¦ģ åıĳéĢģ çļĦ æµĭè¯ķ æķ°æį® Ċ Ġ* Ġ@ property Ġdelay Ġ å»¶ è¿ Ł æĹ¶éĹ´ ï¼Į åįķä½į ç§Ĵ ï¼Į æľĢå¤§ 1 0 Ċ Ġ*/ Ċ class ĠDelay Work ( private Ġval ĠtestData : ĠTest Data , Ġprivate Ġval Ġdelay : ĠInt ) Ġ: ĊĠĠĠ ĠBase Json Element Work < String >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġurl () Ġ= Ġ"/ delay /$ delay " ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfill Params () Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" name " Ġto ĠtestData . name , ĊĠĠĠĠĠĠĠ Ġ" age " Ġto ĠtestData . age , ĊĠĠĠ Ġ) Ġ// Ġ äº¤ ç»Ļ æ¡Ĩæŀ¶ èĩªåĬ¨ è£ħ éħį ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Request Successful ( ĊĠĠĠĠĠĠĠ Ġdata : ĠWork Data < String >, ĊĠĠĠĠĠĠĠ Ġresponse : ĠJson Element ĊĠĠĠ Ġ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġresponse . jsonObject [" args "] ?. toString () Ċ } Ċ Ċ /** Ċ Ġ* Ġæ¨¡ æĭŁ çĶ¨æĪ· çĻ»å½ķ ä»»åĬ¡ Ċ Ġ* Ċ Ġ* Ġ@ property Ġuser Ġæ¨¡ æĭŁ çĶ¨æĪ· æķ°æį® åıĳ ç»Ļ æľįåĬ¡åĻ¨ ï¼Į åĲĮæĹ¶ æİ¥åıĹ æŃ¤ çĶ¨æĪ· æķ°æį® åĵįåºĶ ä½ľä¸º æĶ¶ åĪ° æľįåĬ¡åĻ¨ çĻ»å½ķ çĶ¨æĪ· çļĦ æ¨¡ æĭŁ Ċ Ġ*/ Ċ class ĠUser Login Work ( private Ġval Ġuser : ĠUser ) Ġ: ĠBase Bin Work < User >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġurl () Ġ= Ġ"/ post " ĊĊĠĠĠ Ġoverride Ġfun Ġhttp Method () Ġ= ĠHttpMethod . POST ĊĊĠĠĠ Ġoverride Ġfun ĠcontentType () Ġ= ĠMediaType . JSON ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfill Params () Ġ= ĠJson . encode ToString ( user ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Request Successful ( data : ĠWork Data < User >, Ġresponse : ĠBin ): ĠUser ? Ġ= ĊĠĠĠĠĠĠĠ Ġresponse . json ?. let Ġ{ ĠJson . decode FromJson Element ( it ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġæ¨¡ æĭŁ çĶ¨æĪ· æ³¨åĨĮ ä»»åĬ¡ Ċ Ġ* Ċ Ġ* ĠæŃ¤ å¤Ħ ä½¿çĶ¨ json åºıåĪĹåĮĸ åºĵ ä¸İ Work éħį åĲĪ ä½¿çĶ¨ Ċ Ġ* Ċ Ġ* Ġ@ property ĠaccountId Ġæ¨¡ æĭŁ çĶ¨æĪ· id Ċ Ġ* Ġ@ property Ġnickname Ġæ¨¡ æĭŁ çĶ¨æĪ· æĺ µ ç§° Ċ Ġ*/ Ċ @ Serializable Ċ class ĠUser Register Work ( private Ġval ĠaccountId : ĠString , Ġprivate Ġval Ġnickname : ĠString ) Ġ: ĊĠĠĠ ĠBase Bin Work < User >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġurl () Ġ= Ġ"/ post " ĊĊĠĠĠ Ġoverride Ġfun Ġhttp Method () Ġ= ĠHttpMethod . POST ĊĊĠĠĠ Ġoverride Ġfun ĠcontentType () Ġ= ĠMediaType . JSON ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfill Params () Ġ= ĠJson . encode ToString ( this ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Request Successful ( data : ĠWork Data < User >, Ġresponse : ĠBin ): ĠUser ? Ġ= ĊĠĠĠĠĠĠĠ Ġresponse . json ?. let Ġ{ ĠJson . decode FromJson Element ( it ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġåı¯ ç¼ĵåŃĺ ä»»åĬ¡ Ċ Ġ* Ċ Ġ* Ġ@ property ĠtestData Ġæ¨¡ æĭŁ æķ°æį® Ċ Ġ*/ Ċ class ĠCache able Work ( private Ġval Ġid : ĠInt , Ġprivate Ġval ĠtestData : ĠTest Data ) Ġ: ĠBase Bin Work < TestData >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åģĩ è®¾ è¿Ļæĺ¯ æľ¬åľ° ç¼ĵåŃĺ æķ°æį®åºĵ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcaches Ġ= Ġmutable Map Of < Int , ĠTest Data ?> () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġurl () Ġ= Ġ"/ post " ĊĊĠĠĠ Ġoverride Ġfun Ġhttp Method () Ġ= ĠHttpMethod . POST ĊĊĠĠĠ Ġoverride Ġfun ĠcontentType () Ġ= ĠMediaType . JSON ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfill Params () Ġ= ĠJson . encode ToString ( testData ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Request Successful ( data : ĠWork Data < TestData >, Ġresponse : ĠBin ): ĠTest Data ? Ġ= ĊĠĠĠĠĠĠĠ Ġresponse . json ?. let Ġ{ ĠJson . decode FromJson Element ( it ) Ġ} ĊĊĠĠĠ Ġ// Ġ åģĩ è®¾ è¿ĻéĩĮ æĺ¯ æł¹æį® åıĤæķ° è¯»åıĸ ç¼ĵåŃĺ ï¼Į å¦Ĥæŀľ ç¼ĵåŃĺ åŃĺåľ¨ åĪĻ çĽ´æİ¥ è¿ĶåĽŀ ç¼ĵåŃĺ æķ°æį® ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Started ( data : ĠWork Data < TestData >): ĠTest Data ? Ġ= Ġcaches [ id ] ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġon Successful ( data : ĠWork Data < TestData >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ç½ĳç»ľ è¯·æ±Ĥ æĪĲåĬŁ ä¼ļ åĪ° è¾¾ è¿ĻéĩĮ ï¼Į ç»ĵæŀľ æķ°æį® ä¸Ģå®ļ æĿ¥ èĩª äºİ æľįåĬ¡åĻ¨ ĊĠĠĠĠĠĠĠ Ġcaches [ id ] Ġ= Ġdata . result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon From Cache Message ( data : ĠWork Data < TestData >): ĠString ? Ġ= Ġ" id :$ id Ġ åĳ½ ä¸Ń ç¼ĵåŃĺ " Ċ }