[maimai2] Add dx support

This commit is contained in:
Dom Eori
2021-06-16 00:37:31 +09:00
parent 235939fba3
commit 9fa2d13c98
70 changed files with 3593 additions and 4 deletions

View File

@@ -0,0 +1,245 @@
package icu.samnyan.aqua.sega.maimai2.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.maimai2.handler.impl.*;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
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("Maimai2Servlet")
public class Maimai2ServletController {
private final GetGameSettingHandler getGameSettingHandler;
private final GetGameEventHandler getGameEventHandler;
private final GetGameRankingHandler getGameRankingHandler;
private final GetGameTournamentInfoHandler getGameTournamentInfoHandler;
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;
public Maimai2ServletController(GetGameSettingHandler getGameSettingHandler, GetGameEventHandler getGameEventHandler, GetGameRankingHandler getGameRankingHandler, GetGameTournamentInfoHandler getGameTournamentInfoHandler,
GetTransferFriendHandler getTransferFriendHandler, GetUserActivityHandler getUserActivityHandler, UserLoginHandler userLoginHandler, UserLogoutHandler userLogoutHandler,
GetUserDataHandler getUserDataHandler, UpsertUserAllHandler upsertUserAllHandler, GetUserPreviewHandler getUserPreviewHandler, GetUserCharacterHandler getUserCharacterHandler,
GetUserOptionHandler getUserOptionHandler, GetUserItemHandler getUserItemHandler, GetUserExtendHandler getUserExtendHandler, GetUserGhostHandler getUserGhostHandler,
GetUserLoginBonusHandler getUserLoginBonusHandler, GetUserMapHandler getUserMapHandler, GetUserFavoriteHandler getUserFavoriteHandler,
GetUserCardHandler getUserCardHandler, GetUserMusicHandler getUserMusicHandler, GetUserRatingHandler getUserRatingHandler, GetUserRegionHandler getUserRegionHandler) {
this.getGameSettingHandler = getGameSettingHandler;
this.getGameEventHandler = getGameEventHandler;
this.getGameRankingHandler = getGameRankingHandler;
this.getGameTournamentInfoHandler = getGameTournamentInfoHandler;
this.getTransferFriendHandler = getTransferFriendHandler;
this.getUserActivityHandler = getUserActivityHandler;
this.userLoginHandler = userLoginHandler;
this.userLogoutHandler = userLogoutHandler;
this.getUserDataHandler = getUserDataHandler;
this.upsertUserAllHandler = upsertUserAllHandler;
this.getUserPreviewHandler = getUserPreviewHandler;
this.getUserCharacterHandler = getUserCharacterHandler;
this.getUserOptionHandler = getUserOptionHandler;
this.getUserItemHandler = getUserItemHandler;
this.getUserExtendHandler = getUserExtendHandler;
this.getUserGhostHandler = getUserGhostHandler;
this.getUserLoginBonusHandler = getUserLoginBonusHandler;
this.getUserMapHandler = getUserMapHandler;
this.getUserFavoriteHandler = getUserFavoriteHandler;
this.getUserCardHandler = getUserCardHandler;
this.getUserMusicHandler = getUserMusicHandler;
this.getUserRatingHandler = getUserRatingHandler;
this.getUserRegionHandler = getUserRegionHandler;
}
// Mandatory for boot
@PostMapping("GetGameEventApi")
public String getGameEvent(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameEventHandler.handle(request);
}
@PostMapping("GetGameRankingApi")
public String getGameRanking(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameRankingHandler.handle(request);
}
@PostMapping("GetGameSettingApi")
public String getGameSetting(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameSettingHandler.handle(request);
}
@PostMapping("GetGameTournamentInfoApi")
public String getGameTournamentInfoHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getGameTournamentInfoHandler.handle(request);
}
// Gameplay
@PostMapping("GetTransferFriendApi")
public String getTransferFriendHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getTransferFriendHandler.handle(request);
}
@PostMapping("GetUserActivityApi")
public String getUserActivityHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserActivityHandler.handle(request);
}
// maybe releated DX Pass? return empty
@PostMapping("GetUserCardApi")
public String getUserCardHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCardHandler.handle(request);
}
@PostMapping("GetUserCharacterApi")
public String getUserCharacterHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserCharacterHandler.handle(request);
}
@PostMapping("GetUserDataApi")
public String getUserDataHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserDataHandler.handle(request);
}
@PostMapping("GetUserExtendApi")
public String getUserExtendHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserExtendHandler.handle(request);
}
@PostMapping("GetUserFavoriteApi")
public String getUserFavoriteHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserFavoriteHandler.handle(request);
}
// No support, return empty
@PostMapping("GetUserGhostApi")
public String getUserGhostHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserGhostHandler.handle(request);
}
@PostMapping("GetUserItemApi")
public String getUserItemHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserItemHandler.handle(request);
}
@PostMapping("GetUserLoginBonusApi")
public String getUserLoginBonusHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserLoginBonusHandler.handle(request);
}
@PostMapping("GetUserMapApi")
public String getUserMapHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMapHandler.handle(request);
}
@PostMapping("GetUserMusicApi")
public String getUserMusicHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserMusicHandler.handle(request);
}
@PostMapping("GetUserOptionApi")
public String getUserOptionHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserOptionHandler.handle(request);
}
// No support
@PostMapping("GetUserPortraitApi")
public String getUserPortraitHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return "{\"length\":0,\"userPortraitList\":[]}";
}
@PostMapping("GetUserPreviewApi")
public String getUserPreviewHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserPreviewHandler.handle(request);
}
@PostMapping("GetUserRatingApi")
public String getUserRatingHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRatingHandler.handle(request);
}
// I don't know what it is. return empty
@PostMapping("GetUserRegionApi")
public String getUserRegionHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return getUserRegionHandler.handle(request);
}
// Seems only used for tournament, No Support
@PostMapping("GetUserScoreRankingApi")
public String getUserScoreRankingHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return "{}";
}
// No support
@PostMapping("UploadUserPhotoApi")
public String uploadUserPhotoHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UploadUserPhotoApi\"}";
}
@PostMapping("UploadUserPlaylogApi")
public String uploadUserPlaylogHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UploadUserPlaylogApi\"}";
}
// No support, return error code
@PostMapping("UploadUserPortraitApi")
public String uploadUserPortraitHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return "{\"returnCode\":-1,\"apiName\":\"com.sega.maimai2servlet.api.UploadUserPortraitApi\"}";
}
@PostMapping("UserLoginApi")
public String userLoginHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return userLoginHandler.handle(request);
}
@PostMapping("UserLogoutApi")
public String userLogoutHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return userLogoutHandler.handle(request);
}
@PostMapping("UpsertClientBookkeepingApi")
public String upsertClientBookkeeping(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientBookkeepingApi\"}";
}
@PostMapping("UpsertClientSettingApi")
public String upsertClientSetting(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientSettingApi\"}";
}
@PostMapping("UpsertClientTestmodeApi")
public String upsertClientTestmode(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientTestmodeApi\"}";
}
@PostMapping("UpsertClientUploadApi")
public String upsertClientUpload(@ModelAttribute Map<String, Object> request) {
return "{\"returnCode\":1,\"apiName\":\"com.sega.maimai2servlet.api.UpsertClientUploadApi\"}";
}
// Score saving
@PostMapping("UpsertUserAllApi")
public String upsertUserAllHandler(@ModelAttribute Map<String, Object> request) throws JsonProcessingException {
return upsertUserAllHandler.handle(request);
}
}

View File

@@ -0,0 +1,38 @@
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 javax.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<String, Object> 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<>() {
});
}
}