package Ġio . k raft s man . plugins Ċ Ċ import Ġio . k raft s man . d tos . Hack ed Password Ċ import Ġio . k raft s man . d tos . Inspect Request Ċ import Ġio . k raft s man . d tos . Inspect Response Ċ import Ġio . k raft s man . entities . Password Ċ import Ġio . k raft s man . tables . Password s Ċ import Ġio . ktor . serialization .* Ċ import Ġio . ktor . features .* Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . routing .* Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ fun ĠApplication . configure Password Checker () Ġ{ ĊĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson () ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠDatabase . connect ( ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" jdbc : h 2 : mem : password - checker ; DB _ CLOSE _ DELAY =- 1 ", ĊĠĠĠĠĠĠĠ Ġdriver Ġ= Ġ" org . h 2 . Driver " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠ ĠSchema Utils . create ( Password s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrouting Ġ{ ĊĊĠĠĠĠĠĠĠ Ġget ("/ api / v 1 / passwords ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpasswords : ĠList < String > Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword . all (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( map Of (" hack ed - password " Ġto Ġpasswords )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost ("/ api / v 1 / passwords / hack ed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhack ed Password Ġ= Ġcall . receive < Hack ed Password >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Password s Ġ= ĠPassword . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword s . password Ġeq Ġhack ed Password . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. sorted By Ġ{ Ġit . id Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found Password s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġhack ed Password . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" {\ n Ġ Ġ\" message \": Ġ\" Hack ed Ġpassword Ġstored . \"\ n }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= ĠContentType . Application . Json , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠHttpStatusCode . Created , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost ("/ api / v 1 / passwords / inspection ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġcall . receive < Inspect Request >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhack ed Password s Ġ= ĠPassword . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPassword s . password Ġeq Ġrequest . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ transaction Ġhack ed Password s . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Inspect Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġif Ġ( result ) Ġ" Password ĠHack ed " Ġelse Ġ" Password ĠSafe " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ