From fde952fcd922bece8c78d1262feb8c2259a57c9c Mon Sep 17 00:00:00 2001 From: Clansty Date: Thu, 1 Aug 2024 09:38:36 +0800 Subject: [PATCH] [+] Add option to disable the legacy aquaviewer api --- config/application.properties | 7 ++++++- .../aqua/api/controller/general/StaticController.java | 2 ++ .../aqua/api/controller/sega/ApiAimeController.java | 2 ++ .../sega/game/chuni/v1/ApiChuniV1GameDataController.java | 2 ++ .../game/chuni/v1/ApiChuniV1PlayerDataController.java | 2 ++ .../sega/game/chuni/v2/ApiChuniV2GameDataController.java | 2 ++ .../game/chuni/v2/ApiChuniV2PlayerDataController.java | 8 +++++--- .../sega/game/diva/ApiDivaGameDataController.java | 2 ++ .../sega/game/diva/ApiDivaPlayerDataController.java | 2 ++ .../sega/game/maimai2/ApiMaimai2PlayerDataController.java | 2 ++ .../sega/game/ongeki/ApiOngekiGameDataController.java | 2 ++ .../sega/game/ongeki/ApiOngekiPlayerDataController.java | 2 ++ .../sega/manage/ApiChuniV1ManageController.java | 2 ++ .../controller/sega/manage/ApiDivaManageController.java | 2 ++ 14 files changed, 35 insertions(+), 4 deletions(-) diff --git a/config/application.properties b/config/application.properties index d3818ec7..29746025 100644 --- a/config/application.properties +++ b/config/application.properties @@ -33,7 +33,12 @@ server.port=80 ## Static file server ## This is used to server static files in /web/ directory, which is Aquaviewer -aquaviewer.server.enable=true +aquaviewer.server.enable=false + +## APIs for the legacy AquaViewer +## This enables the legacy Aquaviewer API (/api/game/xxx, /api/sega/xxx). This is disabled by default. +## It is recommended to use the new AquaNet API (/api/v2/xxx) instead. +aquaviewer.api.enable=false ## Chunithm ## This enables team function if you set team name here. Leave this blank to disable it. diff --git a/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java b/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java index 2a01f8f8..15a3cbaa 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/general/StaticController.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.api.controller.general; import icu.samnyan.aqua.sega.diva.dao.userdata.PlayerScreenShotRepository; import icu.samnyan.aqua.sega.diva.model.userdata.PlayerScreenShot; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.MediaType; @@ -20,6 +21,7 @@ import java.util.Optional; */ @RestController @RequestMapping("api/static") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class StaticController { private final PlayerScreenShotRepository playerScreenShotRepository; diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java index 98dd6a20..da1bd71d 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/ApiAimeController.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.api.controller.sega; import icu.samnyan.aqua.sega.general.model.Card; import icu.samnyan.aqua.sega.general.service.CardService; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,6 +18,7 @@ import java.util.Optional; */ @RestController @RequestMapping("api/sega/aime") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiAimeController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java index f8dab9c1..17a03a83 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1GameDataController.java @@ -7,6 +7,7 @@ import icu.samnyan.aqua.sega.chunithm.model.gamedata.CharacterSkill; import icu.samnyan.aqua.sega.chunithm.model.gamedata.Music; import icu.samnyan.aqua.sega.chunithm.service.GameMusicService; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,6 +19,7 @@ import java.util.List; */ @RestController @RequestMapping("api/game/chuni/v1/data") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiChuniV1GameDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java index d2cfb6a6..78f3a953 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v1/ApiChuniV1PlayerDataController.java @@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -40,6 +41,7 @@ import java.util.stream.Collectors; */ @RestController @RequestMapping("api/game/chuni/v1") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiChuniV1PlayerDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2GameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2GameDataController.java index ab457212..03c890d2 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2GameDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2GameDataController.java @@ -4,6 +4,7 @@ import icu.samnyan.aqua.sega.chusan.model.*; import icu.samnyan.aqua.sega.chusan.model.gamedata.Character; import icu.samnyan.aqua.sega.chusan.model.gamedata.*; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -15,6 +16,7 @@ import java.util.List; */ @RestController @RequestMapping("api/game/chuni/v2/data") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiChuniV2GameDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2PlayerDataController.java index 9195f4eb..b7f79d56 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/chuni/v2/ApiChuniV2PlayerDataController.java @@ -22,6 +22,7 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -39,6 +40,7 @@ import java.util.stream.Collectors; */ @RestController @RequestMapping("api/game/chuni/v2") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiChuniV2PlayerDataController { @@ -163,7 +165,7 @@ public class ApiChuniV2PlayerDataController { profile.setAvatarBack((Integer) request.get("accId")); break; } - + return userDataService.saveUserData(profile); } @@ -304,12 +306,12 @@ public class ApiChuniV2PlayerDataController { UserGeneralData userGeneralData = userGeneralDataService.getByUserAndKey(profile, "favorite_music") .orElseGet(() -> new UserGeneralData(profile, "favorite_music")); List favoriteSongs = new LinkedList(Arrays.asList(userGeneralData.getPropertyValue().split(","))); - + if(!favoriteSongs.remove(id)) { favoriteSongs.add(id); } - + StringBuilder sb = new StringBuilder(); favoriteSongs.forEach(favSong -> { if(!favSong.isEmpty()) sb.append(favSong).append(","); diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java index e50279e0..fc7a0c3b 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaGameDataController.java @@ -7,6 +7,7 @@ import icu.samnyan.aqua.sega.diva.model.gamedata.DivaCustomize; import icu.samnyan.aqua.sega.diva.model.gamedata.DivaModule; import icu.samnyan.aqua.sega.diva.model.gamedata.Pv; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,6 +19,7 @@ import java.util.List; */ @RestController @RequestMapping("api/game/diva/data") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiDivaGameDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java index f9e5e563..11e0d9f4 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/diva/ApiDivaPlayerDataController.java @@ -9,6 +9,7 @@ import icu.samnyan.aqua.sega.diva.model.common.Edition; import icu.samnyan.aqua.sega.diva.model.userdata.*; import icu.samnyan.aqua.sega.diva.service.PlayerProfileService; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.HttpStatus; @@ -22,6 +23,7 @@ import java.util.*; */ @RestController @RequestMapping("api/game/diva") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiDivaPlayerDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java index af5a48e3..34503765 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/maimai2/ApiMaimai2PlayerDataController.java @@ -16,6 +16,7 @@ import icu.samnyan.aqua.sega.maimai2.model.*; import icu.samnyan.aqua.sega.maimai2.model.userdata.*; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -36,6 +37,7 @@ import java.util.stream.Stream; */ @RestController @RequestMapping("api/game/maimai2") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiMaimai2PlayerDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java index 26b13c99..8256e8f2 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiGameDataController.java @@ -3,6 +3,7 @@ package icu.samnyan.aqua.api.controller.sega.game.ongeki; import icu.samnyan.aqua.sega.ongeki.dao.gamedata.*; import icu.samnyan.aqua.sega.ongeki.model.gamedata.*; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -12,6 +13,7 @@ import java.util.List; */ @RestController @RequestMapping("api/game/ongeki/data") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiOngekiGameDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java index 8843d4b1..958bd3a2 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/game/ongeki/ApiOngekiPlayerDataController.java @@ -18,6 +18,7 @@ import icu.samnyan.aqua.sega.ongeki.model.response.data.UserRivalData; import icu.samnyan.aqua.sega.ongeki.model.userdata.*; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -36,6 +37,7 @@ import java.util.stream.Collectors; */ @RestController @RequestMapping("api/game/ongeki") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiOngekiPlayerDataController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java index 2136c488..00ead66a 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiChuniV1ManageController.java @@ -10,6 +10,7 @@ import icu.samnyan.aqua.sega.chunithm.service.UserMusicDetailService; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -25,6 +26,7 @@ import java.util.Optional; */ @RestController @RequestMapping("api/manage/chuni/v1") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiChuniV1ManageController { diff --git a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java index 77cb305d..f9dac249 100644 --- a/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java +++ b/src/main/java/icu/samnyan/aqua/api/controller/sega/manage/ApiDivaManageController.java @@ -11,6 +11,7 @@ import icu.samnyan.aqua.sega.diva.model.gamedata.*; import icu.samnyan.aqua.sega.general.dao.PropertyEntryRepository; import icu.samnyan.aqua.sega.general.model.PropertyEntry; import lombok.AllArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; @@ -22,6 +23,7 @@ import java.util.Optional; */ @RestController @RequestMapping("api/manage/diva/") +@ConditionalOnProperty(prefix = "aquaviewer.api", name = "enabled", havingValue = "true") @AllArgsConstructor public class ApiDivaManageController {