package Ġorg . w code . routes Ċ Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . auth .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . routing .* Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . component . inject Ċ import Ġorg . w code . database . sql . dao . Author DAO Ċ import Ġorg . w code . database . sql . dao . Quote DAO Ċ import Ġorg . w code . dto . Pag inated DTO Ċ import Ġorg . w code . dto . Quote DTO Ċ import Ġorg . w code . interfaces . Base Route Ċ import Ġorg . w code . core . Environment Config Ċ Ċ class ĠQuote Routes Ġ: ĠBase Route , ĠK oin Component Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġquote Dao : ĠQuote DAO Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġauthor Dao : ĠAuthor DAO Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Routing ( routing : ĠRouting ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute ("/ quote ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" apiKey ", ĠEnvironment Config . apiKey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Pag inated () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ById () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetRandom Quote () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthenticate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Quote () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Quote () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Quote () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Quotes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Quote Count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . getAll () Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ all ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . list ( all Ġ= Ġtrue ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Failure Ġwhen Ġretrieving Ġquotes ", Ġstatus Ġ= ĠHttpStatusCode . InternalServerError ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . get Pag inated () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġcall . request . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠInteger . valueOf ( query [" page "] Ġ?: Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠInteger . valueOf ( query [" size "] Ġ?: Ġ" 1 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġquote Dao . count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . list ( page , Ġsize ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠPag inated DTO ( it , Ġpage , Ġsize , Ġcall . request . path (), Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Failure Ġwhen Ġretrieving Ġquotes ", Ġstatus Ġ= ĠHttpStatusCode . InternalServerError ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . count Quotes () Ġ{ ĊĠĠĠĠĠĠĠ Ġget (" count ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġquote Dao . count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( map Of (" count " Ġto Ġcount )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . update Quote () Ġ{ ĊĠĠĠĠĠĠĠ Ġput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquote Ġ= Ġcall . receive < Quote DTO >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . update ( quote ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Error Ġwhen Ġupdating Ġquote ", Ġstatus Ġ= ĠHttpStatusCode . Not Modified ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . getById () Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("{ id }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] Ġ?: Ġreturn @ get Ġcall . respond Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Missing Ġor Ġmalformed Ġid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠHttpStatusCode . BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . getById ( id ). on Success Ġ{ Ġquote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( quote ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġquote Ġwith Ġid Ġ$ id ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠHttpStatusCode . NotFound ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . create Quote () Ġ{ ĊĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquote Ġ= Ġcall . receive < Quote DTO >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . insert ( quote ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Error Ġwhen Ġadding Ġquote ", Ġstatus Ġ= ĠHttpStatusCode . Not Modified ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . delete Quote () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete ("{ id }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] Ġ?: Ġreturn @ delete Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . delete ( id ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Quote Ġremoved Ġcorrectly ", Ġstatus Ġ= ĠHttpStatusCode . Accepted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Not ĠFound ", Ġstatus Ġ= ĠHttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . getRandom Quote () Ġ{ ĊĠĠĠĠĠĠĠ Ġget (" random ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġcall . request . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguage Code Ġ= Ġquery [" language "] Ġ?: Ġ" None " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . getRandom ( language Code ). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Not ĠFound ", Ġstatus Ġ= ĠHttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoute . month Quote Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġget (" month / count ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote Dao . getMonth Count (). on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( map Of (" count " Ġto Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Error Ġin Ġcounting Ġquotes Ġof Ġmonth ", Ġstatus Ġ= ĠHttpStatusCode . InternalServerError ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ