package Ġorg . ts des . cards Ċ Ċ import Ġio . swagger . annotations . Api Ċ import Ġio . swagger . annotations . ApiOperation Ċ import Ġorg . springframework . http . Cache Control Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġorg . ts des . advanced . rest . dto . Wrapped Response Ċ import Ġorg . ts des . cards . dto . Collection Dto Ċ import Ġjava . net . URI Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Api ( value Ġ= Ġ"/ api / cards ", Ġdescription Ġ= Ġ" Operation Ġon Ġthe Ġcards Ġexisting Ġin Ġthe Ġgame ") Ċ @ RequestMapping ( path Ġ= Ġ["/ api / cards "]) Ċ @ RestController Ċ class ĠRest Api Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠL ATE ST Ġ= Ġ" v 1 _ 0 0 0 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ApiOperation (" Return Ġinfo Ġon Ġall Ġcards Ġin Ġthe Ġgame ") ĊĠĠĠ Ġ@ GetMapping ( ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġ["/ collection _$ LATE ST "], ĊĠĠĠĠĠĠĠ Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Latest (): ĠResponseEntity < Wrapped Response < Collection Dto >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠCard Collection . get () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Control ( Cache Control . max Age ( 3 6 5 , ĠTimeUnit . DAYS ). cache Public ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Wrapped Response ( 2 0 0 , Ġcollection ). validated ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ApiOperation (" Old - version Ġendpoints . ĠWill Ġautomatically Ġredirect Ġto Ġmost Ġrecent Ġversion ") ĊĠĠĠ Ġ@ GetMapping ( ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ collection _ v 0 _ 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ collection _ v 0 _ 0 0 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ collection _ v 0 _ 0 0 3 " ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget Old (): ĠResponseEntity < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( 3 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. location ( URI . create ("/ api / cards / collection _$ LATE ST ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ApiOperation (" Return Ġthe Ġimage Ġfor Ġthe Ġspecified Ġcard ") ĊĠĠĠ Ġ@ GetMapping ( ĊĠĠĠĠĠĠĠ Ġpath Ġ= Ġ["/ imgs /{ img Id } "], ĊĠĠĠĠĠĠĠ Ġproduces Ġ= Ġ[" image / svg + xml "] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun ĠgetImage (@ PathVariable (" img Id ") Ġimg Id : ĠString ): ĠResponseEntity < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimg Id . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend sWith ("- monster . svg ") Ġ|| Ġend sWith ("- cy clo ps . svg ") Ġ|| Ġend sWith ("- dragon . svg ") Ġ|| Ġend sWith ("- snake . svg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ"/ 1 2 3 6 1 0 6 - mon sters " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠResponseEntity . status ( 4 0 0 ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsvg Ġ= Ġjava Class . getResource ("$ folder / svg /$ img Id ") ?. read Text () Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Control ( Cache Control . max Age ( 3 6 5 , ĠTimeUnit . DAYS ). cache Public ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( svg ) ĊĠĠĠ Ġ} Ċ }