package Ġcom . example . data . datasource . network Ċ Ċ import Ġcom . example . Build Config Ċ import Ġcom . example . common . DEFAULT _ ERROR _ MESSAGE Ċ import Ġcom . example . common . get ErrorMessage Ċ import Ġcom . example . data . datasource . network . base . Base API Ċ import Ġcom . example . data . datasource . network . base . ResponseData Ċ import Ġcom . example . data . datasource . network . base . Result Data Ċ import Ġcom . example . data . datasource . network . jo ke . Ch uck Nor ris J ok esModule Ċ import Ġcom . example . data . datasource . network . jo ke . Ch uck Nor ris J okes Service Ċ import Ġcom . example . mapper . Mapper Ċ import Ġretrofit 2 . Call Ċ import Ġjava . lang . Exception Ċ Ċ private Ġconst Ġval ĠAPI _ ENDPOINT Ġ= Ġ" https :// api . ic n db . com / j okes /" Ċ Ċ class ĠNetwork DataSource Ġ: ĠBase API ( API _ ENDPOINT , Ġprint Logs Ġ= ĠBuild Config . DEBUG ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġch uck Nor ris J ok esModule () Ġ= ĊĠĠĠĠĠĠĠ ĠCh uck Nor ris J ok esModule ( rest Adapter . create ( Ch uck Nor ris J okes Service :: class . java )) Ċ } Ċ Ċ fun Ġ< T > ĠCall < T >. execute (): ĠResult Data < T > Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexecute () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult Data ( response . body (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult Data ( null , Ġresponse . error Body ()?. string () Ġ?: ĠDEFAULT _ ERROR _ MESSAGE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠResult Data ( null , Ġe . get ErrorMessage ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T , ĠR > ĠCall < ResponseData < T >> . execute ( mapper : ĠMapper < T , ĠR >): ĠResult Data < R > Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġexecute () ĊĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult Data ( response . body ()?. value ?. let Ġ{ Ġmapper . map ( it ) Ġ}, Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult Data ( null , Ġresponse . error Body ()?. string () Ġ?: ĠDEFAULT _ ERROR _ MESSAGE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠResult Data ( null , Ġe . get ErrorMessage ()) ĊĠĠĠ Ġ} Ċ }