From 5a9b7e296f58835b04214b9a8506fc399b38be22 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 18 Mar 2024 01:32:38 -0400 Subject: [PATCH] [O] Reduce loc --- src/main/java/ext/Ext.kt | 6 +- .../sega/maimai2/Maimai2ServletController.kt | 104 +++++ .../controller/Maimai2ServletController.java | 368 ------------------ .../Maimai2ServletControllerAdvice.java | 38 -- .../sega/maimai2/handler/BaseHandler.java | 4 + .../handler/impl/GetUserRivalDataHandler.java | 3 +- .../impl/GetUserRivalMusicHandler.java | 3 +- .../handler/impl/UpsertUserAllHandler.java | 2 +- 8 files changed, 118 insertions(+), 410 deletions(-) create mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java delete mode 100644 src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletControllerAdvice.java diff --git a/src/main/java/ext/Ext.kt b/src/main/java/ext/Ext.kt index b9bf11f2..46472005 100644 --- a/src/main/java/ext/Ext.kt +++ b/src/main/java/ext/Ext.kt @@ -29,13 +29,17 @@ typealias API = RequestMapping typealias Str = String typealias Bool = Boolean -@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) @Retention(AnnotationRetention.RUNTIME) annotation class Doc( val desc: String, val ret: String = "" ) +@Target(AnnotationTarget.VALUE_PARAMETER) +@Retention(AnnotationRetention.RUNTIME) +annotation class SettingField(val name: Str, val desc: Str) + // Make it easier to throw a ResponseStatusException operator fun HttpStatus.invoke(message: String? = null): Nothing = throw ApiException(value(), message ?: this.reasonPhrase) operator fun Int.minus(message: String): Nothing { diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt new file mode 100644 index 00000000..40968267 --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/Maimai2ServletController.kt @@ -0,0 +1,104 @@ +package icu.samnyan.aqua.sega.maimai2 + +import ext.API +import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler +import icu.samnyan.aqua.sega.maimai2.handler.impl.* +import lombok.AllArgsConstructor +import org.slf4j.LoggerFactory +import org.springframework.web.bind.annotation.* +import kotlin.reflect.full.declaredMemberProperties + +/** + * @author samnyan (privateamusement@protonmail.com) + */ +@Suppress("unused") +@AllArgsConstructor +@RestController +@RequestMapping(path = ["/g/mai2/Maimai2Servlet/", "/g/mai2/"]) +class Maimai2ServletController( + val getGameSetting: GetGameSettingHandler, + val getGameEvent: GetGameEventHandler, + val getGameRanking: GetGameRankingHandler, + val getGameTournamentInfo: GetGameTournamentInfoHandler, + val getGameCharge: GetGameChargeHandler, + val getTransferFriend: GetTransferFriendHandler, + val getUserActivity: GetUserActivityHandler, + val userLogin: UserLoginHandler, + val userLogout: UserLogoutHandler, + val getUserData: GetUserDataHandler, + val upsertUserAll: UpsertUserAllHandler, + val getUserPreview: GetUserPreviewHandler, + val getUserCharacter: GetUserCharacterHandler, + val getUserOption: GetUserOptionHandler, + val getUserItem: GetUserItemHandler, + val getUserExtend: GetUserExtendHandler, + val getUserGhost: GetUserGhostHandler, + val getUserLoginBonus: GetUserLoginBonusHandler, + val getUserMap: GetUserMapHandler, + val getUserFavorite: GetUserFavoriteHandler, + val getUserCard: GetUserCardHandler, + val getUserMusic: GetUserMusicHandler, + val getUserRating: GetUserRatingHandler, + val getUserRegion: GetUserRegionHandler, + val getUserCharge: GetUserChargeHandler, + val getUserCourse: GetUserCourseHandler, + val uploadUserPhoto: UploadUserPhotoHandler, + val uploadUserPlaylog: UploadUserPlaylogHandler, + val getGameNgMusicId: GetGameNgMusicIdHandler, + val getUserFriendSeasonRanking: GetUserFriendSeasonRankingHandler, + val getUserPortrait: GetUserPortraitHandler, + val uploadUserPortrait: UploadUserPortraitHandler, + val cmGetUserPreview: CMGetUserPreviewHandler, + val cmGetSellingCard: CMGetSellingCardHandler, + val getUserCardPrintError: GetUserCardPrintErrorHandler, + val cmGetUserCharacter: CMGetUserCharacterHandler, + val upsertUserPrint: UpsertUserPrintHandler, + val getUserRecommendRateMusic: GetUserRecommendRateMusicHandler, + val getUserRecommendSelectMusic: GetUserRecommendSelectMusicHandler, + val getUserFavoriteItem: GetUserFavoriteItemHandler, + val getUserRivalData: GetUserRivalDataHandler, + val getUserRivalMusic: GetUserRivalMusicHandler, +) { + val logger = LoggerFactory.getLogger(Maimai2ServletController::class.java) + + val createToken = BaseHandler { """{"Bearer":"AQUATOKEN"}""" } + val cmUpsertUserPrintLog = BaseHandler { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678"}""" } + + val endpointList = listOf("GetGameEventApi", "GetGameRankingApi", "GetGameSettingApi", "GetGameTournamentInfoApi", + "GetTransferFriendApi", "GetUserActivityApi", "GetUserCardApi", "GetUserCharacterApi", "GetUserDataApi", + "GetUserExtendApi", "GetUserFavoriteApi", "GetUserGhostApi", "GetUserItemApi", "GetUserLoginBonusApi", + "GetUserMapApi", "GetUserMusicApi", "GetUserOptionApi", "GetUserPortraitApi", "GetUserPreviewApi", + "GetUserRatingApi", "GetUserRegionApi", "UploadUserPhotoApi", "UploadUserPlaylogApi", "UploadUserPortraitApi", + "UserLoginApi", "UserLogoutApi", "UpsertUserAllApi", "GetGameChargeApi", "GetUserChargeApi", + "GetUserCourseApi", "GetGameNgMusicIdApi", "GetUserFriendSeasonRankingApi", "CreateTokenApi", + "GetUserRecommendRateMusicApi", "GetUserRecommendSelectMusicApi", "CMGetSellingCardApi", + "CMGetUserCardApi", "CMGetUserCardPrintErrorApi", "CMGetUserCharacterApi", "CMGetUserDataApi", "CMGetUserItemApi", + "CMGetUserPreviewApi", "CMUpsertUserPrintApi", + "CMUpsertUserPrintlogApi", "GetUserFavoriteItemApi", "GetUserRivalDataApi", "GetUserRivalMusicApi") + + val noopEndpoint = setOf("GetUserScoreRankingApi", "UpsertClientBookkeepingApi", "UpsertClientSettingApi", + "UpsertClientTestmodeApi", "UpsertClientUploadApi", "Ping", "RemoveTokenApi", "CMLoginApi", "CMLogoutApi", + "CMUpsertBuyCardApi") + + val members = this::class.declaredMemberProperties + val handlers: Map = endpointList.associateWith { api -> + val name = api.replace("Api", "").lowercase() + (members.find { it.name.lowercase() == name } ?: members.find { it.name.lowercase() == name.replace("cm", "") }) + ?.let { it.call(this) as BaseHandler } + ?: throw IllegalArgumentException("Mai2: No handler found for $api") + } + + @API("/{api}") + fun handle(@PathVariable api: String, @RequestBody request: Map): Any { + logger.info("Mai2 $api : $request") + + if (api in noopEndpoint) { + return """{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.$api"}""" + } + + return handlers[api]?.handle(request) ?: { + logger.warn("Mai2 $api not found") + """{"returnCode":1,"apiName":"com.sega.maimai2servlet.api.$api"}""" + } + } +} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java deleted file mode 100644 index f4399cab..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletController.java +++ /dev/null @@ -1,368 +0,0 @@ -package icu.samnyan.aqua.sega.maimai2.controller; - -import com.fasterxml.jackson.core.JsonProcessingException; - -import icu.samnyan.aqua.sega.maimai2.handler.impl.*; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@AllArgsConstructor -@RestController -@RequestMapping({ "/g/mai2/Maimai2Servlet", "/g/mai2" }) -public class Maimai2ServletController { - - private final GetGameSettingHandler getGameSettingHandler; - private final GetGameEventHandler getGameEventHandler; - private final GetGameRankingHandler getGameRankingHandler; - private final GetGameTournamentInfoHandler getGameTournamentInfoHandler; - private final GetGameChargeHandler getGameChargeHandler; - private final GetTransferFriendHandler getTransferFriendHandler; - private final GetUserActivityHandler getUserActivityHandler; - private final UserLoginHandler userLoginHandler; - private final UserLogoutHandler userLogoutHandler; - private final GetUserDataHandler getUserDataHandler; - private final UpsertUserAllHandler upsertUserAllHandler; - private final GetUserPreviewHandler getUserPreviewHandler; - private final GetUserCharacterHandler getUserCharacterHandler; - private final GetUserOptionHandler getUserOptionHandler; - private final GetUserItemHandler getUserItemHandler; - private final GetUserExtendHandler getUserExtendHandler; - private final GetUserGhostHandler getUserGhostHandler; - private final GetUserLoginBonusHandler getUserLoginBonusHandler; - private final GetUserMapHandler getUserMapHandler; - private final GetUserFavoriteHandler getUserFavoriteHandler; - private final GetUserCardHandler getUserCardHandler; - private final GetUserMusicHandler getUserMusicHandler; - private final GetUserRatingHandler getUserRatingHandler; - private final GetUserRegionHandler getUserRegionHandler; - private final GetUserChargeHandler getUserChargeHandler; - private final GetUserCourseHandler getUserCourseHandler; - private final UploadUserPhotoHandler uploadUserPhotoHandler; - private final UploadUserPlaylogHandler uploadUserPlaylogHandler; - private final GetGameNgMusicIdHandler getGameNgMusicIdHandler; - private final GetUserFriendSeasonRankingHandler getUserFriendSeasonRankingHandler; - private final GetUserPortraitHandler getUserPortraitHandler; - private final UploadUserPortraitHandler uploadUserPortraitHandler; - private final CMGetUserPreviewHandler cmGetUserPreviewHandler; - private final CMGetSellingCardHandler cmGetSellingCardHandler; - private final GetUserCardPrintErrorHandler getUserCardPrintErrorHandler; - private final CMGetUserCharacterHandler cmGetUserCharacterHandler; - private final UpsertUserPrintHandler upsertUserPrintHandler; - private final GetUserRecommendRateMusicHandler getUserRecommendRateMusicHandler; - private final GetUserRecommendSelectMusicHandler getUserRecommendSelectMusicHandler; - private final GetUserFavoriteItemHandler getUserFavoriteItemHandler; - private final GetUserRivalDataHandler getUserRivalDataHandler; - private final GetUserRivalMusicHandler getUserRivalMusicHandler; - - // Mandatory for boot - @PostMapping("GetGameEventApi") - public String getGameEvent(@ModelAttribute Map request) throws JsonProcessingException { - return getGameEventHandler.handle(request); - } - - @PostMapping("GetGameRankingApi") - public String getGameRanking(@ModelAttribute Map request) throws JsonProcessingException { - return getGameRankingHandler.handle(request); - } - - @PostMapping("GetGameSettingApi") - public String getGameSetting(@ModelAttribute Map request) throws JsonProcessingException { - return getGameSettingHandler.handle(request); - } - - @PostMapping("GetGameTournamentInfoApi") - public String getGameTournamentInfoHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return getGameTournamentInfoHandler.handle(request); - } - - // Gameplay - @PostMapping("GetTransferFriendApi") - public String getTransferFriendHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getTransferFriendHandler.handle(request); - } - - @PostMapping("GetUserActivityApi") - public String getUserActivityHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserActivityHandler.handle(request); - } - - @PostMapping("GetUserCardApi") - public String getUserCardHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCardHandler.handle(request); - } - - @PostMapping("GetUserCharacterApi") - public String getUserCharacterHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCharacterHandler.handle(request); - } - - @PostMapping("GetUserDataApi") - public String getUserDataHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataHandler.handle(request); - } - - @PostMapping("GetUserExtendApi") - public String getUserExtendHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserExtendHandler.handle(request); - } - - @PostMapping("GetUserFavoriteApi") - public String getUserFavoriteHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserFavoriteHandler.handle(request); - } - - // No support, return empty - @PostMapping("GetUserGhostApi") - public String getUserGhostHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserGhostHandler.handle(request); - } - - @PostMapping("GetUserItemApi") - public String getUserItemHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserItemHandler.handle(request); - } - - @PostMapping("GetUserLoginBonusApi") - public String getUserLoginBonusHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserLoginBonusHandler.handle(request); - } - - @PostMapping("GetUserMapApi") - public String getUserMapHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMapHandler.handle(request); - } - - @PostMapping("GetUserMusicApi") - public String getUserMusicHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserMusicHandler.handle(request); - } - - @PostMapping("GetUserOptionApi") - public String getUserOptionHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserOptionHandler.handle(request); - } - - @PostMapping("GetUserPortraitApi") - public String getUserPortraitHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPortraitHandler.handle(request); - } - - @PostMapping("GetUserPreviewApi") - public String getUserPreviewHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserPreviewHandler.handle(request); - } - - @PostMapping("GetUserRatingApi") - public String getUserRatingHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRatingHandler.handle(request); - } - - // I don't know what it is. return empty - @PostMapping("GetUserRegionApi") - public String getUserRegionHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserRegionHandler.handle(request); - } - - // Seems only used for tournament, No Support - @PostMapping("GetUserScoreRankingApi") - public String getUserScoreRankingHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return "{}"; - } - - @PostMapping("UploadUserPhotoApi") - public Object uploadUserPhotoHandler(@ModelAttribute Map request) throws JsonProcessingException { - return uploadUserPhotoHandler.handle(request); - } - - @PostMapping("UploadUserPlaylogApi") - public Object uploadUserPlaylogHandler(@ModelAttribute Map request) throws JsonProcessingException { - return uploadUserPlaylogHandler.handle(request); - } - - @CrossOrigin // enable cors because aqua-viewer also use it. - @PostMapping("UploadUserPortraitApi") - public Object uploadUserPortraitHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return uploadUserPortraitHandler.handle(request); - } - - @PostMapping("UserLoginApi") - public Object userLoginHandler(@ModelAttribute Map request) throws JsonProcessingException { - return userLoginHandler.handle(request); - } - - @PostMapping("UserLogoutApi") - public String userLogoutHandler(@ModelAttribute Map request) throws JsonProcessingException { - return userLogoutHandler.handle(request); - } - - @PostMapping("UpsertClientBookkeepingApi") - public String upsertClientBookkeeping(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientBookkeepingApi\"}"; - } - - @PostMapping("UpsertClientSettingApi") - public String upsertClientSetting(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientSettingApi\"}"; - } - - @PostMapping("UpsertClientTestmodeApi") - public String upsertClientTestmode(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientTestmodeApi\"}"; - } - - @PostMapping("UpsertClientUploadApi") - public String upsertClientUpload(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientUploadApi\"}"; - } - - // Score saving - @PostMapping("UpsertUserAllApi") - public String upsertUserAllHandler(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserAllHandler.handle(request); - } - - // Splash plus APIs - @PostMapping("GetGameChargeApi") - public String getGameChargeHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getGameChargeHandler.handle(request); - } - - @PostMapping("GetUserChargeApi") - public String getUserChargeHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserChargeHandler.handle(request); - } - - @PostMapping("UpsertUserChargelogApi") - public String upsertUserChargelog(@ModelAttribute Map request) { - return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertUserChargelogApi\"}"; - } - - @PostMapping("GetUserCourseApi") - public String getUserCourseHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCourseHandler.handle(request); - } - - // Universe APIs - @PostMapping("GetGameNgMusicIdApi") - public String getGameNgMusicIdHandler(@ModelAttribute Map request) throws JsonProcessingException { - return getGameNgMusicIdHandler.handle(request); - } - - @PostMapping("GetUserFriendSeasonRankingApi") - public String getUserFriendSeasonRankingHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return getUserFriendSeasonRankingHandler.handle(request); - } - - @PostMapping("Ping") - String ping(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - // Festival APIs - @PostMapping("CreateTokenApi") - String createTokenHandler(@ModelAttribute Map request) { - return "{\"Bearer\":\"AQUATOKEN\"}"; - } - - @PostMapping("RemoveTokenApi") - String removeTokenHandler(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("GetUserRecommendRateMusicApi") - public String getUserRecommendRateMusicHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return getUserRecommendRateMusicHandler.handle(request); - } - - @PostMapping("GetUserRecommendSelectMusicApi") - public String getUserRecommendSelectMusicHandler(@ModelAttribute Map request) - throws JsonProcessingException { - return getUserRecommendSelectMusicHandler.handle(request); - } - - // CardMaker APIs - @PostMapping("CMGetSellingCardApi") - String cmGetSellingCard(@ModelAttribute Map request) throws JsonProcessingException { - return cmGetSellingCardHandler.handle(request); - } - - @PostMapping("CMGetUserCardApi") - String cmGetUserCard(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCardHandler.handle(request); - } - - @PostMapping("CMGetUserCardPrintErrorApi") - String cmGetUserCardPrintError(@ModelAttribute Map request) throws JsonProcessingException { - return getUserCardPrintErrorHandler.handle(request); - } - - @PostMapping("CMGetUserCharacterApi") - String cmGetUserCharacter(@ModelAttribute Map request) throws JsonProcessingException { - return cmGetUserCharacterHandler.handle(request); - } - - @PostMapping("CMGetUserDataApi") - String cmGetUserData(@ModelAttribute Map request) throws JsonProcessingException { - return getUserDataHandler.handle(request); - } - - @PostMapping("CMGetUserItemApi") - String cmGetUserItem(@ModelAttribute Map request) throws JsonProcessingException { - return getUserItemHandler.handle(request); - } - - @PostMapping("CMGetUserPreviewApi") - String cmGetUserPreview(@ModelAttribute Map request) throws JsonProcessingException { - return cmGetUserPreviewHandler.handle(request); - } - - @PostMapping("CMLoginApi") - String cmLoginApi(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("CMLogoutApi") - String cmLogoutApi(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("CMUpsertBuyCardApi") - String cmUpsertBuyCard(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\"}"; - } - - @PostMapping("CMUpsertUserPrintApi") - String cmUpsertUserPrint(@ModelAttribute Map request) throws JsonProcessingException { - return upsertUserPrintHandler.handle(request); - } - - @PostMapping("CMUpsertUserPrintlogApi") - String cmUpsertUserPrintlog(@ModelAttribute Map request) { - return "{\"returnCode\":\"1\", \"orderId\":\"0\", \"serialId\":\"FAKECARDIMAG12345678\"}"; - } - - @PostMapping("GetUserFavoriteItemApi") - String getUserFavoriteItem(@ModelAttribute Map request) throws JsonProcessingException { - return this.getUserFavoriteItemHandler.handle(request); - } - - @PostMapping("GetUserRivalDataApi") - String getUserRivalData(@ModelAttribute Map request) throws JsonProcessingException { - return this.getUserRivalDataHandler.handle(request); - } - - @PostMapping("GetUserRivalMusicApi") - String getUserRivalMusic(@ModelAttribute Map request) throws JsonProcessingException { - return this.getUserRivalMusicHandler.handle(request); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletControllerAdvice.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletControllerAdvice.java deleted file mode 100644 index 22426ae2..00000000 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/controller/Maimai2ServletControllerAdvice.java +++ /dev/null @@ -1,38 +0,0 @@ -package icu.samnyan.aqua.sega.maimai2.controller; - -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import jakarta.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -/** - * @author samnyan (privateamusement@protonmail.com) - */ -@RestControllerAdvice(basePackages = "icu.samnyan.aqua.sega.maimai2") -public class Maimai2ServletControllerAdvice { - - private static final Logger logger = LoggerFactory.getLogger(Maimai2ServletControllerAdvice.class); - - /** - * Get the map object from json string - * - * @param request HttpServletRequest - */ - @ModelAttribute - public Map preHandle(HttpServletRequest request) throws IOException { - byte[] src = request.getInputStream().readAllBytes(); - String outputString = new String(src, StandardCharsets.UTF_8).trim(); - logger.info("Request {} : {}", request.getRequestURI(), outputString); - ObjectMapper mapper = new ObjectMapper(); - - return mapper.readValue(outputString, new TypeReference<>() { - }); - } -} diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/BaseHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/BaseHandler.java index f4f2a6c5..4c1c9d28 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/BaseHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/BaseHandler.java @@ -1,12 +1,16 @@ package icu.samnyan.aqua.sega.maimai2.handler; import com.fasterxml.jackson.core.JsonProcessingException; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.Map; /** * @author samnyan (privateamusement@protonmail.com) */ +@RestController +@RequestMapping({"/g/mai2/Maimai2Servlet/", "/g/mai2/"}) public interface BaseHandler { Object handle(Map request) throws JsonProcessingException; diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalDataHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalDataHandler.java index 8ba649e5..76bfc3e9 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalDataHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalDataHandler.java @@ -4,6 +4,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; +import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +18,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.UserDetail; import icu.samnyan.aqua.sega.util.jackson.StringMapper; @Component("Maimai2GetUserRivalDataHandler") -public class GetUserRivalDataHandler { +public class GetUserRivalDataHandler implements BaseHandler { private static final Logger logger = LoggerFactory .getLogger(icu.samnyan.aqua.sega.maimai2.handler.impl.GetUserRivalDataHandler.class); diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalMusicHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalMusicHandler.java index 89c910f1..ec34316f 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalMusicHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/GetUserRivalMusicHandler.java @@ -6,6 +6,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,7 +21,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.UserMusicDetail; import icu.samnyan.aqua.sega.util.jackson.StringMapper; @Component("Maimai2GetUserRivalMusicHandler") -public class GetUserRivalMusicHandler { +public class GetUserRivalMusicHandler implements BaseHandler { private static final Logger logger = LoggerFactory .getLogger(icu.samnyan.aqua.sega.maimai2.handler.impl.GetUserRivalMusicHandler.class); diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UpsertUserAllHandler.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UpsertUserAllHandler.java index 6de57d22..479dbbd3 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UpsertUserAllHandler.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/handler/impl/UpsertUserAllHandler.java @@ -3,7 +3,7 @@ package icu.samnyan.aqua.sega.maimai2.handler.impl; import com.fasterxml.jackson.core.JsonProcessingException; import icu.samnyan.aqua.sega.general.model.Card; import icu.samnyan.aqua.sega.general.service.CardService; -import icu.samnyan.aqua.sega.maimai.handler.BaseHandler; +import icu.samnyan.aqua.sega.maimai2.handler.BaseHandler; import icu.samnyan.aqua.sega.maimai2.model.*; import icu.samnyan.aqua.sega.maimai2.model.request.UpsertUserAll; import icu.samnyan.aqua.sega.maimai2.model.request.data.UserAll;