FIRST AUTHENTICATED ROUTES!

This commit is contained in:
2025-08-16 17:05:23 -04:00
parent a05e48aec1
commit 3b5ba33151

View File

@@ -7,6 +7,7 @@ import codes.kalar.exception.DbElementNotFoundException
import codes.kalar.model.NewCollectionItem import codes.kalar.model.NewCollectionItem
import io.ktor.http.* import io.ktor.http.*
import io.ktor.server.application.* import io.ktor.server.application.*
import io.ktor.server.auth.authenticate
import io.ktor.server.request.* import io.ktor.server.request.*
import io.ktor.server.response.* import io.ktor.server.response.*
import io.ktor.server.routing.* import io.ktor.server.routing.*
@@ -41,49 +42,51 @@ fun Application.configureCollectionItemRoutes(dbConnection: Connection) {
} }
} }
post("/items") { authenticate("auth-jwt") {
try { post("/items") {
val item = call.receive<NewCollectionItem>() try {
val id = itemService.create(item) val item = call.receive<NewCollectionItem>()
call.respondText("Adding ${item.title} to database with the id of $id", status=HttpStatusCode.OK) val id = itemService.create(item)
} catch (cause: DbElementInsertionException) { call.respondText("Adding ${item.title} to database with the id of $id", status = HttpStatusCode.OK)
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments") } catch (cause: DbElementInsertionException) {
} catch (cause: ContentTransformationException) { call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments")
call.respond(HttpStatusCode.BadRequest, "Bad Arguments. Must pass a valid CollectionItem object.") } catch (cause: ContentTransformationException) {
call.respond(HttpStatusCode.BadRequest, "Bad Arguments. Must pass a valid CollectionItem object.")
}
} }
} patch("/items") {
try {
patch("/items") { val inputItem = call.receive<CollectionItem>()
try { itemService.readById(inputItem.id)
val inputItem = call.receive<CollectionItem>() itemService.update(inputItem)
itemService.readById(inputItem.id) call.respondText("Updated ${inputItem.title} to database.", status = HttpStatusCode.OK)
itemService.update(inputItem) } catch (cause: DbElementNotFoundException) {
call.respondText("Updated ${inputItem.title} to database.", status=HttpStatusCode.OK) log.error(cause.message)
} catch (cause: DbElementNotFoundException) { call.respond(HttpStatusCode.NotFound, cause.message ?: "Could not find item in database.")
log.error(cause.message) } catch (cause: DbElementInsertionException) {
call.respond(HttpStatusCode.NotFound, cause.message ?: "Could not find item in database.") log.error(cause.message)
} catch (cause: DbElementInsertionException) { call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments")
log.error(cause.message) } catch (cause: ContentTransformationException) {
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments") log.error(cause.message)
} catch (cause: ContentTransformationException) { call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments")
log.error(cause.message) }
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments")
} }
}
delete("/items/{id}") { delete("/items/{id}") {
try { try {
val id = call.parameters["id"]!!.toLong() val id = call.parameters["id"]!!.toLong()
log.info("Deleting item with id=$id") log.info("Deleting item with id=$id")
itemService.delete(id) itemService.delete(id)
call.respondText(":(", status = HttpStatusCode.OK) call.respondText(":(", status = HttpStatusCode.OK)
} catch (cause: DbElementNotFoundException) { } catch (cause: DbElementNotFoundException) {
log.error(cause.message, cause) log.error(cause.message, cause)
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments") call.respond(HttpStatusCode.BadRequest, cause.message ?: "Bad Arguments")
} catch (cause: NumberFormatException) { } catch (cause: NumberFormatException) {
log.error(cause.message, cause) log.error(cause.message, cause)
call.respond(HttpStatusCode.BadRequest, cause.message ?: "Invalid ID format") call.respond(HttpStatusCode.BadRequest, cause.message ?: "Invalid ID format")
}
} }
} }
} }