From 7ee4c14faea0057f6eaf3c3f200a8c8a42862db2 Mon Sep 17 00:00:00 2001 From: Clansty Date: Tue, 6 Aug 2024 15:13:54 +0800 Subject: [PATCH] [+] API for bot to ban user from ranking board --- config/application.properties | 4 +++ src/main/java/icu/samnyan/aqua/net/Bot.kt | 44 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/main/java/icu/samnyan/aqua/net/Bot.kt diff --git a/config/application.properties b/config/application.properties index 29746025..8c36ab7e 100644 --- a/config/application.properties +++ b/config/application.properties @@ -133,5 +133,9 @@ server.error.whitelabel.enabled=false aqua-net.frontier.enabled=false aqua-net.frontier.ftk=0x00 +## APIs for bot management +aqua-net.bot.enabled=true +aqua-net.bot.secret=hunter2 + ## OpenAI Settings (For content moderation) aqua-net.openai.api-key=sk-1234567890abcdef1234567890abcdef diff --git a/src/main/java/icu/samnyan/aqua/net/Bot.kt b/src/main/java/icu/samnyan/aqua/net/Bot.kt new file mode 100644 index 00000000..44ac3127 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/net/Bot.kt @@ -0,0 +1,44 @@ +package icu.samnyan.aqua.net + +import ext.* +import icu.samnyan.aqua.net.db.AquaUserServices +import icu.samnyan.aqua.net.utils.SUCCESS +import icu.samnyan.aqua.sega.general.service.CardService +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty +import org.springframework.boot.context.properties.ConfigurationProperties +import org.springframework.context.annotation.Configuration +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RestController + +@Configuration +@ConfigurationProperties(prefix = "aqua-net.bot") +class BotProps { + var enabled: Boolean = false + var secret: String = "" +} + +@RestController +@ConditionalOnProperty("aqua-net.frontier.enabled", havingValue = "true") +@API("/api/v2/bot") +class BotController( + val cardService: CardService, + val us: AquaUserServices, + val props: BotProps +) { + fun Str.checkSecret() { + if (this != props.secret) 403 - "Invalid Secret" + } + + @PostMapping("/ranking-ban") + @Doc("Register a new card by access code", "Card information") + suspend fun rankingBan(@RP secret: Str, @RP username: Str) { + secret.checkSecret() + + us.cardByName(username) { card -> + card.rankingBanned = true + cardService.cardRepo.save(card) + + SUCCESS + } + } +}