/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠAll an ĠY osh io ĠH ase g awa Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ******************************************************************************/ Ċ package Ġcom . h ase g awa . di . server . resources Ċ Ċ import Ġcom . co da h ale . metrics . annotation . Timed Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġcom . h ase g awa . di . server . GCM Control Ċ import Ġcom . h ase g awa . di . server . auth s . User Ċ import Ġcom . h ase g awa . di . server . da os . Links Dao Ċ import Ġcom . h ase g awa . di . server . pok os . Step Link Ċ import Ġcom . h ase g awa . di . server . utils . to Unix Timestamp Ċ import Ġio . drop wizard . auth . Auth Ċ import Ġorg . joda . time . DateTime Ċ import Ġjava . util .* Ċ import Ġjavax . annotation . security . Roles Allowed Ċ import Ġjavax . validation . Valid Ċ import Ġjavax . ws . rs .* Ċ import Ġjavax . ws . rs . core . MediaType Ċ import Ġjavax . ws . rs . core . Response Ċ Ċ @ Produces ( MediaType . APPLICATION _ JSON Ġ+ Ġ"; charset = utf - 8 ") Ċ class ĠLinks Resource ( val Ġstep Id : ĠUUID , Ġval Ġlinks Dao : ĠLinks Dao , Ġval Ġg cm Control : ĠG CM Control ) Ġ{ ĊĠĠĠ Ġ@ OPTIONS ĊĠĠĠ Ġfun Ġcors Pref light () Ġ= ĠResponse . ok (). build () ĊĊĠĠĠ Ġ// ĠĠĠ Ġ@ GET ĊĠĠĠ Ġ// ĠĠĠ Ġ@ Timed ĊĠĠĠ Ġ// ĠĠĠ Ġfun Ġlinks (): ĠList < Step Link > Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġlinks Dao . findAll By Step Id ( step Id ) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ// ĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠLink Put Body ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty Ġval Ġid : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty Ġval Ġtitle : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty Ġval Ġurl : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty Ġval Ġpublished : ĠBoolean ? Ġ= Ġnull ) ĊĊĠĠĠ Ġ@ PUT ĊĠĠĠ Ġ@ Path ("/ { id }") ĊĠĠĠ Ġ@ Timed ĊĠĠĠ Ġ@ Roles Allowed ( User . Role . EDITOR ) ĊĠĠĠ Ġfun Ġlinks Put (@ Path Param (" id ") Ġid : ĠString , Ġ@ Valid Ġbody : ĠLink Put Body ): ĠStep Link Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString ( id ) ĊĠĠĠĠĠĠĠ Ġlinks Dao . update ( uuid , Ġstep Id , Ġbody . title !! , Ġbody . url !! , Ġbody . published !! ) ĊĠĠĠĠĠĠĠ ĠSteps Resource . steps Cache Dirty . set ( true ) ĊĠĠĠĠĠĠĠ Ġg cm Control . send Sync Request () ĊĠĠĠĠĠĠĠ Ġreturn Ġlinks Dao . findById ( uuid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠLink Post Body (@ JsonProperty Ġval Ġtitle : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ JsonProperty Ġval Ġurl : ĠString ? Ġ= Ġnull ) ĊĊĠĠĠ Ġ@ POST ĊĠĠĠ Ġ@ Timed ĊĠĠĠ Ġ@ Roles Allowed ( User . Role . EDITOR ) ĊĠĠĠ Ġfun Ġlink Post (@ Auth Ġuser : ĠUser , Ġ@ Valid Ġbody : ĠLink Post Body ): ĠStep Link Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġlinks Dao . insert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstep Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . title !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . url !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime . now (). to Unix Timestamp () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSteps Resource . steps Cache Dirty . set ( true ) ĊĠĠĠĠĠĠĠ Ġg cm Control . send Sync Request () ĊĠĠĠĠĠĠĠ Ġreturn Ġlinks Dao . findById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ Ġ@ DELETE ĊĠĠĠ Ġ// ĠĠĠ Ġ@ Path ("/ { id }") ĊĠĠĠ Ġ// ĠĠĠ Ġ@ Timed ĊĠĠĠ Ġ// ĠĠĠ Ġ@ Roles Allowed ( User . Role . EDITOR ) ĊĠĠĠ Ġ// ĠĠĠ Ġfun Ġlink Delete ( ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Path Param (" id ") Ġid : ĠString ĊĠĠĠ Ġ// ĠĠĠ Ġ): ĠResponse Ġ{ ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString ( id ) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġlinks Dao . delete ( uuid ) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ ĠSteps Resource . steps Cache Dirty . set ( true ) ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġreturn ĠResponse . ok (). build () ĊĠĠĠ Ġ// ĠĠĠ Ġ} Ċ } Ċ