package Ġcom . va ib hav dh unde . app . hack english . data . source . remote Ċ Ċ import Ġcom . va ib hav dh unde . app . hack english . api . Hack English Api Ċ import Ġcom . va ib hav dh unde . app . hack english . api . Safe ApiRequest Ċ import Ġcom . va ib hav dh unde . app . hack english . data . Result Ċ import Ġcom . va ib hav dh unde . app . hack english . data . Result . Error Ċ import Ġcom . va ib hav dh unde . app . hack english . data . Result . Success Ċ import Ġcom . va ib hav dh unde . app . hack english . data . Users DataSource Ċ import Ġcom . va ib hav dh unde . app . hack english . model . User Ċ import Ġcom . va ib hav dh unde . app . hack english . util . ApiException Ċ import Ġcom . va ib hav dh unde . app . hack english . util . Network Exception Ċ Ċ class ĠUsers Remote DataSource ( ĊĠĠĠ Ġprivate Ġval Ġapi : ĠHack English Api Ċ ) Ġ: ĠUsers DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġregister User ( name : ĠString , Ġemail : ĠString , Ġpassword : ĠString ): ĠResult < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠSafe ApiRequest . api Request Ġ{ Ġapi . register User ( name , Ġemail , Ġpassword ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( response . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess ( response . user !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e . message !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e . message !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlogin User ( email : ĠString , Ġpassword : ĠString ): ĠResult < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠSafe ApiRequest . api Request Ġ{ Ġapi . login User ( email , Ġpassword ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError ( response . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess ( response . user !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNetwork Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e . message !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( e . message !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }