package Ġcom . technical ass ig ments . mo view app . data . repository Ċ Ċ import Ġcom . technical ass ig ments . mo view app . Build Config Ċ import Ġcom . technical ass ig ments . mo view app . data . api . ApiService Ċ import Ġcom . technical ass ig ments . mo view app . data . model . Video Result Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . Mutable Shared Flow Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . io . IOException ĊĊ Ċ private Ġconst Ġval ĠLANGUAGE Ġ= Ġ" en - US " Ċ class ĠVideo Repository ( private Ġval Ġservice : ĠApi Service ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġvideo Result Ġ= ĠMutable Shared Flow < Video Result >( replay Ġ= Ġ 1 ) ĊĠĠĠ Ġprivate Ġvar Ġis Request InProgress Ġ= Ġfalse ĊĊĠĠĠ Ġsuspend Ġfun Ġget Movies Video ( movie _ id : ĠInt ): ĠFlow < Video Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest And SaveData ( movie _ id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġvideo Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġrequest And SaveData ( movie _ id : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġis Request InProgress Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġvar Ġsuccessful Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġservice . get Movie Videos ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie _ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . MY _ API _ KEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLANGUAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideos Ġ= Ġresponse . results Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Result . emit ( Video Result . Success ( videos )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccessful Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Result . emit ( Video Result . Error ( e )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Result . emit ( Video Result . Error ( e )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuccessful ĊĠĠĠ Ġ} Ċ Ċ }