From 9a303ff342c11ebc8ce524276d3052091662d876 Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Thu, 15 Aug 2024 13:49:18 +0900 Subject: [PATCH] apiDiscordRoutes add. - add POST /discord/{uid} endpoints. --- .../webserver/routes/ApiDiscordRoutes.kt | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiDiscordRoutes.kt b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiDiscordRoutes.kt index 0fbae73..c0e464b 100644 --- a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiDiscordRoutes.kt +++ b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiDiscordRoutes.kt @@ -2,9 +2,11 @@ package space.mori.chzzk_bot.webserver.routes import io.ktor.http.* import io.ktor.server.application.* +import io.ktor.server.request.* import io.ktor.server.response.* import io.ktor.server.routing.* import io.ktor.server.sessions.* +import kotlinx.serialization.Serializable import org.koin.java.KoinJavaComponent.inject import space.mori.chzzk_bot.common.events.CoroutinesEventBus import space.mori.chzzk_bot.common.services.UserService @@ -15,7 +17,7 @@ fun Route.apiDiscordRoutes() { val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java) route("/discord") { - get("{uid}") { + get("/{uid}") { val uid = call.parameters["uid"] val session = call.sessions.get() if(uid == null) { @@ -32,14 +34,29 @@ fun Route.apiDiscordRoutes() { call.respond(HttpStatusCode.NotFound) return@get } - val guild = DiscordGuildCache.getCachedGuilds(user.liveAlertGuild.toString()) - if(guild == null) { - call.respond(HttpStatusCode.NotFound) - return@get - } - call.respond(HttpStatusCode.OK, guild) + call.respond(HttpStatusCode.OK, GuildSettings( + user.liveAlertGuild, + user.liveAlertChannel, + user.liveAlertMessage + )) return@get } + post("/{uid}") { + val uid = call.parameters["uid"] + val session = call.sessions.get() + val body: GuildSettings = call.receive() + if(uid == null) { + call.respond(HttpStatusCode.BadRequest, "UID is required") + return@post + } + val user = UserService.getUser(uid) + if(user == null || user.naverId != session?.id || user.token == null) { + call.respond(HttpStatusCode.BadRequest, "User does not exist") + return@post + } + UserService.updateLiveAlert(user, body.guildId ?: 0L, body.channelId ?: 0L, body.message) + call.respond(HttpStatusCode.OK) + } get("/guild/{gid}") { val gid = call.parameters["gid"] val session = call.sessions.get() @@ -81,4 +98,11 @@ fun Route.apiDiscordRoutes() { return@get } } -} \ No newline at end of file +} + +@Serializable +data class GuildSettings( + val guildId: Long?, + val channelId: Long?, + val message: String? = null, +) \ No newline at end of file