package Ġno . tom lin . api . media Ċ Ċ import Ġno . tom lin . api . config . Api Properties Ċ import Ġno . tom lin . api . http . Http Fetcher Ċ import Ġno . tom lin . api . http . Http Fetcher . Companion . fetcher Ċ import Ġno . tom lin . api . http . Http Fetcher . Companion . read Body Ċ import Ġno . tom lin . api . http . Http Fetcher . Companion . use Body Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . io . File Ċ import Ġjavax . annotation . Post Construct Ċ Ċ @ Service Ċ class ĠT mdb Service Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproperties : ĠApi Properties ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfetch er : ĠHttp Fetcher ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġposter Fetcher : ĠHttp Fetcher ĊĊĠĠĠ Ġ@ Post Construct ĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch er Ġ= Ġfetch er ( properties . t mdb . url ) ĊĠĠĠĠĠĠĠ Ġposter Fetcher Ġ= Ġfetch er ( properties . t mdb . poster Url ) ĊĊĠĠĠĠĠĠĠ ĠFile ( properties . cdn . poster ). mkdir s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Media ( path : ĠString , Ġpage : ĠInt ?): ĠString Ġ= Ġfetch Media ( path , Ġmap Of (" page " Ġto Ġ( page Ġ?: Ġ 1 ). toString ())) ĊĊĠĠĠ Ġfun Ġfetch Media ( path : ĠString , Ġquery : ĠString ): ĠString Ġ= Ġfetch Media ( path , Ġmap Of (" query " Ġto Ġquery )) ĊĊĠĠĠ Ġfun Ġfetch Media ( path : ĠString , Ġparams : ĠMap < String , ĠString > Ġ= Ġmap Of ()): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġfetch er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Json ( path , Ġmap Of ( API _ KEY Ġto Ġproperties . t mdb . key ). plus ( params )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Body () ĊĊĠĠĠ Ġfun Ġstore Post er ( path : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposter Fetcher . get ( path ). use Body Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( properties . cdn . poster Ġ+ Ġpath ). write Bytes ( it . read All Bytes ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAPI _ KEY Ġ= Ġ" api _ key " ĊĠĠĠ Ġ} Ċ }