Ċ package Ġau . gov . api Ċ Ċ import Ġau . gov . api . config .* Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġorg . springframework . core . env . Environment Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjava . util .* Ċ import Ġk http . get Ċ import Ġk http . structures . authorization . Basic Authorization Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . text . DateFormat ĊĊĊ Ċ @ RestController Ċ class ĠAPI Controller Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmanager : ĠEvent Manager ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġenvironment : ĠEnvironment ĊĊĠĠĠ Ġprivate Ġfun Ġis Author ised To Save Service ( request : HttpServletRequest , Ġspace : String ): Boolean { ĊĠĠĠĠĠĠĠ Ġif ( environment . getActive Profiles (). contains (" prod ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠAuth URI Ġ= ĠConfig . get (" Auth URI ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttp :// www . ba eld ung . com / get - user - in - spring - security ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Ġ= Ġrequest . getHeader (" authorization ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw == null ) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi key Ġ= ĠString ( Base 6 4 . get Decoder (). decode ( raw . remove Prefix (" Basic Ġ" ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġapi key . split (": ")[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpass = Ġapi key . split (": ")[ 1 ] ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor isation Request Ġ= Ġget ( Auth URI Ġ+ Ġ" api / can Write ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams = map Of (" space " Ġto Ġspace ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth = Basic Authorization ( user , Ġpass ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( author isation Request . statusCode Ġ!= Ġ 2 0 0 ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġauthor isation Request . text Ġ== Ġ" true " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ api / new ") ĊĠĠĠ Ġfun Ġnew Event ( request : HttpServletRequest , Ġ@ RequestBody Ġevent : Event ): String { ĊĠĠĠĠĠĠĠ Ġif ( is Author ised To Save Service ( request , Ġ" api - gov - event - log ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . timestamp Ġ= ="") Ġevent . timestamp Ġ= ĠDate ( System . currentTimeMillis ()). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager . new Event ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠUn author ised To Create Event () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("/ api / list ") ĊĠĠĠ Ġfun Ġget Events ( request : HttpServletRequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse , ĠdefaultValue ="") ĠstartDate : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse , ĠdefaultValue ="") ĠendDate : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam Ġname : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse , ĠdefaultValue =" 1 ") Ġlimit : Int ): List < Event >{ ĊĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat (" MM / dd / yyyy ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġsd Ġ= ĠstartDate ĊĠĠĠĠĠĠĠ Ġvar Ġed Ġ= ĠendDate ĊĠĠĠĠĠĠĠ Ġvar Ġnm Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġvar Ġlim Ġ= Ġlimit ĊĠĠĠĠĠĠĠ Ġif Ġ( startDate ==" ") Ġsd Ġ= Ġ" 1 2 / 1 2 / 2 0 1 8 " ĊĠĠĠĠĠĠĠ Ġif ( endDate ==" ") ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdt Ġ= ĠSystem . currentTimeMillis () Ġ+ Ġ 8 6 4 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdt 1 Ġ= ĠDate ( dt ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġed Ġ= Ġformatter . format ( dt 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( limit Ġ> 1 0 ) Ġlim = 1 0 ĊĠĠĠĠĠĠĠ Ġif ( is Author ised To Save Service ( request , Ġ" api - gov - event - log ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager . get Events ( sd , ed , nm , lim ). toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠUn author ised To View Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . FOR BID DEN ) ĊĠĠĠ Ġclass ĠUn author ised To Create Event () Ġ: ĠRuntimeException () ĊĠĠĠ Ġclass ĠUn author ised To View Events () Ġ: ĠRuntimeException () ĊĊ Ċ } Ċ