package Ġes . gu ill erm oo re ll ana . key note dex . backend . api . sessions Ċ Ċ import Ġes . gu ill erm oo re ll ana . key note dex . backend . Json Serializable Converter Ċ import Ġes . gu ill erm oo re ll ana . key note dex . backend . api . getCurrent Logged User Ċ import Ġes . gu ill erm oo re ll ana . key note dex . backend . data . sessions . Session Storage Ċ import Ġes . gu ill erm oo re ll ana . key note dex . backend . data . sessions . to Dao Ċ import Ġes . gu ill erm oo re ll ana . key note dex . backend . data . users . User Storage Ċ import Ġes . gu ill erm oo re ll ana . key note dex . datasource . requests . Session CreateRequest Ċ import Ġes . gu ill erm oo re ll ana . key note dex . datasource . responses . ErrorResponse Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . auth . authenticate Ċ import Ġio . ktor . http . ContentType Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . locations . K tor Experimental Locations API Ċ import Ġio . ktor . locations . post Ċ import Ġio . ktor . request . receive Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . accept Ċ import Ġjava . sql . SQLException Ċ Ċ @ Use Experimental ( K tor Experimental Locations API :: class ) Ċ fun ĠRoute . post Session ( session Storage : ĠSession Storage , Ġuser Storage : ĠUser Storage ) Ġ{ ĊĊĠĠĠ ĠJson Serializable Converter . register ( Session CreateRequest . serializer ()) ĊĊĠĠĠ Ġaccept ( ContentType . Application . Json ) Ġ{ ĊĠĠĠĠĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost < Sessions Endpoint > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠgetCurrent Logged User ( user Storage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Unauthorized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ post ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġincomplete Session Ġ= Ġcall . receive < Session CreateRequest >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġincomplete Session . to Dao ( userId Ġ= Ġuser . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Storage . create ( session ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatusCode . InternalServerError , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Response ( message Ġ= Ġ" Failed Ġto Ġcreate Ġsession : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Created ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ