package Ġde . de bu gle vel . monitoring . monitoring Ċ Ċ import Ġde . de bu gle vel . monitoring . monitor s . Monitor Ċ import Ġio . mic ronaut . http . HttpResponse Ċ import Ġio . mic ronaut . http . MediaType Ċ import Ġio . mic ronaut . http . annotation .* Ċ import Ġio . mic ronaut . security . annotation . Sec ured Ċ import Ġio . mic ronaut . security . rules . Security Rule Ċ import Ġio . mic ronaut . views . View Ċ import Ġmu . Kotlin Logging Ċ import Ġjava . net . URI Ċ Ċ @ Sec ured ( Security Rule . IS _ AUTHENT IC ATED ) Ċ @ Controller ("/ monitor ings ") Ċ class ĠMonitoring Controller ( ĊĠĠĠ Ġprivate Ġval Ġmonitoring Service : ĠMonitoring Service , ĊĠĠĠ Ġprivate Ġval Ġstate Checker : ĠState Checker , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĊĠĠĠ Ġ@ Post ("/") ĊĠĠĠ Ġfun Ġpost One ( add Monitoring Request : ĠAdd Monitoring Request ): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called Ġpost One ($ add Monitoring Request )") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonitoring Ġ= Ġmonitoring Service . add ( add Monitoring Request . to Monitoring ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . created ( monitoring ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitoring Service . Monitoring AlreadyExists Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . bad Request (" Monitoring Ġdoes Ġalready Ġexist ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitoring Service . Invalid Monitoring FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . bad Request (" Supp lied ĠURL Ġis Ġinvalid : Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitor . Unsupported Monitoring Protocol Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . bad Request (" Protocol Ġ'${ e . scheme }' Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Put ("/ { id }") ĊĠĠĠ Ġfun Ġput One ( id : ĠInt , Ġupdate Monitoring Request : ĠUpdate Monitoring Request ): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called Ġput One ($ id , Ġ$ update Monitoring Request )") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonitoring Ġ= Ġmonitoring Service . update ( id , Ġupdate Monitoring Request . to Monitoring ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok ( monitoring ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitoring Service . Monitoring NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . not Found (" Monitoring Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitoring Service . Invalid Monitoring FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . bad Request (" Supp lied ĠURL Ġis Ġinvalid : Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitor . Unsupported Monitoring Protocol Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . bad Request (" Protocol Ġ'${ e . scheme }' Ġis Ġnot Ġsupported ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Delete ("/ { id }") ĊĠĠĠ Ġfun Ġdelete One ( id : ĠInt ): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called Ġdelete One ($ id )") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonitoring Service . delete ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok (" Deleted Ġmonitoring Ġ$ id ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMonitoring Service . Monitoring NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok (" Monitoring Ġ$ id Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Get ("/", Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON ]) ĊĠĠĠ Ġfun ĠgetAll (): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called ĠgetAll () ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonitoring Responses Ġ= Ġmonitoring Service . list () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠGet Monitoring Response ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok ( monitoring Responses ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Unhandled Ġexception " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . server Error (" Unhandled Ġexception : Ġ${ e . stack Trace }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ View (" list . html ") ĊĠĠĠ Ġ@ Get ("/", Ġproduces Ġ= Ġ[ MediaType . TEXT _ HTML ]) ĊĠĠĠ Ġfun ĠgetAll Html (): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called ĠgetAll Html () ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonitor ings Ġ= Ġmonitoring Service . list () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( compare By ({ Ġit . name Ġ}, Ġ{ ĠURI ( it . url ). host Ġ}, Ġ{ Ġit . url Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠMonitoring ViewModel ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok ( map Of (" monitor ings " Ġto Ġmonitor ings )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Unhandled Ġexception " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . server Error (" Unhandled Ġexception : Ġ${ e . stack Trace }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ View (" list . plaintext ") ĊĠĠĠ Ġ@ Get ("/ plaintext ", Ġproduces Ġ= Ġ[ MediaType . TEXT _ HTML ]) ĊĠĠĠ Ġ//@ Get ("/ plaintext ", Ġproduces Ġ= Ġ[ MediaType . TEXT _ PLAIN ]) Ġ// ĠTODO : Ġsee Ġhttps :// github . com / mic ronaut - projects / mic ronaut - views / issues / 5 6 ĊĠĠĠ Ġfun ĠgetAll Pl aintext (): ĠHttpResponse < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . debug (" Called ĠgetAll Pl aintext () ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonitor ings Ġ= Ġmonitoring Service . list () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted With ( compare By ({ Ġit . name Ġ}, Ġ{ ĠURI ( it . url ). host Ġ}, Ġ{ Ġit . url Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠMonitoring ViewModel ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . ok ( map Of (" monitor ings " Ġto Ġmonitor ings )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Unhandled Ġexception " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . server Error (" Unhandled Ġexception : Ġ${ e . stack Trace }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }