package Ġnet . bing gl . my d ms . features . file store . api Ċ Ċ import Ġnet . bing gl . my d ms . features . file store . File Service Ċ import Ġnet . bing gl . my d ms . shared . api . Base Resource Ċ import Ġnet . bing gl . my d ms . shared . models . Role Ċ import Ġorg . apache . commons . codec . binary . Base 6 4 Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . net . URL Decoder Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ @ RestController Ċ @ RequestMapping ("/ api / v 1 / file ") Ċ class ĠFile Controller (@ Autowired Ġprivate Ġval Ġfile Service : ĠFile Service ): ĠBase Resource () Ġ{ ĊĊĠĠĠ Ġ@ GetMapping ĊĠĠĠ Ġfun ĠgetFile (@ RequestParam (" path ") Ġpath : ĠString ): ĠResponseEntity < Any > Ġ{ ĊĊĠĠĠĠĠĠĠ ĠLOG . debug (" Supp lied Ġpath : Ġ$ path ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġdecoded Path : ĠString ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecoded Path Payload Ġ= ĠBase 6 4 . decode Base 6 4 ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoded Path Ġ= ĠString ( decoded Path Payload , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecoded Path Ġ= ĠURL Decoder . decode ( decoded Path , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . debug (" Decoded Ġpath : Ġ$ decoded Path ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Could Ġnot Ġparse / decode Ġthe Ġsupplied Ġpath : Ġ$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ). body (" Invalid Ġpath Ġsup pp lied !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġthis . file Service . getFile ( decoded Path ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackend File Ġ= Ġfile . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ok () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. content Length ( backend File . payload . size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . parse MediaType ( backend File . mime Type )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" content - dis position ", Ġ" inline ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// . header (" content - dis position ", Ġ" attachment ; Ġfilename Ġ= Ġ" Ġ+ Ġbackend File . fileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( backend File . payload . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body (" The Ġgiven Ġpath Ġis Ġnot Ġavailable .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( File Controller :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ