package Ġde . tu h rig . fetch async data from api . infrastructure . typ icode Ċ Ċ import Ġde . tu h rig . fetch async data from api . domain . Post Ċ import Ġde . tu h rig . fetch async data from api . domain . User Ċ import Ġde . tu h rig . fetch async data from api . domain . User Api Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . core . Parameterized Type Reference Ċ import Ġorg . springframework . http . HttpMethod . GET Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . web . client . HttpClient ErrorException Ċ import Ġorg . springframework . web . client . Rest Template Ċ Ċ @ Service Ċ class ĠTyp icode RestClient ( ĊĠĠĠ Ġprivate Ġval Ġrest Template : ĠRest Template , ĊĠĠĠ Ġ@ Value ("\ ${ typ icode . base - url }") Ġprivate Ġval ĠbaseUrl : ĠString , Ċ ) Ġ: ĠUser Api Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind User ById ( id : ĠString ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest Template . get For Object ("$ baseUrl / users /$ id ", ĠTyp icode User :: class . java )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġit . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġit . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttpClient ErrorException . NotFound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Post sBy UserId ( userId : ĠString ): ĠList < Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposts Ġ= Ġrest Template . exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ baseUrl / posts ? userId =$ userId ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠParameter ized Type Reference < List < Typ icode Post >>() Ġ{} ĊĠĠĠĠĠĠĠ Ġ). body Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġreturn Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġit . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġit . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġit . body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ