package Ġcom . c act us . mar vel com ics . data . network Ċ Ċ import Ġcom . c act us . mar vel com ics . data . Operation Result Ċ import Ġretrofit 2 . Response ĊĊ Ċ abstract Ġclass ĠBase DataSource Ġ{ ĊĊĠĠĠ Ġprotected Ġsuspend Ġfun Ġ< T > Ġget Result ( call : Ġsuspend Ġ() Ġ-> ĠResponse < T >): ĠOperation Result Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġcall () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body Ġ!= Ġnull ) Ġreturn ĠOperation Result . Success ( body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror (" Ġ${ response . code ()} Ġ${ response . message () }") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror ( e . message Ġ?: Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġerror ( message : ĠString ): ĠOperation Result Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOperation Result . Error (" Network Ġcall Ġhas Ġfailed Ġfor Ġa Ġfollowing Ġreason : Ġ$ message ") ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ