package Ġuk . gov . hm rc . domain . commands Ċ Ċ import Ġretrofit 2 . Response Ċ import Ġuk . gov . hm rc . domain . dto . Post Dto Ċ import Ġuk . gov . hm rc . domain . models . Post Ċ import Ġuk . gov . hm rc . domain . repositories . Posts Repository Ċ import Ġuk . gov . hm rc . domain . services . Post Service Ċ import Ġjava . io . IOException Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPosts Command Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġpost Service : ĠPost Service , ĊĠĠĠ Ġprivate Ġval Ġposts Repository : ĠPosts Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġsealed Ġclass ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠSuccess Ġ: ĠResult () ĊĠĠĠĠĠĠĠ Ġobject ĠService Error Ġ: ĠResult () ĊĠĠĠĠĠĠĠ Ġobject ĠNetwork Error Ġ: ĠResult () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġexecute (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġpost Service . posts () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Service Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io Exception : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Network Error ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Success Response ( response : ĠResponse < List < Post Dto >> ): ĠResult . Success Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠ Ġbody ?. let Ġ{ dto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= Ġdto . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost ( it . id , Ġit . userId , Ġit . title , Ġit . body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts Repository . save ( posts ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . Success ĊĠĠĠ Ġ} Ċ } Ċ