package Ġorg . jetbrains . demo . think ter Ċ Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . locations . get Ċ import Ġio . ktor . locations . post Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . sessions . get Ċ import Ġio . ktor . sessions . sessions Ċ import Ġorg . jetbrains . demo . think ter . dao . Think ter Storage Ċ import Ġorg . jetbrains . demo . think ter . model . Post Th ought Result Ċ import Ġorg . jetbrains . demo . think ter . model . Post Th ought Token Ċ Ċ fun ĠRoute . post Th ought ( dao : ĠThink ter Storage , Ġhash Function : Ġ( String ) Ġ-> ĠString ) Ġ{ ĊĠĠĠ Ġget < Post Th ought > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġcall . sessions . get < Session >() ?. let Ġ{ Ġdao . user ( it . userId ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Forbidden ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġcall . security Code ( date , Ġuser , Ġhash Function ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Post Th ought Token ( user . userId , Ġdate , Ġcode )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġpost < Post Th ought > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġcall . sessions . get < Session >() ?. let Ġ{ Ġdao . user ( it . userId ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull Ġ|| Ġ! call . verify Code ( it . date , Ġuser , Ġit . code , Ġhash Function )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . Forbidden ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdao . create Th ought ( user . userId , Ġit . text , Ġit . reply To ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Post Th ought Result ( dao . get Th ought ( id ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }