package Ġorg . ado . bib lio . books Ċ Ċ import Ġio . drop wizard . auth . Auth Ċ import Ġorg . ado . bib lio . shared . Id Hash er Ċ import Ġorg . ado . bib lio . users . User Ċ import Ġjava . time . Clock Ċ import Ġjava . time . Instant Ċ import Ġjavax . validation . Valid Ċ import Ġjavax . validation . constraints . NotNull Ċ import Ġjavax . ws . rs .* Ċ import Ġjavax . ws . rs . core . MediaType Ċ import Ġjavax . ws . rs . core . Response Ċ import Ġjavax . ws . rs . core . Uri Builder Ċ Ċ @ Path (" books ") Ċ @ Cons umes ( MediaType . APPLICATION _ JSON ) Ċ @ Produces ( MediaType . APPLICATION _ JSON ) Ċ class ĠBooks Resource ( private Ġval Ġbook Dao : ĠBook Dao , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġid Hash er : ĠId Hash er , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġclock : ĠClock ) Ġ{ ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġfun Ġget (@ Auth Ġuser : ĠUser ): ĠBooks Dto Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBooks Dto ( book Dao . getAll ( user . username )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ POST ĊĠĠĠ Ġfun Ġadd (@ Auth Ġuser : ĠUser , Ġ@ Valid Ġ@ NotNull Ġbook : ĠBook ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġbook Dao . add ( user . username , ĠInstant . now ( clock ), Ġbook ) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponse . created ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri Builder . from Resource ( Book Resource :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve Template (" id ", Ġid Hash er . encode ( id )). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠBooks Dto ( val Ġbooks : ĠList < Book >)