package Ġcom . cl int . t mdb . repositories Ċ Ċ import Ġcom . cl int . t mdb . data . local . Movie List Ċ import Ġcom . cl int . t mdb . data . local . T mdb Dao Ċ import Ġcom . cl int . t mdb . data . remote . T mdb Api Ċ import Ġcom . cl int . t mdb . data . remote . responses . movie ListResponse . Movie ListResponse Ċ import Ġcom . cl int . t mdb . data . remote . responses . movie Responses . Movie Response Ċ import Ġcom . cl int . t mdb . others . INTER NET _ ERROR _ DESCRIPTION Ċ import Ġcom . cl int . t mdb . others . Resource Ċ import Ġcom . cl int . t mdb . others . UNKNOWN _ ERROR _ OCC UR RED _ DESCRIPTION Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠDefault T mdb Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġt mdb Dao : ĠT mdb Dao , ĊĠĠĠ Ġprivate Ġval Ġt mdb Api : ĠT mdb Api Ċ ) Ġ: ĠT mdb Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Top R ated Movies By Movie Id ( movie Id : ĠInt ): ĠMovie List Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . get Top R ated Movies By Movie Id ( movie Id Ġ= Ġmovie Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Top R ated Movies By Release Date In Descending Order (): ĠList < Movie List > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . get Top R ated Movies By Release Date In Descending Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Top R ated Movies By Release Date In Ascending Order (): ĠList < Movie List > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . get Top R ated Movies By Release Date In Ascending Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Top R ated Movies By Rating In Descending Order (): ĠList < Movie List > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . get Top R ated Movies By Rating In Descending Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Top R ated Movies By Rating In Ascending Order (): ĠList < Movie List > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . get Top R ated Movies By Rating In Ascending Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Movie ( ĊĠĠĠĠĠĠĠ Ġstatus : ĠString ?, ĊĠĠĠĠĠĠĠ Ġback drop Path : ĠString ?, ĊĠĠĠĠĠĠĠ Ġupdated Movie Details : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġgen res : ĠString ?, ĊĠĠĠĠĠĠĠ Ġmovie Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġrun Time : ĠInt ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġt mdb Dao . update Movie ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġstatus , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġback drop Path Ġ= Ġback drop Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Movie Details Ġ= Ġupdated Movie Details , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen res Ġ= Ġgen res , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġmovie Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Time Ġ= Ġrun Time ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Movie Details ( apiKey : ĠString , Ġmovie Id : ĠInt ): ĠResource < Movie Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġt mdb Api . get Movie Details ( apiKey Ġ= ĠapiKey , Ġmovie Id Ġ= Ġmovie Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let ĠResource . success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠResource . error ( UNKNOWN _ ERROR _ OCC UR RED _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . error ( UNKNOWN _ ERROR _ OCC UR RED _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" get Movie Details Exception Ġ% s ", Ġe . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . error ( INTER NET _ ERROR _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Movie ( movie List : ĠMovie List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġt mdb Dao . insert Movie ( movie List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Top R ated Movie List ( ĊĠĠĠĠĠĠĠ ĠapiKey : ĠString , ĊĠĠĠĠĠĠĠ Ġpage : ĠString ĊĠĠĠ Ġ): ĠResource < Movie ListResponse > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġt mdb Api . get Top R ated Movie List ( apiKey Ġ= ĠapiKey , Ġpage Ġ= Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let ĠResource . success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠResource . error ( UNKNOWN _ ERROR _ OCC UR RED _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResource . error ( UNKNOWN _ ERROR _ OCC UR RED _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource . error ( INTER NET _ ERROR _ DESCRIPTION , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Top R ated Movies (): ĠList < Movie List > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġt mdb Dao . observe Top R ated Movies () ĊĠĠĠ Ġ} Ċ Ċ }