diff --git a/CMakePresets.json b/CMakePresets.json
index 7dac0e0..7159bf8 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -1,102 +1,102 @@
{
- "version": 3,
- "cmakeMinimumRequired": {
- "major": 3,
- "minor": 21,
- "patch": 0
+ "version": 3,
+ "cmakeMinimumRequired": {
+ "major": 3,
+ "minor": 21,
+ "patch": 0
+ },
+ "configurePresets": [
+ {
+ "name": "default-base",
+ "displayName": "Default basic config",
+ "description": "General basic configuration to inherit",
+ "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
+ "hidden": true
},
- "configurePresets": [
- {
- "name": "default-base",
- "displayName": "Default basic config",
- "description": "General basic configuration to inherit",
- "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
- "hidden": true
- },
- {
- "name": "default-debug",
- "displayName": "Config Debug",
- "description": "General default debug configuration",
- "inherits": "default-base",
- "cacheVariables": {
- "CMAKE_BUILD_TYPE": "Debug"
- },
- "hidden": true
- },
- {
- "name": "default-release",
- "displayName": "Config Release",
- "description": "General default release configuration",
- "inherits": "default-base",
- "cacheVariables": {
- "CMAKE_BUILD_TYPE": "RelWithDebInfo"
- },
- "hidden": true
+ {
+ "name": "default-debug",
+ "displayName": "Config Debug",
+ "description": "General default debug configuration",
+ "inherits": "default-base",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug"
+ },
+ "hidden": true
+ },
+ {
+ "name": "default-release",
+ "displayName": "Config Release",
+ "description": "General default release configuration",
+ "inherits": "default-base",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "RelWithDebInfo"
+ },
+ "hidden": true
+ },
+ {
+ "name": "debug-win64",
+ "displayName": "Development config for Windows (64-bit)",
+ "inherits": "default-debug",
+ "generator": "Visual Studio 18 2026",
+ "architecture": "x64",
+ "condition": {
+ "type": "equals",
+ "lhs": "${hostSystemName}",
+ "rhs": "Windows"
+ },
+ "cacheVariables": {
+ "GIMUSRV_FRONTEND": {
+ "type": "STRING",
+ "value": "STANDALONE"
},
- {
- "name": "debug-win64",
- "displayName": "Development config for Windows (64-bit)",
- "inherits": "default-debug",
- "generator": "Visual Studio 17 2022",
- "architecture": "x64",
- "condition": {
- "type": "equals",
- "lhs": "${hostSystemName}",
- "rhs": "Windows"
- },
- "cacheVariables": {
- "GIMUSRV_FRONTEND": {
- "type": "STRING",
- "value": "STANDALONE"
- },
- "VCPKG_TARGET_TRIPLET": {
- "type": "STRING",
- "value": "x64-windows"
- }
- }
+ "VCPKG_TARGET_TRIPLET": {
+ "type": "STRING",
+ "value": "x64-windows"
+ }
+ }
+ },
+ {
+ "name": "debug-lnx64",
+ "displayName": "Development config for Linux (64-bit)",
+ "inherits": "default-debug",
+ "generator": "Ninja",
+ "condition": {
+ "type": "equals",
+ "lhs": "${hostSystemName}",
+ "rhs": "Linux"
+ },
+ "cacheVariables": {
+ "GIMUSRV_FRONTEND": {
+ "type": "STRING",
+ "value": "STANDALONE"
},
- {
- "name": "debug-lnx64",
- "displayName": "Development config for Linux (64-bit)",
- "inherits": "default-debug",
- "generator": "Ninja",
- "condition": {
- "type": "equals",
- "lhs": "${hostSystemName}",
- "rhs": "Linux"
- },
- "cacheVariables": {
- "GIMUSRV_FRONTEND": {
- "type": "STRING",
- "value": "STANDALONE"
- },
- "VCPKG_TARGET_TRIPLET": {
- "type": "STRING",
- "value": "x64-linux"
- }
- }
+ "VCPKG_TARGET_TRIPLET": {
+ "type": "STRING",
+ "value": "x64-linux"
+ }
+ }
+ },
+ {
+ "name": "release-win32",
+ "displayName": "Deployment for Brave Frontier for Windows",
+ "inherits": "default-release",
+ "generator": "Visual Studio 18 2026",
+ "architecture": "x64",
+ "condition": {
+ "type": "equals",
+ "lhs": "${hostSystemName}",
+ "rhs": "Windows"
+ },
+ "cacheVariables": {
+ "GIMUSRV_FRONTEND": {
+ "type": "STRING",
+ "value": "PROXYAPPX"
},
- {
- "name": "release-win32",
- "displayName": "Deployment for Brave Frontier for Windows",
- "inherits": "default-release",
- "generator": "Visual Studio 17 2022",
- "architecture": "x64",
- "condition": {
- "type": "equals",
- "lhs": "${hostSystemName}",
- "rhs": "Windows"
- },
- "cacheVariables": {
- "GIMUSRV_FRONTEND": {
- "type": "STRING",
- "value": "PROXYAPPX"
- },
- "VCPKG_TARGET_TRIPLET": {
- "type": "STRING",
- "value": "x86-windows-static"
- }
- }
+ "VCPKG_TARGET_TRIPLET": {
+ "type": "STRING",
+ "value": "x86-windows-static"
}
- ]
-}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/GimuServer.slnx b/GimuServer.slnx
new file mode 100644
index 0000000..3a6b1d0
--- /dev/null
+++ b/GimuServer.slnx
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/deploy/gimuconfig.json b/deploy/gimuconfig.json
index 96e9798..386c107 100644
--- a/deploy/gimuconfig.json
+++ b/deploy/gimuconfig.json
@@ -3,10 +3,10 @@
"content_root": "./game_content",
"gme_sqlite_path": "./gme.sqlite",
"session_timeout": 1200,
- "mst_root": "./system" // "./system"
+ "mst_root": "./system"
},
"server": {
- "wallpaper_banner": "/wallpaper/title_logo20151028.jpg", // title_logo20160401
+ "wallpaper_banner": "/wallpaper/title_logo20151028.jpg",
"game_version": 21900,
"notice_url": "http://ios21900.bfww.gumi.sg/pages/versioninfo"
},
diff --git a/gimuserver/core/System.cpp b/gimuserver/core/System.cpp
index b43d869..77ad214 100644
--- a/gimuserver/core/System.cpp
+++ b/gimuserver/core/System.cpp
@@ -3,46 +3,136 @@
#include
#include
#include
+#include
void System::LoadSystemConfig(const std::string& p)
{
- std::ifstream ifs;
- ifs.open(p);
+ std::ifstream ifs;
+ ifs.open(p);
- if (!ifs.is_open())
- throw std::runtime_error("gimuconfig.json: not found");
+ if (!ifs.is_open())
+ throw std::runtime_error("gimuconfig.json: not found");
- Json::CharReaderBuilder rb;
- JSONCPP_STRING jss;
- Json::Value root;
- if (!Json::parseFromStream(rb, ifs, &root, &jss))
- throw std::runtime_error("gimuconfig.json: parse error");
+ Json::CharReaderBuilder rb;
+ JSONCPP_STRING jss;
+ Json::Value root;
+ if (!Json::parseFromStream(rb, ifs, &root, &jss))
+ throw std::runtime_error("gimuconfig.json: parse error");
- const auto& sys = root["system"];
- const auto& srv = root["server"];
- const auto& log = root["log"];
+ const auto& sys = root["system"];
+ const auto& srv = root["server"];
+ const auto& log = root["log"];
- m_serverCfg.ParseFromJson(srv);
- m_logCfg.ParseFromJson(log);
+ m_serverCfg.ParseFromJson(srv);
+ m_logCfg.ParseFromJson(log);
- ParseSystemConfig(sys);
+ ParseSystemConfig(sys);
- std::filesystem::create_directory(m_logCfg.RequestPath);
- std::filesystem::create_directory(m_logCfg.ResponsePath);
+ std::filesystem::create_directory(m_logCfg.RequestPath);
+ std::filesystem::create_directory(m_logCfg.ResponsePath);
}
void System::ParseSystemConfig(const Json::Value& v)
{
- m_contentRoot = v["content_root"].asString();
- m_dbPath = v["gme_sqlite_path"].asString();
- m_sessionTimeout = size_t(v["session_timeout"].asUInt64());
+ m_contentRoot = v["content_root"].asString();
+ m_dbPath = v["gme_sqlite_path"].asString();
+ m_sessionTimeout = size_t(v["session_timeout"].asUInt64());
- m_mstConfig.LoadAllTables(v["mst_root"].asString());
+ m_mstConfig.LoadAllTables(v["mst_root"].asString());
}
void System::RunMigrations(drogon::orm::DbClientPtr p)
{
- m_mg.RunMigrations(p);
+ m_mg.RunMigrations(p);
}
-System System::m_sys;
+void System::ResolveActiveUser(drogon::orm::DbClientPtr db)
+{
+ try
+ {
+ auto result = db->execSqlSync("SELECT id, username FROM users LIMIT 1;");
+ if (!result.empty())
+ {
+ m_activeUserID = result[0]["id"].as();
+ std::string username = result[0]["username"].as();
+ LOG_INFO << "System::ResolveActiveUser: active user -> '"
+ << username << "' (id=" << m_activeUserID << ")";
+ }
+ else
+ {
+ LOG_WARN << "System::ResolveActiveUser: no users in DB yet. "
+ << "Launch the game client once to create an account, "
+ << "then restart the server.";
+ }
+ }
+ catch (const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "System::ResolveActiveUser: DB error: " << e.base().what();
+ }
+}
+
+void System::DevValidateAndSeedUnits(drogon::orm::DbClientPtr db)
+{
+#if !DEV_SKIP_TUTORIAL
+ return;
+#else
+ const size_t expectedCount = ALL_UNIT_IDS.size();
+
+ LOG_INFO << "System::DevValidateAndSeedUnits: checking existing users "
+ << "(expecting " << expectedCount << " units each)";
+
+ try
+ {
+ auto users = db->execSqlSync("SELECT id FROM users;");
+
+ if (users.empty())
+ {
+ LOG_INFO << "System::DevValidateAndSeedUnits: no existing users, nothing to do.";
+ return;
+ }
+
+ for (const auto& row : users)
+ {
+ const std::string userId = row["id"].as();
+
+ auto countResult = db->execSqlSync(
+ "SELECT COUNT(*) FROM user_units WHERE user_id = $1;", userId);
+
+ const size_t have = countResult[0][0].as();
+
+ if (have >= expectedCount)
+ {
+ LOG_DEBUG << "System::DevValidateAndSeedUnits: user " << userId
+ << " already has " << have << " units, skipping.";
+ continue;
+ }
+
+ LOG_INFO << "System::DevValidateAndSeedUnits: user " << userId
+ << " has " << have << "/" << expectedCount << " units - seeding.";
+
+ for (const auto& unitId : ALL_UNIT_IDS)
+ {
+ try
+ {
+ db->execSqlSync(
+ "INSERT OR IGNORE INTO user_units (user_id, unit_id) VALUES ($1, $2);",
+ userId, unitId);
+ }
+ catch (const drogon::orm::DrogonDbException& e)
+ {
+ LOG_WARN << "System::DevValidateAndSeedUnits: failed to insert unit "
+ << unitId << " for " << userId << ": " << e.base().what();
+ }
+ }
+
+ LOG_INFO << "System::DevValidateAndSeedUnits: finished seeding user " << userId;
+ }
+ }
+ catch (const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "System::DevValidateAndSeedUnits: DB error: " << e.base().what();
+ }
+#endif
+}
+
+System System::m_sys;
\ No newline at end of file
diff --git a/gimuserver/core/System.hpp b/gimuserver/core/System.hpp
index 016238b..fb8065a 100644
--- a/gimuserver/core/System.hpp
+++ b/gimuserver/core/System.hpp
@@ -10,33 +10,45 @@
class System final
{
public:
- static System& Instance() { return m_sys; }
-
- void LoadSystemConfig(const std::string& path);
- void RunMigrations(drogon::orm::DbClientPtr ptr);
-
- // "system"
- const auto& GetContentRootPath() const { return m_contentRoot; }
- const auto& GetDbPath() const { return m_dbPath; }
- const auto& GetSessionTimeout() const { return m_sessionTimeout; }
- // "mst"
- const auto& MstConfig() const { return m_mstConfig; }
- // "server"
- const auto& ServerConfig() { return m_serverCfg; }
- // "log"
- const auto& LogConfig() const { return m_logCfg; }
+ static System& Instance() { return m_sys; }
+
+ void LoadSystemConfig(const std::string& path);
+ void RunMigrations(drogon::orm::DbClientPtr ptr);
+ void DevValidateAndSeedUnits(drogon::orm::DbClientPtr ptr);
+
+ // Queries the users table for the first real account and caches the ID.
+ // Called once at startup after RunMigrations. GmeController reads this
+ // via GetActiveUserID() instead of using any compile-time constant.
+ void ResolveActiveUser(drogon::orm::DbClientPtr ptr);
+
+ // Returns the cached user ID resolved by ResolveActiveUser().
+ // Empty string if ResolveActiveUser() has not run yet or the DB has no users.
+ const std::string& GetActiveUserID() const { return m_activeUserID; }
+ void SetActiveUserID(const std::string& id) { m_activeUserID = id; }
+
+ // "system"
+ const auto& GetContentRootPath() const { return m_contentRoot; }
+ const auto& GetDbPath() const { return m_dbPath; }
+ const auto& GetSessionTimeout() const { return m_sessionTimeout; }
+ // "mst"
+ const auto& MstConfig() const { return m_mstConfig; }
+ // "server"
+ const auto& ServerConfig() { return m_serverCfg; }
+ // "log"
+ const auto& LogConfig() const { return m_logCfg; }
private:
- void ParseSystemConfig(const Json::Value& v);
+ void ParseSystemConfig(const Json::Value& v);
- std::string m_contentRoot;
- std::string m_dbPath;
- size_t m_sessionTimeout;
+ std::string m_contentRoot;
+ std::string m_dbPath;
+ size_t m_sessionTimeout;
+ std::string m_activeUserID; // set by ResolveActiveUser()
- ::ServerConfig m_serverCfg;
- ::MstConfig m_mstConfig;
- ::LogConfig m_logCfg;
- MigrationManager m_mg;
+ ::ServerConfig m_serverCfg;
+ ::MstConfig m_mstConfig;
+ ::LogConfig m_logCfg;
+ MigrationManager m_mg;
- static System m_sys; // SINGLETON!!!!
-};
+ static System m_sys;
+};
\ No newline at end of file
diff --git a/gimuserver/db/migrations/CreateUserUnitsTable.hpp b/gimuserver/db/migrations/CreateUserUnitsTable.hpp
index 038d648..b491745 100644
--- a/gimuserver/db/migrations/CreateUserUnitsTable.hpp
+++ b/gimuserver/db/migrations/CreateUserUnitsTable.hpp
@@ -4,27 +4,34 @@
#include "../DbMacro.hpp"
MIGRATION_NS_BEGIN
+
struct CreateUserUnitsTable : public IMigration
{
- virtual void execute(drogon::orm::DbClientPtr p) override
+ void execute(drogon::orm::DbClientPtr db) override
{
- p->execSqlSync(
- "CREATE TABLE IF NOT EXISTS user_units ("
- "user_id TEXT NOT NULL,"
- "unit_id TEXT NOT NULL,"
- "name TEXT NOT NULL,"
- "rarity INTEGER NOT NULL,"
- "element TEXT NOT NULL,"
- "stats TEXT NOT NULL,"
- "bb TEXT NOT NULL,"
- "leader_skill TEXT,"
- "ai TEXT,"
- "data TEXT NOT NULL,"
- "PRIMARY KEY (user_id, unit_id)"
- ");"
+ db->execSqlSync(R"(
+ CREATE TABLE IF NOT EXISTS user_units (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ user_id TEXT NOT NULL,
+ unit_id TEXT NOT NULL,
+ UNIQUE(user_id, unit_id)
+ );
+ )");
+
+ // The game client uses user_units.id as the in-game unit instance
+ // identifier. IDs starting from 1 cause a client crash — the safe
+ // minimum observed in captured traffic is ~10407.
+ // Inserting and immediately deleting a sentinel row bumps the
+ // AUTOINCREMENT sequence to 10000 so all seeded units get ids >= 10001.
+ db->execSqlSync(
+ "INSERT INTO user_units (id, user_id, unit_id) VALUES (10000, '__sentinel__', '__sentinel__');"
+ );
+ db->execSqlSync(
+ "DELETE FROM user_units WHERE user_id = '__sentinel__';"
);
}
- const char* getName() const override { return "08032025_CreateUserUnitsTable"; } // Unique migration name with date
+ const char* getName() const override { return "08032025_CreateUserUnitsTable"; }
};
+
MIGRATION_NS_END
\ No newline at end of file
diff --git a/gimuserver/gme/GmeController.cpp b/gimuserver/gme/GmeController.cpp
index 5453873..412cc94 100644
--- a/gimuserver/gme/GmeController.cpp
+++ b/gimuserver/gme/GmeController.cpp
@@ -3,111 +3,152 @@
#include "GmeTypes.hpp"
#include "core/BfCrypt.hpp"
#include "core/Utils.hpp"
+#include "core/System.hpp"
#include "gme/response/FeatureCheck.hpp"
+#include
GmeController::GmeController()
{
- InitializeHandlers();
+ InitializeHandlers();
}
void GmeController::HandleGame(const HttpRequestPtr& rq, std::function&& callback)
{
- Json::Reader r;
- Json::Value root;
-
- auto err = r.parse(rq->getBody().data(), root);
- if (!err)
- {
- LOG_ERROR << "Cannot decode gme request: " << r.getFormatedErrorMessages();
- callback(HttpResponse::newNotFoundResponse()); // TODO: change this to a 500 page error along with DC
- return;
- }
-
- auto header = root[GME_HEADER];
-
- if (header.isNull())
- {
- LOG_ERROR << "Invalid gme header";
- callback(HttpResponse::newNotFoundResponse()); // TODO: change this to a 500 page error along with DC
- return;
- }
-
- auto reqid = header[HEADER_REQUEST_ID];
-
- if (!reqid.isString())
- {
- LOG_ERROR << "Invalid gme request_id";
- callback(HttpResponse::newNotFoundResponse()); // TODO: change this to a 500 page error along with DC
- return;
- }
-
- std::string encReq = reqid.asCString();
-
- auto it = m_handlers.find(encReq);
-
- if (it == m_handlers.end())
- {
- callback(newGmeErrorResponse(encReq, ErrorID::Yes, ErrorOperation::Close, "Unsupported request! Please report this error with the following information:\nRequest:" + encReq));
- return;
- }
-
- const auto& q = *it->second;
-
- auto body = root[GME_BODY];
- Json::Value bodyJson;
-
- if (!body.isNull())
- {
- auto enc_json = body[BODY_JSON];
- if (enc_json.isString())
- {
- BfCrypt::DecryptGME(enc_json.asCString(), q.GetAesKey(), bodyJson);
-
- if (bodyJson.isNull())
- {
- callback(newGmeErrorResponse(encReq, ErrorID::Yes, ErrorOperation::Close, "Unsupported decrypt key! Please report this error with the following information:\nRequest:" + encReq));
- return;
- }
- }
- }
-
- Utils::AppendJsonReqToFile(bodyJson, q.GetGroupId());
-
- // NOTE: in a real server this shouldn't happen
- if (m_users.empty())
- {
- UserInfo ui;
- ui.info.userID = HARDCODE_USERID;
- m_users.insert_or_assign(ui.info.userID, ui);
- }
- auto& user = m_users[HARDCODE_USERID];
-
- q.Handle(user, callback, bodyJson);
+ Json::Reader r;
+ Json::Value root;
+
+ auto err = r.parse(rq->getBody().data(), root);
+ if (!err)
+ {
+ LOG_ERROR << "Cannot decode gme request: " << r.getFormatedErrorMessages();
+ callback(HttpResponse::newNotFoundResponse());
+ return;
+ }
+
+ auto header = root[GME_HEADER];
+ if (header.isNull())
+ {
+ LOG_ERROR << "Invalid gme header";
+ callback(HttpResponse::newNotFoundResponse());
+ return;
+ }
+
+ auto reqid = header[HEADER_REQUEST_ID];
+ if (!reqid.isString())
+ {
+ LOG_ERROR << "Invalid gme request_id";
+ callback(HttpResponse::newNotFoundResponse());
+ return;
+ }
+
+ std::string encReq = reqid.asCString();
+
+ auto it = m_handlers.find(encReq);
+ if (it == m_handlers.end())
+ {
+ callback(newGmeErrorResponse(encReq, ErrorID::Yes, ErrorOperation::Close,
+ "Unsupported request! Please report this error with the following information:\nRequest:" + encReq));
+ return;
+ }
+
+ const auto& q = *it->second;
+
+ auto body = root[GME_BODY];
+ Json::Value bodyJson;
+
+ if (!body.isNull())
+ {
+ auto enc_json = body[BODY_JSON];
+ if (enc_json.isString())
+ {
+ BfCrypt::DecryptGME(enc_json.asCString(), q.GetAesKey(), bodyJson);
+ if (bodyJson.isNull())
+ {
+ callback(newGmeErrorResponse(encReq, ErrorID::Yes, ErrorOperation::Close,
+ "Unsupported decrypt key! Please report this error with the following information:\nRequest:" + encReq));
+ return;
+ }
+ }
+ }
+
+ Utils::AppendJsonReqToFile(bodyJson, q.GetGroupId());
+
+ // Fast path — user already resolved from a previous request or startup.
+ const std::string& cachedID = System::Instance().GetActiveUserID();
+ if (!cachedID.empty())
+ {
+ DispatchToUser(cachedID, q, callback, bodyJson);
+ return;
+ }
+
+ // Slow path — fresh install: DB was empty at startup so ResolveActiveUser
+ // found nothing. HandleGuest has since created the account; query it now,
+ // cache it, and dispatch. All subsequent requests take the fast path.
+ LOG_INFO << "GmeController: active user not cached, resolving from DB for request " << encReq;
+
+ GME_DB->execSqlAsync(
+ "SELECT id FROM users LIMIT 1;",
+ [this, &q, callback, bodyJson](const drogon::orm::Result& result)
+ {
+ if (result.empty())
+ {
+ // HandleGuest hasn't finished yet — client should retry.
+ LOG_WARN << "GmeController: no user in DB yet during lazy resolve.";
+ callback(newGmeErrorResponse(q.GetGroupId(), ErrorID::Yes, ErrorOperation::Close,
+ "Account is still being created, please try again in a moment."));
+ return;
+ }
+
+ const std::string resolvedID = result[0]["id"].as();
+ LOG_INFO << "GmeController: lazily resolved user id=" << resolvedID;
+ System::Instance().SetActiveUserID(resolvedID);
+ DispatchToUser(resolvedID, q, callback, bodyJson);
+ },
+ [&q, callback](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "GmeController: DB error during lazy user resolve: " << e.base().what();
+ callback(newGmeErrorResponse(q.GetGroupId(), ErrorID::Yes, ErrorOperation::Close,
+ "Internal server error during user resolution."));
+ }
+ );
+}
+
+void GmeController::DispatchToUser(const std::string& userId,
+ const Handler::HandlerBase& handler,
+ Handler::DrogonCallback callback,
+ const Json::Value& bodyJson)
+{
+ if (m_users.find(userId) == m_users.end())
+ {
+ UserInfo ui;
+ ui.info.userID = userId;
+ m_users.insert_or_assign(userId, ui);
+ }
+ handler.Handle(m_users[userId], callback, bodyJson);
}
void GmeController::HandleFeatureCheck(const HttpRequestPtr& rq, std::function&& callback)
{
- // note: drogon should already cache this
- Json::Value v;
- Response::FeatureCheck c;
- c.Serialize(v);
- callback(HttpResponse::newHttpJsonResponse(v));
+ Json::Value v;
+ Response::FeatureCheck c;
+ c.Serialize(v);
+ callback(HttpResponse::newHttpJsonResponse(v));
}
void GmeController::HandleServerTime(const HttpRequestPtr& rq, std::function&& callback)
{
- auto p = HttpResponse::newHttpResponse();
- p->setStatusCode(k200OK);
- p->setContentTypeCode(CT_TEXT_HTML);
- p->setBody(std::to_string(trantor::Date::date().secondsSinceEpoch()));
- callback(p);
+ auto p = HttpResponse::newHttpResponse();
+ p->setStatusCode(k200OK);
+ p->setContentTypeCode(CT_TEXT_HTML);
+ p->setBody(std::to_string(trantor::Date::date().secondsSinceEpoch()));
+ callback(p);
}
void GmeController::HandleDailyLogin(const HttpRequestPtr& rq, std::function&& callback)
{
- auto p = HttpResponse::newHttpResponse();
- p->setStatusCode(k200OK);
- p->setContentTypeCode(CT_APPLICATION_JSON);
- p->setBody("W3siUFJFU0VOVF9UWVBFIjoiMiIsIlBSRVNFTlRfSUQiOiIwIiwiUFJFU0VOVF9DTlQiOiIyMDAiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9LHsiUFJFU0VOVF9UWVBFIjoiMyIsIlBSRVNFTlRfSUQiOiIwIiwiUFJFU0VOVF9DTlQiOiIxMDAwMCIsIlJFV0FSRCI6ZmFsc2UsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjEwMjAzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjYiLCJQUkVTRU5UX0lEIjoiMjAyMDMiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9LHsiUFJFU0VOVF9UWVBFIjoiNiIsIlBSRVNFTlRfSUQiOiIzMDIwMyIsIlBSRVNFTlRfQ05UIjoiMSIsIlJFV0FSRCI6ZmFsc2UsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjQwMjAzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjYiLCJQUkVTRU5UX0lEIjoiNTAyMDMiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOnRydWUsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjYwMTMzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjUiLCJQUkVTRU5UX0lEIjoiMjI0MDAiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9XQ==");
- callback(p);
-}
+ auto p = HttpResponse::newHttpResponse();
+ p->setStatusCode(k200OK);
+ p->setContentTypeCode(CT_APPLICATION_JSON);
+ p->setBody("W3siUFJFU0VOVF9UWVBFIjoiMiIsIlBSRVNFTlRfSUQiOiIwIiwiUFJFU0VOVF9DTlQiOiIyMDAiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9LHsiUFJFU0VOVF9UWVBFIjoiMyIsIlBSRVNFTlRfSUQiOiIwIiwiUFJFU0VOVF9DTlQiOiIxMDAwMCIsIlJFV0FSRCI6ZmFsc2UsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjEwMjAzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjYiLCJQUkVTRU5UX0lEIjoiMjAyMDMiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9LHsiUFJFU0VOVF9UWVBFIjoiNiIsIlBSRVNFTlRfSUQiOiIzMDIwMyIsIlBSRVNFTlRfQ05UIjoiMSIsIlJFV0FSRCI6ZmFsc2UsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjQwMjAzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjYiLCJQUkVTRU5UX0lEIjoiNTAyMDMiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOnRydWUsIkdST1VQX1RZUEUiOiIxIiwiREFZU19MRUZUX1RPX0dFTSI6NH0seyJQUkVTRU5UX1RZUEUiOiI2IiwiUFJFU0VOVF9JRCI6IjYwMTMzIiwiUFJFU0VOVF9DTlQiOiIxIiwiUkVXQVJEIjpmYWxzZSwiR1JPVVBfVFlQRSI6IjEiLCJEQVlTX0xFRlRfVE9fR0VNIjo0fSx7IlBSRVNFTlRfVFlQRSI6IjUiLCJQUkVTRU5UX0lEIjoiMjI0MDAiLCJQUkVTRU5UX0NOVCI6IjEiLCJSRVdBUkQiOmZhbHNlLCJHUk9VUF9UWVBFIjoiMSIsIkRBWVNfTEVGVF9UT19HRU0iOjR9XQ==");
+ callback(p);
+}
\ No newline at end of file
diff --git a/gimuserver/gme/GmeController.hpp b/gimuserver/gme/GmeController.hpp
index f37ff6a..89a096e 100644
--- a/gimuserver/gme/GmeController.hpp
+++ b/gimuserver/gme/GmeController.hpp
@@ -13,25 +13,32 @@ using namespace drogon;
class GmeController : public drogon::HttpController
{
public:
- GmeController();
+ GmeController();
- void HandleGame(const HttpRequestPtr& rq, std::function&& callback);
- void HandleFeatureCheck(const HttpRequestPtr& rq, std::function&& callback);
- void HandleServerTime(const HttpRequestPtr& rq, std::function&& callback);
- void HandleDailyLogin(const HttpRequestPtr& rq, std::function&& callback);
+ void HandleGame(const HttpRequestPtr& rq, std::function&& callback);
+ void HandleFeatureCheck(const HttpRequestPtr& rq, std::function&& callback);
+ void HandleServerTime(const HttpRequestPtr& rq, std::function&& callback);
+ void HandleDailyLogin(const HttpRequestPtr& rq, std::function&& callback);
- METHOD_LIST_BEGIN
- ADD_METHOD_TO(GmeController::HandleGame, "/bf/gme/action.php", Post);
- ADD_METHOD_TO(GmeController::HandleFeatureCheck, "/bf/gme/featureCheck.php", Get);
- ADD_METHOD_TO(GmeController::HandleServerTime, "/bf/gme/action/getServerTime.php", Get);
- ADD_METHOD_TO(GmeController::HandleDailyLogin, "/bf/gme/action/Daily_login.php", Post);
- METHOD_LIST_END
+ METHOD_LIST_BEGIN
+ ADD_METHOD_TO(GmeController::HandleGame, "/bf/gme/action.php", Post);
+ ADD_METHOD_TO(GmeController::HandleFeatureCheck, "/bf/gme/featureCheck.php", Get);
+ ADD_METHOD_TO(GmeController::HandleServerTime, "/bf/gme/action/getServerTime.php", Get);
+ ADD_METHOD_TO(GmeController::HandleDailyLogin, "/bf/gme/action/Daily_login.php", Post);
+ METHOD_LIST_END
private:
- void InitializeHandlers();
-
- inline void InitializeHandler(std::shared_ptr&& p) { m_handlers.insert_or_assign(p->GetGroupId(), p); }
-
- std::unordered_map> m_handlers;
- std::unordered_map m_users;
-};
+ void InitializeHandlers();
+ inline void InitializeHandler(std::shared_ptr&& p)
+ {
+ m_handlers.insert_or_assign(p->GetGroupId(), p);
+ }
+
+ void DispatchToUser(const std::string& userId,
+ const Handler::HandlerBase& handler,
+ Handler::DrogonCallback callback,
+ const Json::Value& bodyJson);
+
+ std::unordered_map> m_handlers;
+ std::unordered_map m_users;
+};
\ No newline at end of file
diff --git a/gimuserver/gme/GmeController_Handlers.cpp b/gimuserver/gme/GmeController_Handlers.cpp
index b9acaef..5a1b974 100644
--- a/gimuserver/gme/GmeController_Handlers.cpp
+++ b/gimuserver/gme/GmeController_Handlers.cpp
@@ -1,27 +1,563 @@
+//#include "handlers/NgwordCheckRequestHandler.hpp"
+//#include "handlers/CreateUserRequestHandler.hpp"
+//#include "handlers/InitializeRequestHandler.hpp"
+//#include "handlers/TutorialUpdateRequestHandler.hpp"
+//#include "handlers/URLMstRequestHandler.hpp"
#include "GmeController.hpp"
-#include "handlers/InitializeHandler.hpp"
-#include "handlers/UserInfoHandler.hpp"
-#include "handlers/FriendGetHandler.hpp"
-#include "handlers/HomeInfoHandler.hpp"
-#include "handlers/BadgeInfoHandler.hpp"
-#include "handlers/ControlCenterEnterHandler.hpp"
-#include "handlers/UpdateInfoLightHandler.hpp"
-#include "handlers/GatchaListHandler.hpp"
-#include "handlers/DeckEditHandler.hpp"
-#include "handlers/MissionStartHandler.hpp"
+#include "handlers/BundlePurchaseRequestHandler.hpp"
+#include "handlers/BundleCategoryRefreshRequestHandler.hpp"
+#include "handlers/BundlePurchaseIapRequestHandler.hpp"
+#include "handlers/SummonerJournalTaskRewardsRequestHandler.hpp"
+#include "handlers/SummonerJournalInfoRequestHandler.hpp"
+#include "handlers/SummonerJournalMilestoneRewardsRequestHandler.hpp"
+#include "handlers/ChallengeArenaStartRequestHandler.hpp"
+#include "handlers/ChallengeArenaShopAddItemRequestHandler.hpp"
+#include "handlers/ChallengeArenaShopInfoRequestHandler.hpp"
+#include "handlers/ChallengeArenaResetInfoRequestHandler.hpp"
+#include "handlers/ChallengeArenaTChestReceivedRequestHandler.hpp"
+#include "handlers/ChallengeArenaRankingRequestHandler.hpp"
+#include "handlers/ChallengeArenaRankingRewardRequestHandler.hpp"
+#include "handlers/ChallengeArenaBattleEndRequestHandler.hpp"
+#include "handlers/ChallengeArenaTeamEditRequestHandler.hpp"
+#include "handlers/ChallengeArenaBattleStartRequestHandler.hpp"
+#include "handlers/DailyRewardClaimRequestHandler.hpp"
+#include "handlers/TierTourneyClaimRewardRequestHandler.hpp"
+#include "handlers/TierTourneyFriendListRequestHandler.hpp"
+#include "handlers/TierTourneyRewardMstRequestHandler.hpp"
+#include "handlers/UserTournamentInfoRequestHandler.hpp"
+#include "handlers/VortexArenaTopRequestHandler.hpp"
+#include "handlers/VortexArenaBattleStartRequestHandler.hpp"
+#include "handlers/VortexArenaMatchingRequestHandler.hpp"
+#include "handlers/VortexArenaBattleEndRequestHandler.hpp"
+#include "handlers/VortexArenaRetireRequestHandler.hpp"
+#include "handlers/VortexArenaLeaderboardRequestHandler.hpp"
+#include "handlers/VortexArenaClaimDailyRequestHandler.hpp"
+#include "handlers/VortexArenaClaimRequestHandler.hpp"
+#include "handlers/DailyTaskClaimRewardRequestHandler.hpp"
+#include "handlers/AchievementAcceptRequestHandler.hpp"
+#include "handlers/AchievementDeliverRequestHandler.hpp"
+#include "handlers/AchievementRewardReceiveRequestHandler.hpp"
+#include "handlers/AchievementTradeRequestHandler.hpp"
+#include "handlers/AreaRequestHandler.hpp"
+#include "handlers/ArenaBattleEndRequestHandler.hpp"
+#include "handlers/ArenaBattleRestartRequestHandler.hpp"
+#include "handlers/ArenaBattleStartRequestHandler.hpp"
+#include "handlers/ArenaFriendListRequestHandler.hpp"
+#include "handlers/ArenaInfoRequestHandler.hpp"
+#include "handlers/ArenaMatchingRequestHandler.hpp"
+#include "handlers/ArenaRetireRequestHandler.hpp"
+#include "handlers/ArenaStartRequestHandler.hpp"
+#include "handlers/BadgeInfoRequestHandler.hpp"
+#include "handlers/BuyCoinRequestHandler.hpp"
+#include "handlers/BuyCoinStartRequestHandler.hpp"
+#include "handlers/CampaignReceiptRequestHandler.hpp"
+#include "handlers/ChallengeBaseRequestHandler.hpp"
+#include "handlers/ChallengeMissionStartRequestHandler.hpp"
+#include "handlers/ChallengeRankRewardRequestHandler.hpp"
+#include "handlers/ChallengeRankingRequestHandler.hpp"
+#include "handlers/ChallengeStartRequestHandler.hpp"
+#include "handlers/ChallengeUserInfoRequestHandler.hpp"
+#include "handlers/ChronologyRequestHandler.hpp"
+#include "handlers/ControlCenterEnterRequestHandler.hpp"
+#include "handlers/DebugUpdateRequestHandler.hpp"
+#include "handlers/DeckEditRequestHandler.hpp"
+#include "handlers/DungeonEventUpdateRequestHandler.hpp"
+#include "handlers/DungeonKeyReceiptRequestHandler.hpp"
+#include "handlers/DungeonKeyUseRequestHandler.hpp"
+#include "handlers/FixGiftInfoRequestHandler.hpp"
+#include "handlers/FriendAgreeRequestHandler.hpp"
+#include "handlers/FriendApplyRequestHandler.hpp"
+#include "handlers/FriendDeleteRequestHandler.hpp"
+#include "handlers/FriendFavoriteRequestHandler.hpp"
+#include "handlers/FriendGetAgreeRequestHandler.hpp"
+#include "handlers/FriendGetRequestHandler.hpp"
+#include "handlers/FriendRandomSearchRequestHandler.hpp"
+#include "handlers/FriendRefuseRequestHandler.hpp"
+#include "handlers/FriendSearchRequestHandler.hpp"
+#include "handlers/GachaActionRequestHandler.hpp"
+#include "handlers/GachaFixActionRequestHandler.hpp"
+#include "handlers/GachaListRequestHandler.hpp"
+#include "handlers/GetAchievementInfoRequestHandler.hpp"
+#include "handlers/GetDistributeDungeonKeyInfoRequestHandler.hpp"
+#include "handlers/GetGiftInfoRequestHandler.hpp"
+#include "handlers/GetPlayerInfoRequestHandler.hpp"
+#include "handlers/GetScenarioPlayingInfoRequestHandler.hpp"
+#include "handlers/GetUserInfoRequestHandler.hpp"
+#include "handlers/InitializeRequest2Handler.hpp"
+#include "handlers/InvitationReceiptRequestHandler.hpp"
+#include "handlers/ItemEditRequestHandler.hpp"
+#include "handlers/ItemFavoriteRequestHandler.hpp"
+#include "handlers/ItemMixRequestHandler.hpp"
+#include "handlers/ItemSellRequestHandler.hpp"
+#include "handlers/ItemSphereEqpRequestHandler.hpp"
+#include "handlers/ItemUseTimeLimitRequestHandler.hpp"
+#include "handlers/MissionContinueRequestHandler.hpp"
+#include "handlers/MissionEndRequestHandler.hpp"
+#include "handlers/MissionRestartRequestHandler.hpp"
+#include "handlers/MissionStartRequestHandler.hpp"
+#include "handlers/NoticeListRequestHandler.hpp"
+#include "handlers/NoticeReadUpdateRequestHandler.hpp"
+#include "handlers/NoticeUpdateRequestHandler.hpp"
+#include "handlers/PresentListRequestHandler.hpp"
+#include "handlers/PresentReceiptRequestHandler.hpp"
+#include "handlers/SPChallengeMissionStartRequestHandler.hpp"
+#include "handlers/SPChallengeRankingRequestHandler.hpp"
+#include "handlers/SPChallengeUserInfoRequestHandler.hpp"
+#include "handlers/SetPurchaseInfoRequestHandler.hpp"
+#include "handlers/ShopUseRequestHandler.hpp"
+#include "handlers/TieupCampaignInfoRequestHandler.hpp"
+#include "handlers/TownFacilityUpdateRequestHandler.hpp"
+#include "handlers/TownUpdateRequestHandler.hpp"
+#include "handlers/TransferCodeCheckRequestHandler.hpp"
+#include "handlers/TransferCodeIssueRequestHandler.hpp"
+#include "handlers/TransferRequestHandler.hpp"
+#include "handlers/TrialDeckEditRequestHandler.hpp"
+#include "handlers/TrialDeckGetRequestHandler.hpp"
+#include "handlers/UnitEvoRequestHandler.hpp"
+#include "handlers/UnitFavoriteRequestHandler.hpp"
+#include "handlers/UnitMixRequestHandler.hpp"
+#include "handlers/UnitSellRequestHandler.hpp"
+#include "handlers/UpdateEventInfoRequestHandler.hpp"
+#include "handlers/UpdateInfoLightRequestHandler.hpp"
+#include "handlers/UpdateInfoRequestHandler.hpp"
+#include "handlers/UpdatePermitPlaceInfoRequestHandler.hpp"
+#include "handlers/CampaignBattleEndRequestHandler.hpp"
+#include "handlers/CampaignBattleStartRequestHandler.hpp"
+#include "handlers/CampaignDeckEditRequestHandler.hpp"
+#include "handlers/CampaignDeckGetRequestHandler.hpp"
+#include "handlers/CampaignEndRequestHandler.hpp"
+#include "handlers/CampaignItemEditRequestHandler.hpp"
+#include "handlers/CampaignMissionGetRequestHandler.hpp"
+#include "handlers/CampaignRestartRequestHandler.hpp"
+#include "handlers/CampaignSaveRequestHandler.hpp"
+#include "handlers/CampaignStartRequestHandler.hpp"
+#include "handlers/ColosseumBattleEndRequestHandler.hpp"
+#include "handlers/ColosseumBattleRestartRequestHandler.hpp"
+#include "handlers/ColosseumBattleStartRequestHandler.hpp"
+#include "handlers/ColosseumDeckEditRequestHandler.hpp"
+#include "handlers/ColosseumFriendListRequestHandler.hpp"
+#include "handlers/ColosseumGetRewardInfoRequestHandler.hpp"
+#include "handlers/ColosseumRewardReceiptRequestHandler.hpp"
+#include "handlers/FrontierGateContinueRequestHandler.hpp"
+#include "handlers/FrontierGateEndRequestHandler.hpp"
+#include "handlers/FrontierGateInfoRequestHandler.hpp"
+#include "handlers/FrontierGateRankingRequestHandler.hpp"
+#include "handlers/FrontierGateRestartRequestHandler.hpp"
+#include "handlers/FrontierGateRetryRequestHandler.hpp"
+#include "handlers/FrontierGateSaveRequestHandler.hpp"
+#include "handlers/FrontierGateStartRequestHandler.hpp"
+#include "handlers/MinigameCardEndRequestHandler.hpp"
+#include "handlers/MinigameFriendListRequestHandler.hpp"
+#include "handlers/MinigameNameEntryRequestHandler.hpp"
+#include "handlers/MinigameRankingInfoRequestHandler.hpp"
+#include "handlers/MinigameSmashEndRequestHandler.hpp"
+#include "handlers/MinigameStartRequestHandler.hpp"
+#include "handlers/RaidAgreementRequestHandler.hpp"
+#include "handlers/RaidCampRestEndRequestHandler.hpp"
+#include "handlers/RaidCampRestGetRequestHandler.hpp"
+#include "handlers/RaidCampRestStartRequestHandler.hpp"
+#include "handlers/RaidEnterRequestHandler.hpp"
+#include "handlers/RaidExitRequestHandler.hpp"
+#include "handlers/RaidFrlendSelectRequestHandler.hpp"
+#include "handlers/RaidGetChatLogRequestHandler.hpp"
+#include "handlers/RaidGetPlayerInfoRequestHandler.hpp"
+#include "handlers/RaidItemDeleteRequestHandler.hpp"
+#include "handlers/RaidItemEditRequestHandler.hpp"
+#include "handlers/RaidItemMixRequestHandler.hpp"
+#include "handlers/RaidLimitedUseItemRequestHandler.hpp"
+#include "handlers/RaidMissionBattleEndRequestHandler.hpp"
+#include "handlers/RaidMissionBattleRestartRequestHandler.hpp"
+#include "handlers/RaidMissionBattleStartRequestHandler.hpp"
+#include "handlers/RaidMissionEndRequestHandler.hpp"
+#include "handlers/RaidMissionExitRequestHandler.hpp"
+#include "handlers/RaidMissionHarvestRequestHandler.hpp"
+#include "handlers/RaidMissionInfoLightRequestHandler.hpp"
+#include "handlers/RaidMissionInfoRequestHandler.hpp"
+#include "handlers/RaidMissionSelectRequestHandler.hpp"
+#include "handlers/RaidMissionStartRequestHandler.hpp"
+#include "handlers/RaidMissionUseItemRequestHandler.hpp"
+#include "handlers/RaidQuickStartRequestHandler.hpp"
+#include "handlers/RaidRoomDissolveRequestHandler.hpp"
+#include "handlers/RaidRoomFriendGetRequestHandler.hpp"
+#include "handlers/RaidRoomInfoRequestHandler.hpp"
+#include "handlers/RaidRoomKickRequestHandler.hpp"
+#include "handlers/RaidRoomListRequestHandler.hpp"
+#include "handlers/RaidRoonItemEditRequestHandler.hpp"
+#include "handlers/RaidSendChatRequestHandler.hpp"
+#include "handlers/RaidShopUseRequestHandler.hpp"
+#include "handlers/RaidUpDataRoomInfoRequestHandler.hpp"
+#include "handlers/RaidUpDataUserReadyRequestHandler.hpp"
+#include "handlers/RaidUpDateCashRequestHandler.hpp"
+#include "handlers/RaidUpScenarioInfoRequestHandler.hpp"
+#include "handlers/RaidUpdateBlackListRequestHandler.hpp"
+#include "handlers/RaidUpdateProgressRequestHandler.hpp"
+#include "handlers/RaidUserInfoRequestHandler.hpp"
+#include "handlers/RaidWorloInfoRequestHandler.hpp"
+#include "handlers/SlotActionRequestHandler.hpp"
+#include "handlers/SummonerMixRequestHandler.hpp"
+#include "handlers/SummonerSkillGetRequestHandler.hpp"
+#include "handlers/UserSummonerInfoEditRequestHandler.hpp"
+#include "handlers/FeSkillGetRequestHandler.hpp"
+#include "handlers/CollabRewardRequestHandler.hpp"
+#include "handlers/EventTokenExchangeInfoRequestHandler.hpp"
+#include "handlers/EventTokenExchangePurchaseRequestHandler.hpp"
+#include "handlers/EventTokenInfoRequestHandler.hpp"
+#include "handlers/FGPlusGuildRankingRequestHandler.hpp"
+#include "handlers/FGPlusGuildRewardClaimRequestHandler.hpp"
+#include "handlers/GRGuardianDetailHandler.hpp"
+#include "handlers/GachaActionRequest_SGHandler.hpp"
+#include "handlers/GuildBattleScoreInfoRequestHandler.hpp"
+#include "handlers/GuildBoardInfoRequestHandler.hpp"
+#include "handlers/GuildBoardPostRequestHandler.hpp"
+#include "handlers/GuildCreateRequestHandler.hpp"
+#include "handlers/GuildDeckActivateRequestHandler.hpp"
+#include "handlers/GuildDeckEditRequestHandler.hpp"
+#include "handlers/GuildGuardianSummonContributeRequestHandler.hpp"
+#include "handlers/GuildInfoRequestHandler.hpp"
+#include "handlers/GuildInviteManageRequestHandler.hpp"
+#include "handlers/GuildJoinRequestHandler.hpp"
+#include "handlers/GuildJoinedListRequestHandler.hpp"
+#include "handlers/GuildMemberGuildInfoRequestHandler.hpp"
+#include "handlers/GuildMemberUpdateRequestHandler.hpp"
+#include "handlers/GuildRaidBattleInfoRequestHandler.hpp"
+#include "handlers/GuildRaidBattleLogListRequestHandler.hpp"
+#include "handlers/GuildRaidBattleLogSetRequestHandler.hpp"
+#include "handlers/GuildRaidBattleOutpostRelocateRequestHandler.hpp"
+#include "handlers/GuildRaidBattleProgressRequestHandler.hpp"
+#include "handlers/GuildRaidFriendSelectRequestHandler.hpp"
+#include "handlers/GuildRaidGuardSetupRequestHandler.hpp"
+#include "handlers/GuildRaidInfoRequestHandler.hpp"
+#include "handlers/GuildRaidJoinRoomRequestHandler.hpp"
+#include "handlers/GuildRaidMemberDeployRequestHandler.hpp"
+#include "handlers/GuildRaidMissionBattleEndRequestHandler.hpp"
+#include "handlers/GuildRaidMissionBattleStartRequestHandler.hpp"
+#include "handlers/GuildRaidRankingResultRequestHandler.hpp"
+#include "handlers/GuildRaidRoomBattleStartRequestHandler.hpp"
+#include "handlers/GuildRaidRoomCreateRequestHandler.hpp"
+#include "handlers/GuildRaidRoomInfoRequestHandler.hpp"
+#include "handlers/GuildRaidRoomListRequestHandler.hpp"
+#include "handlers/GuildRaidRoomMemberKickRequestHandler.hpp"
+#include "handlers/GuildRaidRoomPartSkillSetRequestHandler.hpp"
+#include "handlers/GuildRaidRoomPartSkillListRequestHandler.hpp"
+#include "handlers/GuildRaidRoomUpdatedRequestHandler.hpp"
+#include "handlers/GuildRankingDetailRequestHandler.hpp"
+#include "handlers/GuildRankingRequestHandler.hpp"
+#include "handlers/GuildPreviousRankingRequestHandler.hpp"
+#include "handlers/GuildRecomendedMemberRequestHandler.hpp"
+#include "handlers/GuildResearchInfoRequestHandler.hpp"
+#include "handlers/GuildRoundBattleSummaryRequestHandler.hpp"
+#include "handlers/GuildRoundSumarryRequestHandler.hpp"
+#include "handlers/GuildSearchRequestHandler.hpp"
+#include "handlers/GuildShopUseRequestHandler.hpp"
+#include "handlers/GuildTradeRequestHandler.hpp"
+#include "handlers/GuildUpdateRequestHandler.hpp"
+#include "handlers/GuildUpgradeContRequestHandler.hpp"
+#include "handlers/GuildUpgradeRequestHandler.hpp"
+#include "handlers/GuilldBattleMoveRequestHandler.hpp"
+#include "handlers/GuildCampRequestHandler.hpp"
+#include "handlers/HomeInfoRequestHandler.hpp"
+#include "handlers/InboxMessageManageRequestHandler.hpp"
+#include "handlers/MultiGachaIapPurchaseIapRequestHandler.hpp"
+#include "handlers/MysteryBoxClaimRequestHandler.hpp"
+#include "handlers/MysteryBoxListRequestHandler.hpp"
+#include "handlers/RaidFriendRemoveRequestHandler.hpp"
+#include "handlers/SGChatLogInfoListRequestHandler.hpp"
+#include "handlers/TutorialSkipRequestHandler.hpp"
+#include "handlers/UnitOmniEvoRequestHandler.hpp"
+#include "handlers/UserEnteredFeatureRequestHandler.hpp"
+#include "handlers/UserGemShardInfoRequestHandler.hpp"
+#include "handlers/UserLoginCampaignInfoRequestHandler.hpp"
+#include "handlers/VideoAdCompleteRequestHandler.hpp"
+#include "handlers/VideoAdSlotsClaimBonusRequestHandler.hpp"
+#include "handlers/VideoAdSlotsCompleteRequestHandler.hpp"
+#include "handlers/VideoAdSlotsStandInfoRefreshRequestHandler.hpp"
+#include "handlers/VideoAdsSlotActionRequestHandler.hpp"
+#include "handlers/DbbBondRequestHandler.hpp"
+#include "handlers/UnitBondBoostRequestHandler.hpp"
+#include "handlers/BannerClickRequestHandler.hpp"
+#include "handlers/DailyLoginRequestHandler.hpp"
+#include "handlers/UnitSelectorGachaTicketRequestHandler.hpp"
#define REGISTER(name) InitializeHandler(std::make_shared())
void GmeController::InitializeHandlers()
{
- REGISTER(Initialize);
- REGISTER(UserInfo);
- REGISTER(FriendGet);
- REGISTER(HomeInfo);
- REGISTER(BadgeInfo);
- REGISTER(ControlCenterEnter);
- REGISTER(UpdateInfoLight);
- REGISTER(GatchaList);
- REGISTER(DeckEdit);
- REGISTER(MissionStart);
+ //REGISTER(NgwordCheckRequest); //Checks the users name is appropriate on game first play flag + Associated to name assignment
+ //REGISTER(CreateUserRequest); //Creates a new user every time called, disabled for testing purposes
+ //REGISTER(InitializeRequest); //Disabled due to duplicate class. Refer to Initialize Request 2 below
+ //REGISTER(TutorialUpdateRequest);
+ //REGISTER(URLMstRequest);
+ REGISTER(BundlePurchaseRequest);
+ REGISTER(BundleCategoryRefreshRequest);
+ REGISTER(BundlePurchaseIapRequest);
+ REGISTER(SummonerJournalTaskRewardsRequest);
+ REGISTER(SummonerJournalInfoRequest);
+ REGISTER(SummonerJournalMilestoneRewardsRequest);
+ REGISTER(ChallengeArenaStartRequest);
+ REGISTER(ChallengeArenaShopAddItemRequest);
+ REGISTER(ChallengeArenaShopInfoRequest);
+ REGISTER(ChallengeArenaResetInfoRequest);
+ REGISTER(ChallengeArenaTChestReceivedRequest);
+ REGISTER(ChallengeArenaRankingRequest);
+ REGISTER(ChallengeArenaRankingRewardRequest);
+ REGISTER(ChallengeArenaBattleEndRequest);
+ REGISTER(ChallengeArenaTeamEditRequest);
+ REGISTER(ChallengeArenaBattleStartRequest);
+ REGISTER(DailyRewardClaimRequest);
+ REGISTER(TierTourneyClaimRewardRequest);
+ REGISTER(TierTourneyFriendListRequest);
+ REGISTER(TierTourneyRewardMstRequest);
+ REGISTER(UserTournamentInfoRequest);
+ REGISTER(VortexArenaTopRequest);
+ REGISTER(VortexArenaBattleStartRequest);
+ REGISTER(VortexArenaMatchingRequest);
+ REGISTER(VortexArenaBattleEndRequest);
+ REGISTER(VortexArenaRetireRequest);
+ REGISTER(VortexArenaLeaderboardRequest);
+ REGISTER(VortexArenaClaimDailyRequest);
+ REGISTER(VortexArenaClaimRequest);
+ REGISTER(DailyTaskClaimRewardRequest);
+ REGISTER(AchievementAcceptRequest);
+ REGISTER(AchievementDeliverRequest);
+ REGISTER(AchievementRewardReceiveRequest);
+ REGISTER(AchievementTradeRequest);
+ REGISTER(AreaRequest);
+ REGISTER(ArenaBattleEndRequest);
+ REGISTER(ArenaBattleRestartRequest);
+ REGISTER(ArenaBattleStartRequest);
+ REGISTER(ArenaFriendListRequest);
+ REGISTER(ArenaInfoRequest);
+ REGISTER(ArenaMatchingRequest);
+ REGISTER(ArenaRetireRequest);
+ REGISTER(ArenaStartRequest);
+ REGISTER(BadgeInfoRequest);
+ REGISTER(BuyCoinRequest);
+ REGISTER(BuyCoinStartRequest);
+ REGISTER(CampaignReceiptRequest);
+ REGISTER(ChallengeBaseRequest);
+ REGISTER(ChallengeMissionStartRequest);
+ REGISTER(ChallengeRankRewardRequest);
+ REGISTER(ChallengeRankingRequest);
+ REGISTER(ChallengeStartRequest);
+ REGISTER(ChallengeUserInfoRequest);
+ REGISTER(ChronologyRequest);
+ REGISTER(ControlCenterEnterRequest);
+ REGISTER(DebugUpdateRequest);
+ REGISTER(DeckEditRequest);
+ REGISTER(DungeonEventUpdateRequest);
+ REGISTER(DungeonKeyReceiptRequest);
+ REGISTER(DungeonKeyUseRequest);
+ REGISTER(FixGiftInfoRequest);
+ REGISTER(FriendAgreeRequest);
+ REGISTER(FriendApplyRequest);
+ REGISTER(FriendDeleteRequest);
+ REGISTER(FriendFavoriteRequest);
+ REGISTER(FriendGetAgreeRequest);
+ REGISTER(FriendGetRequest);
+ REGISTER(FriendRandomSearchRequest);
+ REGISTER(FriendRefuseRequest);
+ REGISTER(FriendSearchRequest);
+ REGISTER(GachaActionRequest);
+ REGISTER(GachaFixActionRequest);
+ REGISTER(GachaListRequest);
+ REGISTER(GetAchievementInfoRequest);
+ REGISTER(GetDistributeDungeonKeyInfoRequest);
+ REGISTER(GetGiftInfoRequest);
+ REGISTER(GetPlayerInfoRequest);
+ REGISTER(GetScenarioPlayingInfoRequest);
+ REGISTER(GetUserInfoRequest);
+ REGISTER(InitializeRequest2);
+ REGISTER(InvitationReceiptRequest);
+ REGISTER(ItemEditRequest);
+ REGISTER(ItemFavoriteRequest);
+ REGISTER(ItemMixRequest);
+ REGISTER(ItemSellRequest);
+ REGISTER(ItemSphereEqpRequest);
+ REGISTER(ItemUseTimeLimitRequest);
+ REGISTER(MissionContinueRequest);
+ REGISTER(MissionEndRequest);
+ REGISTER(MissionRestartRequest);
+ REGISTER(MissionStartRequest);
+ REGISTER(NoticeListRequest);
+ REGISTER(NoticeReadUpdateRequest);
+ REGISTER(NoticeUpdateRequest);
+ REGISTER(PresentListRequest);
+ REGISTER(PresentReceiptRequest);
+ REGISTER(SPChallengeMissionStartRequest);
+ REGISTER(SPChallengeRankingRequest);
+ REGISTER(SPChallengeUserInfoRequest);
+ REGISTER(SetPurchaseInfoRequest);
+ REGISTER(ShopUseRequest);
+ REGISTER(TieupCampaignInfoRequest);
+ REGISTER(TownFacilityUpdateRequest);
+ REGISTER(TownUpdateRequest);
+ REGISTER(TransferCodeCheckRequest);
+ REGISTER(TransferCodeIssueRequest);
+ REGISTER(TransferRequest);
+ REGISTER(TrialDeckEditRequest);
+ REGISTER(TrialDeckGetRequest);
+ REGISTER(UnitEvoRequest);
+ REGISTER(UnitFavoriteRequest);
+ REGISTER(UnitMixRequest);
+ REGISTER(UnitSellRequest);
+ REGISTER(UpdateEventInfoRequest);
+ REGISTER(UpdateInfoLightRequest);
+ REGISTER(UpdateInfoRequest);
+ REGISTER(UpdatePermitPlaceInfoRequest);
+ REGISTER(CampaignBattleEndRequest);
+ REGISTER(CampaignBattleStartRequest);
+ REGISTER(CampaignDeckEditRequest);
+ REGISTER(CampaignDeckGetRequest);
+ REGISTER(CampaignEndRequest);
+ REGISTER(CampaignItemEditRequest);
+ REGISTER(CampaignMissionGetRequest);
+ REGISTER(CampaignRestartRequest);
+ REGISTER(CampaignSaveRequest);
+ REGISTER(CampaignStartRequest);
+ REGISTER(ColosseumBattleEndRequest);
+ REGISTER(ColosseumBattleRestartRequest);
+ REGISTER(ColosseumBattleStartRequest);
+ REGISTER(ColosseumDeckEditRequest);
+ REGISTER(ColosseumFriendListRequest);
+ REGISTER(ColosseumGetRewardInfoRequest);
+ REGISTER(ColosseumRewardReceiptRequest);
+ REGISTER(FrontierGateContinueRequest);
+ REGISTER(FrontierGateEndRequest);
+ REGISTER(FrontierGateInfoRequest);
+ REGISTER(FrontierGateRankingRequest);
+ REGISTER(FrontierGateRestartRequest);
+ REGISTER(FrontierGateRetryRequest);
+ REGISTER(FrontierGateSaveRequest);
+ REGISTER(FrontierGateStartRequest);
+ REGISTER(MinigameCardEndRequest);
+ REGISTER(MinigameFriendListRequest);
+ REGISTER(MinigameNameEntryRequest);
+ REGISTER(MinigameRankingInfoRequest);
+ REGISTER(MinigameSmashEndRequest);
+ REGISTER(MinigameStartRequest);
+ REGISTER(RaidAgreementRequest);
+ REGISTER(RaidCampRestEndRequest);
+ REGISTER(RaidCampRestGetRequest);
+ REGISTER(RaidCampRestStartRequest);
+ REGISTER(RaidEnterRequest);
+ REGISTER(RaidExitRequest);
+ REGISTER(RaidFrlendSelectRequest);
+ REGISTER(RaidGetChatLogRequest);
+ REGISTER(RaidGetPlayerInfoRequest);
+ REGISTER(RaidItemDeleteRequest);
+ REGISTER(RaidItemEditRequest);
+ REGISTER(RaidItemMixRequest);
+ REGISTER(RaidLimitedUseItemRequest);
+ REGISTER(RaidMissionBattleEndRequest);
+ REGISTER(RaidMissionBattleRestartRequest);
+ REGISTER(RaidMissionBattleStartRequest);
+ REGISTER(RaidMissionEndRequest);
+ REGISTER(RaidMissionExitRequest);
+ REGISTER(RaidMissionHarvestRequest);
+ REGISTER(RaidMissionInfoLightRequest);
+ REGISTER(RaidMissionInfoRequest);
+ REGISTER(RaidMissionSelectRequest);
+ REGISTER(RaidMissionStartRequest);
+ REGISTER(RaidMissionUseItemRequest);
+ REGISTER(RaidQuickStartRequest);
+ REGISTER(RaidRoomDissolveRequest);
+ REGISTER(RaidRoomFriendGetRequest);
+ REGISTER(RaidRoomInfoRequest);
+ REGISTER(RaidRoomKickRequest);
+ REGISTER(RaidRoomListRequest);
+ REGISTER(RaidRoonItemEditRequest);
+ REGISTER(RaidSendChatRequest);
+ REGISTER(RaidShopUseRequest);
+ REGISTER(RaidUpDataRoomInfoRequest);
+ REGISTER(RaidUpDataUserReadyRequest);
+ REGISTER(RaidUpDateCashRequest);
+ REGISTER(RaidUpScenarioInfoRequest);
+ REGISTER(RaidUpdateBlackListRequest);
+ REGISTER(RaidUpdateProgressRequest);
+ REGISTER(RaidUserInfoRequest);
+ REGISTER(RaidWorloInfoRequest);
+ REGISTER(SlotActionRequest);
+ REGISTER(SummonerMixRequest);
+ REGISTER(SummonerSkillGetRequest);
+ REGISTER(UserSummonerInfoEditRequest);
+ REGISTER(FeSkillGetRequest);
+ REGISTER(CollabRewardRequest);
+ REGISTER(EventTokenExchangeInfoRequest);
+ REGISTER(EventTokenExchangePurchaseRequest);
+ REGISTER(EventTokenInfoRequest);
+ REGISTER(FGPlusGuildRankingRequest);
+ REGISTER(FGPlusGuildRewardClaimRequest);
+ REGISTER(GRGuardianDetail);
+ REGISTER(GachaActionRequest_SG);
+ REGISTER(GuildBattleScoreInfoRequest);
+ REGISTER(GuildBoardInfoRequest);
+ REGISTER(GuildBoardPostRequest);
+ REGISTER(GuildCreateRequest);
+ REGISTER(GuildDeckActivateRequest);
+ REGISTER(GuildDeckEditRequest);
+ REGISTER(GuildGuardianSummonContributeRequest);
+ REGISTER(GuildInfoRequest);
+ REGISTER(GuildInviteManageRequest);
+ REGISTER(GuildJoinRequest);
+ REGISTER(GuildJoinedListRequest);
+ REGISTER(GuildMemberGuildInfoRequest);
+ REGISTER(GuildMemberUpdateRequest);
+ REGISTER(GuildRaidBattleInfoRequest);
+ REGISTER(GuildRaidBattleLogListRequest);
+ REGISTER(GuildRaidBattleLogSetRequest);
+ REGISTER(GuildRaidBattleOutpostRelocateRequest);
+ REGISTER(GuildRaidBattleProgressRequest);
+ REGISTER(GuildRaidFriendSelectRequest);
+ REGISTER(GuildRaidGuardSetupRequest);
+ REGISTER(GuildRaidInfoRequest);
+ REGISTER(GuildRaidJoinRoomRequest);
+ REGISTER(GuildRaidMemberDeployRequest);
+ REGISTER(GuildRaidMissionBattleEndRequest);
+ REGISTER(GuildRaidMissionBattleStartRequest);
+ REGISTER(GuildRaidRankingResultRequest);
+ REGISTER(GuildRaidRoomBattleStartRequest);
+ REGISTER(GuildRaidRoomCreateRequest);
+ REGISTER(GuildRaidRoomInfoRequest);
+ REGISTER(GuildRaidRoomListRequest);
+ REGISTER(GuildRaidRoomMemberKickRequest);
+ REGISTER(GuildRaidRoomPartSkillSetRequest);
+ REGISTER(GuildRaidRoomPartSkillListRequest);
+ REGISTER(GuildRaidRoomUpdatedRequest);
+ REGISTER(GuildRankingDetailRequest);
+ REGISTER(GuildRankingRequest);
+ REGISTER(GuildPreviousRankingRequest);
+ REGISTER(GuildRecomendedMemberRequest);
+ REGISTER(GuildResearchInfoRequest);
+ REGISTER(GuildRoundBattleSummaryRequest);
+ REGISTER(GuildRoundSumarryRequest);
+ REGISTER(GuildSearchRequest);
+ REGISTER(GuildShopUseRequest);
+ REGISTER(GuildTradeRequest);
+ REGISTER(GuildUpdateRequest);
+ REGISTER(GuildUpgradeContRequest);
+ REGISTER(GuildUpgradeRequest);
+ REGISTER(GuilldBattleMoveRequest);
+ REGISTER(GuildCampRequest);
+ REGISTER(HomeInfoRequest);
+ REGISTER(InboxMessageManageRequest);
+ REGISTER(MultiGachaIapPurchaseIapRequest);
+ REGISTER(MysteryBoxClaimRequest);
+ REGISTER(MysteryBoxListRequest);
+ REGISTER(RaidFriendRemoveRequest);
+ REGISTER(SGChatLogInfoListRequest);
+ REGISTER(TutorialSkipRequest);
+ REGISTER(UnitOmniEvoRequest);
+ REGISTER(UserEnteredFeatureRequest);
+ REGISTER(UserGemShardInfoRequest);
+ REGISTER(UserLoginCampaignInfoRequest);
+ REGISTER(VideoAdCompleteRequest);
+ REGISTER(VideoAdSlotsClaimBonusRequest);
+ REGISTER(VideoAdSlotsCompleteRequest);
+ REGISTER(VideoAdSlotsStandInfoRefreshRequest);
+ REGISTER(VideoAdsSlotActionRequest);
+ REGISTER(DbbBondRequest);
+ REGISTER(UnitBondBoostRequest);
+ REGISTER(BannerClickRequest);
+ REGISTER(DailyLoginRequest);
+ REGISTER(UnitSelectorGachaTicketRequest);
}
diff --git a/gimuserver/gme/UserInfo.hpp b/gimuserver/gme/UserInfo.hpp
index 952398c..dfa72e0 100644
--- a/gimuserver/gme/UserInfo.hpp
+++ b/gimuserver/gme/UserInfo.hpp
@@ -3,10 +3,19 @@
#include "response/UserInfo.hpp"
#include "response/UserTeamInfo.hpp"
-constexpr const auto HARDCODE_USERID = "0101AABB";
+// NOTE: HARDCODE_USERID ("0101AABB") has been removed.
+//
+// It was a dead placeholder from before any real user data existed. The Windows
+// client generates its user ID from device hardware (e.g. "0839899613932562")
+// and sends it as the 'ak' query parameter in HandleGuest. That ID is what
+// actually exists in the users/userinfo/user_units tables.
+//
+// User resolution now happens in GmeController::ResolveUser() at startup,
+// which queries the DB and caches the real ID in m_resolvedUserID.
+// No compile-time constant is needed or appropriate here.
struct UserInfo
{
- Response::UserInfo info;
- Response::UserTeamInfo teamInfo;
-};
+ Response::UserInfo info;
+ Response::UserTeamInfo teamInfo;
+};
\ No newline at end of file
diff --git a/gimuserver/gme/handlers/AchievementAcceptRequestHandler.cpp b/gimuserver/gme/handlers/AchievementAcceptRequestHandler.cpp
new file mode 100644
index 0000000..80466ce
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementAcceptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "AchievementAcceptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::AchievementAcceptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/AchievementAcceptRequestHandler.hpp b/gimuserver/gme/handlers/AchievementAcceptRequestHandler.hpp
new file mode 100644
index 0000000..7bf92ea
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementAcceptRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class AchievementAcceptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "dx5qvm7L"; }
+ const char* GetAesKey() const override { return "g9N1y7bc"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/AchievementDeliverRequestHandler.cpp b/gimuserver/gme/handlers/AchievementDeliverRequestHandler.cpp
new file mode 100644
index 0000000..83cdae2
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementDeliverRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "AchievementDeliverRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::AchievementDeliverRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/AchievementDeliverRequestHandler.hpp b/gimuserver/gme/handlers/AchievementDeliverRequestHandler.hpp
new file mode 100644
index 0000000..2842459
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementDeliverRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class AchievementDeliverRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "vsaXI4M0"; }
+ const char* GetAesKey() const override { return "2Lj5hIEG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.cpp b/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.cpp
new file mode 100644
index 0000000..7d26ec5
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "AchievementRewardReceiveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::AchievementRewardReceiveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.hpp b/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.hpp
new file mode 100644
index 0000000..258a1a7
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementRewardReceiveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class AchievementRewardReceiveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "uq69mTtR"; }
+ const char* GetAesKey() const override { return "cbE74zBZ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/AchievementTradeRequestHandler.cpp b/gimuserver/gme/handlers/AchievementTradeRequestHandler.cpp
new file mode 100644
index 0000000..07ca2d8
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementTradeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "AchievementTradeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::AchievementTradeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/AchievementTradeRequestHandler.hpp b/gimuserver/gme/handlers/AchievementTradeRequestHandler.hpp
new file mode 100644
index 0000000..afd49ca
--- /dev/null
+++ b/gimuserver/gme/handlers/AchievementTradeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class AchievementTradeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "m9LiF6P2"; }
+ const char* GetAesKey() const override { return "0IWC9LVq"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/AreaRequestHandler.cpp b/gimuserver/gme/handlers/AreaRequestHandler.cpp
new file mode 100644
index 0000000..78062dd
--- /dev/null
+++ b/gimuserver/gme/handlers/AreaRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "AreaRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::AreaRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/AreaRequestHandler.hpp b/gimuserver/gme/handlers/AreaRequestHandler.hpp
new file mode 100644
index 0000000..5d5666b
--- /dev/null
+++ b/gimuserver/gme/handlers/AreaRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class AreaRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Zds63G5y"; }
+ const char* GetAesKey() const override { return "YfAh7gqojdXEtFR1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..35befcf
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..70a8983
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "oQNtKU51"; }
+ const char* GetAesKey() const override { return "jkgWq1d0"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.cpp b/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.cpp
new file mode 100644
index 0000000..0e92fe2
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaBattleRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaBattleRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.hpp b/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.hpp
new file mode 100644
index 0000000..422c9ed
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaBattleRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "NPyXDgV9"; }
+ const char* GetAesKey() const override { return "sWofKGMl"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..03be44d
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..0516be5
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7f1rg92L"; }
+ const char* GetAesKey() const override { return "zaMR9o0d"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaFriendListRequestHandler.cpp b/gimuserver/gme/handlers/ArenaFriendListRequestHandler.cpp
new file mode 100644
index 0000000..55b6e30
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaFriendListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaFriendListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaFriendListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaFriendListRequestHandler.hpp b/gimuserver/gme/handlers/ArenaFriendListRequestHandler.hpp
new file mode 100644
index 0000000..52f6132
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaFriendListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaFriendListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "xkd9H50w"; }
+ const char* GetAesKey() const override { return "L3TDhrn2"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaInfoRequestHandler.cpp b/gimuserver/gme/handlers/ArenaInfoRequestHandler.cpp
new file mode 100644
index 0000000..0a8008d
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaInfoRequestHandler.hpp b/gimuserver/gme/handlers/ArenaInfoRequestHandler.hpp
new file mode 100644
index 0000000..1c413d2
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "oim9TU1D"; }
+ const char* GetAesKey() const override { return "oqQxdFfa"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaMatchingRequestHandler.cpp b/gimuserver/gme/handlers/ArenaMatchingRequestHandler.cpp
new file mode 100644
index 0000000..80cee93
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaMatchingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaMatchingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaMatchingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaMatchingRequestHandler.hpp b/gimuserver/gme/handlers/ArenaMatchingRequestHandler.hpp
new file mode 100644
index 0000000..0dbc501
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaMatchingRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaMatchingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "82ztj6Iy"; }
+ const char* GetAesKey() const override { return "Q53tUIBE"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaRetireRequestHandler.cpp b/gimuserver/gme/handlers/ArenaRetireRequestHandler.cpp
new file mode 100644
index 0000000..ff91cd6
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaRetireRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaRetireRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaRetireRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaRetireRequestHandler.hpp b/gimuserver/gme/handlers/ArenaRetireRequestHandler.hpp
new file mode 100644
index 0000000..f5dccb1
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaRetireRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaRetireRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "eyg8sA32"; }
+ const char* GetAesKey() const override { return "93i8EbyM"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ArenaStartRequestHandler.cpp b/gimuserver/gme/handlers/ArenaStartRequestHandler.cpp
new file mode 100644
index 0000000..60b3658
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ArenaStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ArenaStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ArenaStartRequestHandler.hpp b/gimuserver/gme/handlers/ArenaStartRequestHandler.hpp
new file mode 100644
index 0000000..61d00d8
--- /dev/null
+++ b/gimuserver/gme/handlers/ArenaStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ArenaStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "zu6ifpy0"; }
+ const char* GetAesKey() const override { return "bGjK4UH1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BadgeInfoHandler.cpp b/gimuserver/gme/handlers/BadgeInfoHandler.cpp
deleted file mode 100644
index e402552..0000000
--- a/gimuserver/gme/handlers/BadgeInfoHandler.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "BadgeInfoHandler.hpp"
-#include "gme/response/BadgeInfo.hpp"
-
-void Handler::BadgeInfoHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- Json::Value res;
- Response::BadgeInfo info;
- info.Serialize(res);
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
diff --git a/gimuserver/gme/handlers/BadgeInfoRequestHandler.cpp b/gimuserver/gme/handlers/BadgeInfoRequestHandler.cpp
new file mode 100644
index 0000000..3429f24
--- /dev/null
+++ b/gimuserver/gme/handlers/BadgeInfoRequestHandler.cpp
@@ -0,0 +1,14 @@
+#include "BadgeInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+#include "gme/response/BadgeInfo.hpp"
+
+
+void Handler::BadgeInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+ Response::BadgeInfo info; //How we parse in responses
+ info.Serialize(res); //and include it in the response
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BadgeInfoHandler.hpp b/gimuserver/gme/handlers/BadgeInfoRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/BadgeInfoHandler.hpp
rename to gimuserver/gme/handlers/BadgeInfoRequestHandler.hpp
index c5c6e4d..46cd9ea 100644
--- a/gimuserver/gme/handlers/BadgeInfoHandler.hpp
+++ b/gimuserver/gme/handlers/BadgeInfoRequestHandler.hpp
@@ -3,11 +3,12 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class BadgeInfoHandler : public HandlerBase
+class BadgeInfoRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "nJ3A7qFp"; }
const char* GetAesKey() const override { return "bGxX67KB"; }
+
void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
};
HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BannerClickRequestHandler.cpp b/gimuserver/gme/handlers/BannerClickRequestHandler.cpp
new file mode 100644
index 0000000..9110aa5
--- /dev/null
+++ b/gimuserver/gme/handlers/BannerClickRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BannerClickRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BannerClickRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BannerClickRequestHandler.hpp b/gimuserver/gme/handlers/BannerClickRequestHandler.hpp
new file mode 100644
index 0000000..817cb31
--- /dev/null
+++ b/gimuserver/gme/handlers/BannerClickRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BannerClickRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "a5k36D28"; }
+ const char* GetAesKey() const override { return "a63Ghbi2"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.cpp b/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.cpp
new file mode 100644
index 0000000..53955e8
--- /dev/null
+++ b/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BundleCategoryRefreshRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BundleCategoryRefreshRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.hpp b/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.hpp
new file mode 100644
index 0000000..2216f45
--- /dev/null
+++ b/gimuserver/gme/handlers/BundleCategoryRefreshRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BundleCategoryRefreshRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "swarOb4u"; }
+ const char* GetAesKey() const override { return "GeJa9uTe"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.cpp b/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.cpp
new file mode 100644
index 0000000..66e3fcb
--- /dev/null
+++ b/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BundlePurchaseIapRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BundlePurchaseIapRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.hpp b/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.hpp
new file mode 100644
index 0000000..81dd11b
--- /dev/null
+++ b/gimuserver/gme/handlers/BundlePurchaseIapRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BundlePurchaseIapRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "kD298bt6"; }
+ const char* GetAesKey() const override { return "u45Bi2p0"; }
+ // TODO: Response has 5 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BundlePurchaseRequestHandler.cpp b/gimuserver/gme/handlers/BundlePurchaseRequestHandler.cpp
new file mode 100644
index 0000000..ad93b8c
--- /dev/null
+++ b/gimuserver/gme/handlers/BundlePurchaseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BundlePurchaseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BundlePurchaseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BundlePurchaseRequestHandler.hpp b/gimuserver/gme/handlers/BundlePurchaseRequestHandler.hpp
new file mode 100644
index 0000000..887c2cc
--- /dev/null
+++ b/gimuserver/gme/handlers/BundlePurchaseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BundlePurchaseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "D3gyT3b3"; }
+ const char* GetAesKey() const override { return "a8pE3x39"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BuyCoinRequestHandler.cpp b/gimuserver/gme/handlers/BuyCoinRequestHandler.cpp
new file mode 100644
index 0000000..5186295
--- /dev/null
+++ b/gimuserver/gme/handlers/BuyCoinRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BuyCoinRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BuyCoinRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BuyCoinRequestHandler.hpp b/gimuserver/gme/handlers/BuyCoinRequestHandler.hpp
new file mode 100644
index 0000000..4c4566b
--- /dev/null
+++ b/gimuserver/gme/handlers/BuyCoinRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BuyCoinRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "9o3q7SjN"; }
+ const char* GetAesKey() const override { return "DCM60QNb"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/BuyCoinStartRequestHandler.cpp b/gimuserver/gme/handlers/BuyCoinStartRequestHandler.cpp
new file mode 100644
index 0000000..890a707
--- /dev/null
+++ b/gimuserver/gme/handlers/BuyCoinStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "BuyCoinStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::BuyCoinStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/BuyCoinStartRequestHandler.hpp b/gimuserver/gme/handlers/BuyCoinStartRequestHandler.hpp
new file mode 100644
index 0000000..89b3453
--- /dev/null
+++ b/gimuserver/gme/handlers/BuyCoinStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class BuyCoinStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "kJs6CQq1"; }
+ const char* GetAesKey() const override { return "J9P7Bmxa"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..c4605ed
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..a2a882a
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "pTNB6yw3"; }
+ const char* GetAesKey() const override { return "t06HFsXP"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..95cd58b
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..33f9ff7
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "h1RjcD3S"; }
+ const char* GetAesKey() const override { return "4CKoVAq0"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.cpp b/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.cpp
new file mode 100644
index 0000000..98b5285
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignDeckEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignDeckEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.hpp b/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.hpp
new file mode 100644
index 0000000..d97e288
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignDeckEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignDeckEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "D74TYRf1"; }
+ const char* GetAesKey() const override { return "e2k4s6jc"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.cpp b/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.cpp
new file mode 100644
index 0000000..c5be138
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignDeckGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignDeckGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.hpp b/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.hpp
new file mode 100644
index 0000000..b0b9d75
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignDeckGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignDeckGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "C3a0VnQK"; }
+ const char* GetAesKey() const override { return "q2ZtYJ6P"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignEndRequestHandler.cpp b/gimuserver/gme/handlers/CampaignEndRequestHandler.cpp
new file mode 100644
index 0000000..61e2231
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignEndRequestHandler.hpp b/gimuserver/gme/handlers/CampaignEndRequestHandler.hpp
new file mode 100644
index 0000000..07b92b8
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jF9Kkro4"; }
+ const char* GetAesKey() const override { return "4X9tBSg8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignItemEditRequestHandler.cpp b/gimuserver/gme/handlers/CampaignItemEditRequestHandler.cpp
new file mode 100644
index 0000000..21ab4d3
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignItemEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignItemEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignItemEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignItemEditRequestHandler.hpp b/gimuserver/gme/handlers/CampaignItemEditRequestHandler.hpp
new file mode 100644
index 0000000..12e8f26
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignItemEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignItemEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "W2VU91I7"; }
+ const char* GetAesKey() const override { return "2Jd10iwn"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.cpp b/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.cpp
new file mode 100644
index 0000000..682f23c
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignMissionGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignMissionGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.hpp b/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.hpp
new file mode 100644
index 0000000..8fc9536
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignMissionGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignMissionGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "RSm6p2d4"; }
+ const char* GetAesKey() const override { return "5jzXN7AH"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignReceiptRequestHandler.cpp b/gimuserver/gme/handlers/CampaignReceiptRequestHandler.cpp
new file mode 100644
index 0000000..de547e4
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignReceiptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignReceiptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignReceiptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignReceiptRequestHandler.hpp b/gimuserver/gme/handlers/CampaignReceiptRequestHandler.hpp
new file mode 100644
index 0000000..aed66b7
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignReceiptRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignReceiptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5Imq3wC0"; }
+ const char* GetAesKey() const override { return "4DAgP80B"; }
+ // TODO: Response has 1 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignRestartRequestHandler.cpp b/gimuserver/gme/handlers/CampaignRestartRequestHandler.cpp
new file mode 100644
index 0000000..6c907d6
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignRestartRequestHandler.hpp b/gimuserver/gme/handlers/CampaignRestartRequestHandler.hpp
new file mode 100644
index 0000000..7483233
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Ht2jeWV8"; }
+ const char* GetAesKey() const override { return "vm7LYZz4"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignSaveRequestHandler.cpp b/gimuserver/gme/handlers/CampaignSaveRequestHandler.cpp
new file mode 100644
index 0000000..9ad0eb1
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignSaveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignSaveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignSaveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignSaveRequestHandler.hpp b/gimuserver/gme/handlers/CampaignSaveRequestHandler.hpp
new file mode 100644
index 0000000..84b9356
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignSaveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignSaveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Utzc3oj5"; }
+ const char* GetAesKey() const override { return "6xc3GhQF"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CampaignStartRequestHandler.cpp b/gimuserver/gme/handlers/CampaignStartRequestHandler.cpp
new file mode 100644
index 0000000..61af1d4
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CampaignStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CampaignStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CampaignStartRequestHandler.hpp b/gimuserver/gme/handlers/CampaignStartRequestHandler.hpp
new file mode 100644
index 0000000..44061c9
--- /dev/null
+++ b/gimuserver/gme/handlers/CampaignStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CampaignStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "6Y0gaPQN"; }
+ const char* GetAesKey() const override { return "WM6yr4ej"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..01de191
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..29dfe24
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "syX20UG8"; }
+ const char* GetAesKey() const override { return "9xk0xi0Y"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..48a2776
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..f587d1e
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "rbOMSnba"; }
+ const char* GetAesKey() const override { return "iVvpULXG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.cpp
new file mode 100644
index 0000000..233c81a
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.hpp
new file mode 100644
index 0000000..65cec5c
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "L5LN9ytu"; }
+ const char* GetAesKey() const override { return "6gTFuTF9"; }
+ // TODO: Response has 9 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.cpp
new file mode 100644
index 0000000..3f1ed02
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaRankingRewardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaRankingRewardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.hpp
new file mode 100644
index 0000000..9a8096b
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaRankingRewardRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaRankingRewardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "tct1Jogs"; }
+ const char* GetAesKey() const override { return "RRxXMpzm"; }
+ // TODO: Response has 58 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.cpp
new file mode 100644
index 0000000..ee82451
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaResetInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaResetInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.hpp
new file mode 100644
index 0000000..e6febfd
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaResetInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaResetInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Zw3WIoWu"; }
+ const char* GetAesKey() const override { return "KlwYMGF1"; }
+ // TODO: Response has 4 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.cpp
new file mode 100644
index 0000000..cc348c5
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaShopAddItemRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaShopAddItemRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.hpp
new file mode 100644
index 0000000..d004a29
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaShopAddItemRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaShopAddItemRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jtzuog2S"; }
+ const char* GetAesKey() const override { return "xMcy25Tx"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.cpp
new file mode 100644
index 0000000..efff582
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaShopInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaShopInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.hpp
new file mode 100644
index 0000000..74da990
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaShopInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaShopInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "xfmNcJVl"; }
+ const char* GetAesKey() const override { return "Fmv6wzeu"; }
+ // TODO: Response has 8 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.cpp
new file mode 100644
index 0000000..77a9525
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.hpp
new file mode 100644
index 0000000..00c6fab
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "z44LyLr2"; }
+ const char* GetAesKey() const override { return "CC8rm3EJ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.cpp
new file mode 100644
index 0000000..18e527f
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaTChestReceivedRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaTChestReceivedRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.hpp
new file mode 100644
index 0000000..285b16a
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaTChestReceivedRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaTChestReceivedRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "xmzmjcxQ"; }
+ const char* GetAesKey() const override { return "L4W9YSex"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.cpp
new file mode 100644
index 0000000..a740ad1
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeArenaTeamEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeArenaTeamEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.hpp
new file mode 100644
index 0000000..180c0f4
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeArenaTeamEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeArenaTeamEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "sXXX6Ec7"; }
+ const char* GetAesKey() const override { return "DcsPPuTG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeBaseRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeBaseRequestHandler.cpp
new file mode 100644
index 0000000..1a55586
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeBaseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeBaseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeBaseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeBaseRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeBaseRequestHandler.hpp
new file mode 100644
index 0000000..11bd333
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeBaseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeBaseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "nUAW2B0a"; }
+ const char* GetAesKey() const override { return "uE5Tsv6P"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.cpp
new file mode 100644
index 0000000..83c5b0a
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeMissionStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeMissionStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.hpp
new file mode 100644
index 0000000..04fb6d3
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeMissionStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeMissionStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "t5wfpZ32"; }
+ const char* GetAesKey() const override { return "YSVD0n9K"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.cpp
new file mode 100644
index 0000000..12715f7
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeRankRewardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeRankRewardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.hpp
new file mode 100644
index 0000000..7678a7f
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeRankRewardRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeRankRewardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "m3fr7vxo"; }
+ const char* GetAesKey() const override { return "4BuRdgr2"; }
+ // TODO: Response has 9 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeRankingRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeRankingRequestHandler.cpp
new file mode 100644
index 0000000..b9df521
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeRankingRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeRankingRequestHandler.hpp
new file mode 100644
index 0000000..b504d9d
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2Kxi7rIB"; }
+ const char* GetAesKey() const override { return "v1PzNE9f"; }
+ // TODO: Response has 18 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeStartRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeStartRequestHandler.cpp
new file mode 100644
index 0000000..3c7c960
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeStartRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeStartRequestHandler.hpp
new file mode 100644
index 0000000..227f25a
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeStartRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "sQfU18kH"; }
+ const char* GetAesKey() const override { return "m4sdYv9e"; }
+ // TODO: Response has 1 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.cpp b/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.cpp
new file mode 100644
index 0000000..613467b
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChallengeUserInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChallengeUserInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.hpp b/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.hpp
new file mode 100644
index 0000000..34b39e9
--- /dev/null
+++ b/gimuserver/gme/handlers/ChallengeUserInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChallengeUserInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jF3AS4cp"; }
+ const char* GetAesKey() const override { return "Nst6MK5m"; }
+ // TODO: Response has 8 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ChronologyRequestHandler.cpp b/gimuserver/gme/handlers/ChronologyRequestHandler.cpp
new file mode 100644
index 0000000..757d2bf
--- /dev/null
+++ b/gimuserver/gme/handlers/ChronologyRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ChronologyRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ChronologyRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ChronologyRequestHandler.hpp b/gimuserver/gme/handlers/ChronologyRequestHandler.hpp
new file mode 100644
index 0000000..024c3e4
--- /dev/null
+++ b/gimuserver/gme/handlers/ChronologyRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ChronologyRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5o8ZlDGX"; }
+ const char* GetAesKey() const override { return "SNrhAG29"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/CollabRewardRequestHandler.cpp b/gimuserver/gme/handlers/CollabRewardRequestHandler.cpp
new file mode 100644
index 0000000..7141b8e
--- /dev/null
+++ b/gimuserver/gme/handlers/CollabRewardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CollabRewardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CollabRewardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CollabRewardRequestHandler.hpp b/gimuserver/gme/handlers/CollabRewardRequestHandler.hpp
new file mode 100644
index 0000000..50d8e99
--- /dev/null
+++ b/gimuserver/gme/handlers/CollabRewardRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CollabRewardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4aL5upiU"; }
+ const char* GetAesKey() const override { return "2a4MeshE"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..30968ec
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..960cb63
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "fGDPoQI3"; }
+ const char* GetAesKey() const override { return "4V6oIoRC"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.cpp
new file mode 100644
index 0000000..84ec6aa
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumBattleRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumBattleRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.hpp
new file mode 100644
index 0000000..d4c9de5
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumBattleRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ohH9lfDE"; }
+ const char* GetAesKey() const override { return "j2bFgyri"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..236a6b4
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..4b34935
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ysP6qYcy"; }
+ const char* GetAesKey() const override { return "iFIHAT5V"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.cpp
new file mode 100644
index 0000000..949ecd3
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumDeckEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumDeckEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.hpp
new file mode 100644
index 0000000..3e47ba4
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumDeckEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumDeckEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "rdZbaKBG"; }
+ const char* GetAesKey() const override { return "gY3YK5bD"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.cpp
new file mode 100644
index 0000000..4268f87
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumFriendListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumFriendListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.hpp
new file mode 100644
index 0000000..600ab27
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumFriendListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumFriendListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "AoBvG2YN"; }
+ const char* GetAesKey() const override { return "Wj5fH1HV"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.cpp
new file mode 100644
index 0000000..69ec413
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumGetRewardInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumGetRewardInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.hpp
new file mode 100644
index 0000000..94d1442
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumGetRewardInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumGetRewardInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jv0dI88o"; }
+ const char* GetAesKey() const override { return "d7aPxZWw"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.cpp b/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.cpp
new file mode 100644
index 0000000..8f7a1a9
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ColosseumRewardReceiptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ColosseumRewardReceiptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.hpp b/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.hpp
new file mode 100644
index 0000000..65444cc
--- /dev/null
+++ b/gimuserver/gme/handlers/ColosseumRewardReceiptRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ColosseumRewardReceiptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "PN5CVaWy"; }
+ const char* GetAesKey() const override { return "YBgVBy5A"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ControlCenterEnterHandler.cpp b/gimuserver/gme/handlers/ControlCenterEnterHandler.cpp
deleted file mode 100644
index 4bccae4..0000000
--- a/gimuserver/gme/handlers/ControlCenterEnterHandler.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "ControlCenterEnterHandler.hpp"
-#include "gme/response/SlotGameInfo_Resp.hpp"
-
-void Handler::ControlCenterEnterHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- Json::Value res;
- user.teamInfo.Serialize(res);
- Response::SlotGameInfoR r;
- r.info.id = 1;
- r.info.name = "Brave Slots";
- r.info.reelPos = "1,2,3";
- r.info.useMedal = 1;
- r.info.slotHelpUrl = "/bf/web/slots/html/index.php";
- r.info.slotImage = "slot_base.png,slot_btn_on.png,slot_label_start.png,slot_medal_insert.png,slot_medal.png,item_large.png,bravemedal_large.png,sphere_large.png";
- Response::SlotGamePictureInfo::Data d;
- d.id = 81;
- d.pictureName = "j_god.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 1;
- d.pictureName = "s_flog.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 7;
- d.pictureName = "allup_unit.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 2;
- d.pictureName = "b_flog.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 8;
- d.pictureName = "c_god.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 6;
- d.pictureName = "pup_unit.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 3;
- d.pictureName = "b_emperor.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 18;
- d.pictureName = "sphere.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 9;
- d.pictureName = "g_god.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 80;
- d.pictureName = "m_god.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 13;
- d.pictureName = "item.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 12;
- d.pictureName = "item.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 15;
- d.pictureName = "item.png";
- r.pictures.Mst.emplace_back(d);
- d.id = 82;
- d.pictureName = "medal.png";
- r.pictures.Mst.emplace_back(d);
- r.Serialize(res);
-
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
diff --git a/gimuserver/gme/handlers/ControlCenterEnterRequestHandler.cpp b/gimuserver/gme/handlers/ControlCenterEnterRequestHandler.cpp
new file mode 100644
index 0000000..61545d0
--- /dev/null
+++ b/gimuserver/gme/handlers/ControlCenterEnterRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ControlCenterEnterRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ControlCenterEnterRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ControlCenterEnterHandler.hpp b/gimuserver/gme/handlers/ControlCenterEnterRequestHandler.hpp
similarity index 83%
rename from gimuserver/gme/handlers/ControlCenterEnterHandler.hpp
rename to gimuserver/gme/handlers/ControlCenterEnterRequestHandler.hpp
index be804e1..336778e 100644
--- a/gimuserver/gme/handlers/ControlCenterEnterHandler.hpp
+++ b/gimuserver/gme/handlers/ControlCenterEnterRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class ControlCenterEnterHandler : public HandlerBase
+class ControlCenterEnterRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "uYF93Mhc"; }
diff --git a/gimuserver/gme/handlers/CreateUserRequestHandler.cpp b/gimuserver/gme/handlers/CreateUserRequestHandler.cpp
new file mode 100644
index 0000000..4ad9087
--- /dev/null
+++ b/gimuserver/gme/handlers/CreateUserRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "CreateUserRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::CreateUserRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/CreateUserRequestHandler.hpp b/gimuserver/gme/handlers/CreateUserRequestHandler.hpp
new file mode 100644
index 0000000..c7b3184
--- /dev/null
+++ b/gimuserver/gme/handlers/CreateUserRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class CreateUserRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "uV6yH5MX"; }
+ const char* GetAesKey() const override { return "4agnATy2DrJsWzQk"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DailyLoginRequestHandler.cpp b/gimuserver/gme/handlers/DailyLoginRequestHandler.cpp
new file mode 100644
index 0000000..ebbc1b2
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyLoginRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DailyLoginRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DailyLoginRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DailyLoginRequestHandler.hpp b/gimuserver/gme/handlers/DailyLoginRequestHandler.hpp
new file mode 100644
index 0000000..b67f70a
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyLoginRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DailyLoginRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4aClzokO"; }
+ const char* GetAesKey() const override { return "stI81haQ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.cpp b/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.cpp
new file mode 100644
index 0000000..4c4b672
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DailyRewardClaimRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DailyRewardClaimRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.hpp b/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.hpp
new file mode 100644
index 0000000..63d6ee0
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyRewardClaimRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DailyRewardClaimRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "AT_DAILY_REWARD"; }
+ const char* GetAesKey() const override { return "ATK_DAILY_REWARD"; }
+ // TODO: Response has 1 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.cpp b/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.cpp
new file mode 100644
index 0000000..24d7fde
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DailyTaskClaimRewardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DailyTaskClaimRewardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.hpp b/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.hpp
new file mode 100644
index 0000000..99e75d9
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyTaskClaimRewardRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DailyTaskClaimRewardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "oP3bn47e"; }
+ const char* GetAesKey() const override { return "ut0j9h3K"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.cpp b/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.cpp
new file mode 100644
index 0000000..efceae6
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DailyTaskUserInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DailyTaskUserInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.hpp b/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.hpp
new file mode 100644
index 0000000..be53bbc
--- /dev/null
+++ b/gimuserver/gme/handlers/DailyTaskUserInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DailyTaskUserInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "m7g0Ekb5"; }
+ const char* GetAesKey() const override { return "Hd8c3Y6"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DbbBondRequestHandler.cpp b/gimuserver/gme/handlers/DbbBondRequestHandler.cpp
new file mode 100644
index 0000000..be81b46
--- /dev/null
+++ b/gimuserver/gme/handlers/DbbBondRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DbbBondRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DbbBondRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DbbBondRequestHandler.hpp b/gimuserver/gme/handlers/DbbBondRequestHandler.hpp
new file mode 100644
index 0000000..a889bad
--- /dev/null
+++ b/gimuserver/gme/handlers/DbbBondRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DbbBondRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "0EtanubR"; }
+ const char* GetAesKey() const override { return "Tr7dR4dR"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DebugUpdateRequestHandler.cpp b/gimuserver/gme/handlers/DebugUpdateRequestHandler.cpp
new file mode 100644
index 0000000..b81be86
--- /dev/null
+++ b/gimuserver/gme/handlers/DebugUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DebugUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DebugUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DebugUpdateRequestHandler.hpp b/gimuserver/gme/handlers/DebugUpdateRequestHandler.hpp
new file mode 100644
index 0000000..8fa5e0b
--- /dev/null
+++ b/gimuserver/gme/handlers/DebugUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DebugUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Zr37LHNE"; }
+ const char* GetAesKey() const override { return "N1kSz2fr"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DeckEditHandler.cpp b/gimuserver/gme/handlers/DeckEditRequestHandler.cpp
similarity index 69%
rename from gimuserver/gme/handlers/DeckEditHandler.cpp
rename to gimuserver/gme/handlers/DeckEditRequestHandler.cpp
index 64114f8..c7faa4f 100644
--- a/gimuserver/gme/handlers/DeckEditHandler.cpp
+++ b/gimuserver/gme/handlers/DeckEditRequestHandler.cpp
@@ -1,12 +1,13 @@
-#include "DeckEditHandler.hpp"
-#include "core/System.hpp"
+#include "DeckEditRequestHandler.hpp"
#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
#include "gme/response/NoticeInfo.hpp"
-void Handler::DeckEditHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+void Handler::DeckEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
{
Json::Value res;
-
+
{
Response::SignalKey v;
v.key = "fZnLr4t9";
@@ -21,6 +22,6 @@ void Handler::DeckEditHandler::Handle(UserInfo& user, DrogonCallback cb, const J
v.url = System::Instance().ServerConfig().NoticeUrl;
v.Serialize(res);
}
-
+
cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
}
diff --git a/gimuserver/gme/handlers/DeckEditHandler.hpp b/gimuserver/gme/handlers/DeckEditRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/DeckEditHandler.hpp
rename to gimuserver/gme/handlers/DeckEditRequestHandler.hpp
index 76d5de3..68b46ea 100644
--- a/gimuserver/gme/handlers/DeckEditHandler.hpp
+++ b/gimuserver/gme/handlers/DeckEditRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class DeckEditHandler : public HandlerBase
+class DeckEditRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "m2Ve9PkJ"; }
diff --git a/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.cpp b/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.cpp
new file mode 100644
index 0000000..83c2c09
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.cpp
@@ -0,0 +1,13 @@
+#include "DungeonEventUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DungeonEventUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ //TODO: SQL modifications /actionSymbol/4iqcLm1s.php
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.hpp b/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.hpp
new file mode 100644
index 0000000..3cbb80f
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonEventUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DungeonEventUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "BjAt1D6b"; }
+ const char* GetAesKey() const override { return "k5EiNe9x"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.cpp b/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.cpp
new file mode 100644
index 0000000..a8db556
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DungeonKeyReceiptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DungeonKeyReceiptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.hpp b/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.hpp
new file mode 100644
index 0000000..95e8d10
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonKeyReceiptRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DungeonKeyReceiptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "WCJE0xe2"; }
+ const char* GetAesKey() const override { return "V4pfQo5C"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.cpp b/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.cpp
new file mode 100644
index 0000000..99b56fc
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "DungeonKeyUseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::DungeonKeyUseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.hpp b/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.hpp
new file mode 100644
index 0000000..a33a946
--- /dev/null
+++ b/gimuserver/gme/handlers/DungeonKeyUseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class DungeonKeyUseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "aGT5S6qZ"; }
+ const char* GetAesKey() const override { return "3rPx6tTw"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.cpp b/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.cpp
new file mode 100644
index 0000000..c907058
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "EventTokenExchangeInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::EventTokenExchangeInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.hpp b/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.hpp
new file mode 100644
index 0000000..81a443d
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenExchangeInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class EventTokenExchangeInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "49zxdfl3"; }
+ const char* GetAesKey() const override { return "v2DfDSFl"; }
+ // TODO: Response has 8 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.cpp b/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.cpp
new file mode 100644
index 0000000..0c2799e
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "EventTokenExchangePurchaseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::EventTokenExchangePurchaseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.hpp b/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.hpp
new file mode 100644
index 0000000..e741848
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenExchangePurchaseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class EventTokenExchangePurchaseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "SLf48fs0"; }
+ const char* GetAesKey() const override { return "Odiel30s"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/EventTokenInfoRequestHandler.cpp b/gimuserver/gme/handlers/EventTokenInfoRequestHandler.cpp
new file mode 100644
index 0000000..9ffc71d
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "EventTokenInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::EventTokenInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/EventTokenInfoRequestHandler.hpp b/gimuserver/gme/handlers/EventTokenInfoRequestHandler.hpp
new file mode 100644
index 0000000..bb5cd10
--- /dev/null
+++ b/gimuserver/gme/handlers/EventTokenInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class EventTokenInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "f49als4D"; }
+ const char* GetAesKey() const override { return "94lDsgh4"; }
+ // TODO: Response has 7 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.cpp b/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.cpp
new file mode 100644
index 0000000..6443748
--- /dev/null
+++ b/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FGPlusGuildRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FGPlusGuildRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.hpp b/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.hpp
new file mode 100644
index 0000000..954bfb9
--- /dev/null
+++ b/gimuserver/gme/handlers/FGPlusGuildRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FGPlusGuildRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7umuchUg"; }
+ const char* GetAesKey() const override { return "sWup7ehu"; }
+ // TODO: Response has 4 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.cpp b/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.cpp
new file mode 100644
index 0000000..215d943
--- /dev/null
+++ b/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FGPlusGuildRewardClaimRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FGPlusGuildRewardClaimRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.hpp b/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.hpp
new file mode 100644
index 0000000..1c4bfad
--- /dev/null
+++ b/gimuserver/gme/handlers/FGPlusGuildRewardClaimRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FGPlusGuildRewardClaimRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Sp7umiaY"; }
+ const char* GetAesKey() const override { return "thIUXiu5"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FeSkillGetRequestHandler.cpp b/gimuserver/gme/handlers/FeSkillGetRequestHandler.cpp
new file mode 100644
index 0000000..01b9f6d
--- /dev/null
+++ b/gimuserver/gme/handlers/FeSkillGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FeSkillGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FeSkillGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FeSkillGetRequestHandler.hpp b/gimuserver/gme/handlers/FeSkillGetRequestHandler.hpp
new file mode 100644
index 0000000..7c9834c
--- /dev/null
+++ b/gimuserver/gme/handlers/FeSkillGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FeSkillGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "nSQxNOeL"; }
+ const char* GetAesKey() const override { return "nZ2bVoWu"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FixGiftInfoRequestHandler.cpp b/gimuserver/gme/handlers/FixGiftInfoRequestHandler.cpp
new file mode 100644
index 0000000..97a57f6
--- /dev/null
+++ b/gimuserver/gme/handlers/FixGiftInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FixGiftInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FixGiftInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FixGiftInfoRequestHandler.hpp b/gimuserver/gme/handlers/FixGiftInfoRequestHandler.hpp
new file mode 100644
index 0000000..918e58c
--- /dev/null
+++ b/gimuserver/gme/handlers/FixGiftInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FixGiftInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "gLRIn74v"; }
+ const char* GetAesKey() const override { return "15gTE9ft"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendAgreeRequestHandler.cpp b/gimuserver/gme/handlers/FriendAgreeRequestHandler.cpp
new file mode 100644
index 0000000..8eff59a
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendAgreeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendAgreeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendAgreeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendAgreeRequestHandler.hpp b/gimuserver/gme/handlers/FriendAgreeRequestHandler.hpp
new file mode 100644
index 0000000..e983245
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendAgreeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendAgreeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "NYKBH4V6"; }
+ const char* GetAesKey() const override { return "8PFVDiUIZyES2vzR"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendApplyRequestHandler.cpp b/gimuserver/gme/handlers/FriendApplyRequestHandler.cpp
new file mode 100644
index 0000000..b4c08c4
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendApplyRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendApplyRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendApplyRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendApplyRequestHandler.hpp b/gimuserver/gme/handlers/FriendApplyRequestHandler.hpp
new file mode 100644
index 0000000..c5e289e
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendApplyRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendApplyRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "WUNi08YL"; }
+ const char* GetAesKey() const override { return "gbpdAEZuv8IP40UF"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendDeleteRequestHandler.cpp b/gimuserver/gme/handlers/FriendDeleteRequestHandler.cpp
new file mode 100644
index 0000000..7b8c1e4
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendDeleteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendDeleteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendDeleteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendDeleteRequestHandler.hpp b/gimuserver/gme/handlers/FriendDeleteRequestHandler.hpp
new file mode 100644
index 0000000..da7aa92
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendDeleteRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendDeleteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "SfMN9w4p"; }
+ const char* GetAesKey() const override { return "yWXI80UKQNBZFozw"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendFavoriteRequestHandler.cpp b/gimuserver/gme/handlers/FriendFavoriteRequestHandler.cpp
new file mode 100644
index 0000000..7b34120
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendFavoriteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendFavoriteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendFavoriteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendFavoriteRequestHandler.hpp b/gimuserver/gme/handlers/FriendFavoriteRequestHandler.hpp
new file mode 100644
index 0000000..ce78c26
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendFavoriteRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendFavoriteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ps6Vgx4R"; }
+ const char* GetAesKey() const override { return "XcE1CK6L"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.cpp b/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.cpp
new file mode 100644
index 0000000..8da194a
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendGetAgreeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendGetAgreeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.hpp b/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.hpp
new file mode 100644
index 0000000..1e463a1
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendGetAgreeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendGetAgreeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "aVqJrR08"; }
+ const char* GetAesKey() const override { return "H4zJCK2jPeaskVdf"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendGetHandler.cpp b/gimuserver/gme/handlers/FriendGetHandler.cpp
deleted file mode 100644
index 628291b..0000000
--- a/gimuserver/gme/handlers/FriendGetHandler.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "FriendGetHandler.hpp"
-#include "gme/response/ReinforcementInfo.hpp"
-
-void Handler::FriendGetHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- Json::Value res;
- Response::ReinforcementInfo info;
- info.Serialize(res);
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
diff --git a/gimuserver/gme/handlers/FriendGetRequestHandler.cpp b/gimuserver/gme/handlers/FriendGetRequestHandler.cpp
new file mode 100644
index 0000000..7e987c5
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendGetRequestHandler.cpp
@@ -0,0 +1,13 @@
+#include "FriendGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+#include "gme/response/ReinforcementInfo.hpp"
+
+void Handler::FriendGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+ Response::ReinforcementInfo info;
+ info.Serialize(res);
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendGetHandler.hpp b/gimuserver/gme/handlers/FriendGetRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/FriendGetHandler.hpp
rename to gimuserver/gme/handlers/FriendGetRequestHandler.hpp
index 9fb13f9..dabe073 100644
--- a/gimuserver/gme/handlers/FriendGetHandler.hpp
+++ b/gimuserver/gme/handlers/FriendGetRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class FriendGetHandler : public HandlerBase
+class FriendGetRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "2o4axPIC"; }
diff --git a/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.cpp b/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.cpp
new file mode 100644
index 0000000..cc1e680
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendRandomSearchRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendRandomSearchRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.hpp b/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.hpp
new file mode 100644
index 0000000..0a62808
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendRandomSearchRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendRandomSearchRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "mE5gUQOp"; }
+ const char* GetAesKey() const override { return "oK4VaDGF"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendRefuseRequestHandler.cpp b/gimuserver/gme/handlers/FriendRefuseRequestHandler.cpp
new file mode 100644
index 0000000..e357f69
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendRefuseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendRefuseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendRefuseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendRefuseRequestHandler.hpp b/gimuserver/gme/handlers/FriendRefuseRequestHandler.hpp
new file mode 100644
index 0000000..13e3c55
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendRefuseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendRefuseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "N5SQd7oA"; }
+ const char* GetAesKey() const override { return "fk8YaVy9puJbnLWv"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FriendSearchRequestHandler.cpp b/gimuserver/gme/handlers/FriendSearchRequestHandler.cpp
new file mode 100644
index 0000000..0632ac2
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendSearchRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FriendSearchRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FriendSearchRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FriendSearchRequestHandler.hpp b/gimuserver/gme/handlers/FriendSearchRequestHandler.hpp
new file mode 100644
index 0000000..682bbd8
--- /dev/null
+++ b/gimuserver/gme/handlers/FriendSearchRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FriendSearchRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "umNt8M7i"; }
+ const char* GetAesKey() const override { return "qa3sHuDgKxV5nI1F"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.cpp
new file mode 100644
index 0000000..c732774
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateContinueRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateContinueRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.hpp
new file mode 100644
index 0000000..f925247
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateContinueRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateContinueRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "uiFIMUH6"; }
+ const char* GetAesKey() const override { return "ZiosS4cd"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateEndRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateEndRequestHandler.cpp
new file mode 100644
index 0000000..ef66419
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateEndRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateEndRequestHandler.hpp
new file mode 100644
index 0000000..5b91b50
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "cAJp7U4l"; }
+ const char* GetAesKey() const override { return "Vvpy7qZR"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.cpp
new file mode 100644
index 0000000..2f2a3af
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.hpp
new file mode 100644
index 0000000..2165353
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "M17pPotk"; }
+ const char* GetAesKey() const override { return "sochkegz"; }
+ // TODO: Response has 11 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.cpp
new file mode 100644
index 0000000..8cb2683
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.hpp
new file mode 100644
index 0000000..e265f9a
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "26zW90oG"; }
+ const char* GetAesKey() const override { return "yo9eBUJk"; }
+ // TODO: Response has 16 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.cpp
new file mode 100644
index 0000000..3c54d21
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.hpp
new file mode 100644
index 0000000..798ff15
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "v0m1FU0g"; }
+ const char* GetAesKey() const override { return "whb7Y2wX"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.cpp
new file mode 100644
index 0000000..f96f826
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateRetryRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateRetryRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.hpp
new file mode 100644
index 0000000..be7dd94
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateRetryRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateRetryRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "9pzHMBzq"; }
+ const char* GetAesKey() const override { return "njsKMqGT"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.cpp
new file mode 100644
index 0000000..961fe91
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateSaveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateSaveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.hpp
new file mode 100644
index 0000000..e8d2ad8
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateSaveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateSaveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Ng73nFHJ"; }
+ const char* GetAesKey() const override { return "4SdtoczN"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/FrontierGateStartRequestHandler.cpp b/gimuserver/gme/handlers/FrontierGateStartRequestHandler.cpp
new file mode 100644
index 0000000..ccc0cba
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "FrontierGateStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::FrontierGateStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/FrontierGateStartRequestHandler.hpp b/gimuserver/gme/handlers/FrontierGateStartRequestHandler.hpp
new file mode 100644
index 0000000..5f6605d
--- /dev/null
+++ b/gimuserver/gme/handlers/FrontierGateStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class FrontierGateStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "l3lkDBSc"; }
+ const char* GetAesKey() const override { return "vYPCD34q"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GRGuardianDetailHandler.cpp b/gimuserver/gme/handlers/GRGuardianDetailHandler.cpp
new file mode 100644
index 0000000..85f09c4
--- /dev/null
+++ b/gimuserver/gme/handlers/GRGuardianDetailHandler.cpp
@@ -0,0 +1,11 @@
+#include "GRGuardianDetailHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GRGuardianDetailHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GRGuardianDetailHandler.hpp b/gimuserver/gme/handlers/GRGuardianDetailHandler.hpp
new file mode 100644
index 0000000..10ada8d
--- /dev/null
+++ b/gimuserver/gme/handlers/GRGuardianDetailHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GRGuardianDetailHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5710Dkla"; }
+ const char* GetAesKey() const override { return "f89a2kd7"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GachaActionRequestHandler.cpp b/gimuserver/gme/handlers/GachaActionRequestHandler.cpp
new file mode 100644
index 0000000..0ea8c42
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaActionRequestHandler.cpp
@@ -0,0 +1,56 @@
+#include "GachaActionRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GachaActionRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ //TODO: Tuck away into a response class
+
+ Response::UserUnitInfo unitInfo;
+ unitInfo.overwrite = false;
+ if (unitInfo.Mst.empty()) {
+ Response::UserUnitInfo::Data d;
+ d.userID = user.info.userID;
+ d.userUnitID = 9999; // TODO: Intigrate these values to inject data into the SQL for longterm storage.
+ d.unitID = 10011; // TODO: This unit is hard-coded and needs to be randomized to the rates of a given gatcha table.
+ d.unitTypeID = 1;
+ d.element = "light";
+ d.unitLv = 1;
+ d.newFlg = 1;
+ d.receiveDate = 100;
+ d.FeBP = 100;
+ d.FeMaxUsableBP = 200;
+ d.baseHp = 5000;
+ d.baseAtk = 1000;
+ d.baseDef = 1000;
+ d.baseHeal = 1000;
+ d.addHp = 100;
+ d.addAtk = 100;
+ d.addDef = 100;
+ d.addHeal = 100;
+ d.extHp = 100;
+ d.extAtk = 100;
+ d.extDef = 100;
+ d.extHeal = 100;
+ d.limitOverHP = 200;
+ d.limitOverAtk = 200;
+ d.limitOverDef = 200;
+ d.limitOverHeal = 200;
+ d.exp = 1;
+ d.totalExp = 100;
+ unitInfo.Mst.emplace_back(d);
+ }
+ unitInfo.Serialize(res);
+
+ {
+ Json::Value d;
+ d["edy7fq3L"] = "9999"; // Unique String for Unit
+ d["u0vkt9yH"] = 13762; //Flag for Gate Anim
+ res["Km35HAXv"] = d;
+ }
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GachaActionRequestHandler.hpp b/gimuserver/gme/handlers/GachaActionRequestHandler.hpp
new file mode 100644
index 0000000..1579c20
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaActionRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GachaActionRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "F7JvPk5H"; }
+ const char* GetAesKey() const override { return "bL9fipzaSy7xN2w1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GachaActionRequest_SGHandler.cpp b/gimuserver/gme/handlers/GachaActionRequest_SGHandler.cpp
new file mode 100644
index 0000000..c33d5b9
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaActionRequest_SGHandler.cpp
@@ -0,0 +1,11 @@
+#include "GachaActionRequest_SGHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GachaActionRequest_SGHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GachaActionRequest_SGHandler.hpp b/gimuserver/gme/handlers/GachaActionRequest_SGHandler.hpp
new file mode 100644
index 0000000..8542faf
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaActionRequest_SGHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GachaActionRequest_SGHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "z3Di1k0e"; }
+ const char* GetAesKey() const override { return "be51pQk9c"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GachaFixActionRequestHandler.cpp b/gimuserver/gme/handlers/GachaFixActionRequestHandler.cpp
new file mode 100644
index 0000000..2e5cee2
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaFixActionRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GachaFixActionRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GachaFixActionRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GachaFixActionRequestHandler.hpp b/gimuserver/gme/handlers/GachaFixActionRequestHandler.hpp
new file mode 100644
index 0000000..19245e6
--- /dev/null
+++ b/gimuserver/gme/handlers/GachaFixActionRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GachaFixActionRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "MFLFP9f2"; }
+ const char* GetAesKey() const override { return "484bnJG2"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GatchaListHandler.cpp b/gimuserver/gme/handlers/GachaListRequestHandler.cpp
similarity index 57%
rename from gimuserver/gme/handlers/GatchaListHandler.cpp
rename to gimuserver/gme/handlers/GachaListRequestHandler.cpp
index 3e28b9a..be2343d 100644
--- a/gimuserver/gme/handlers/GatchaListHandler.cpp
+++ b/gimuserver/gme/handlers/GachaListRequestHandler.cpp
@@ -1,11 +1,14 @@
-#include "GatchaListHandler.hpp"
+#include "GachaListRequestHandler.hpp"
#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
#include "core/System.hpp"
-void Handler::GatchaListHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+void Handler::GachaListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
{
Json::Value res;
+ //TODO: Tuck into a response class
+
{
Response::SignalKey v;
v.key = "axhp8Sin";
@@ -15,6 +18,6 @@ void Handler::GatchaListHandler::Handle(UserInfo& user, DrogonCallback cb, const
user.teamInfo.Serialize(res);
System::Instance().MstConfig().CopyGachaInfoTo(res);
-
+
cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
}
diff --git a/gimuserver/gme/handlers/GatchaListHandler.hpp b/gimuserver/gme/handlers/GachaListRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/GatchaListHandler.hpp
rename to gimuserver/gme/handlers/GachaListRequestHandler.hpp
index 6bffe3d..59d14ed 100644
--- a/gimuserver/gme/handlers/GatchaListHandler.hpp
+++ b/gimuserver/gme/handlers/GachaListRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class GatchaListHandler : public HandlerBase
+class GachaListRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "Uo86DcRh"; }
diff --git a/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.cpp
new file mode 100644
index 0000000..31bf8f8
--- /dev/null
+++ b/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GetAchievementInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GetAchievementInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.hpp
new file mode 100644
index 0000000..f4ee988
--- /dev/null
+++ b/gimuserver/gme/handlers/GetAchievementInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetAchievementInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "YPBU7MD8"; }
+ const char* GetAesKey() const override { return "AKjzyZ81"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.cpp
new file mode 100644
index 0000000..50a6463
--- /dev/null
+++ b/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GetDistributeDungeonKeyInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GetDistributeDungeonKeyInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.hpp
new file mode 100644
index 0000000..dc8ee33
--- /dev/null
+++ b/gimuserver/gme/handlers/GetDistributeDungeonKeyInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetDistributeDungeonKeyInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "1mr9UsYz"; }
+ const char* GetAesKey() const override { return "r0ZA3pn5"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GetGiftInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetGiftInfoRequestHandler.cpp
new file mode 100644
index 0000000..b547154
--- /dev/null
+++ b/gimuserver/gme/handlers/GetGiftInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GetGiftInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GetGiftInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GetGiftInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetGiftInfoRequestHandler.hpp
new file mode 100644
index 0000000..3bfa6ee
--- /dev/null
+++ b/gimuserver/gme/handlers/GetGiftInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetGiftInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ifYoPJ46"; }
+ const char* GetAesKey() const override { return "6zHEYa9U"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.cpp
new file mode 100644
index 0000000..0b92e5c
--- /dev/null
+++ b/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GetPlayerInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GetPlayerInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.hpp
new file mode 100644
index 0000000..5605feb
--- /dev/null
+++ b/gimuserver/gme/handlers/GetPlayerInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetPlayerInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "vUQrAV65"; }
+ const char* GetAesKey() const override { return "7pW4xF9H"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.cpp
new file mode 100644
index 0000000..a4d754a
--- /dev/null
+++ b/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GetScenarioPlayingInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GetScenarioPlayingInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.hpp
new file mode 100644
index 0000000..50c23aa
--- /dev/null
+++ b/gimuserver/gme/handlers/GetScenarioPlayingInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetScenarioPlayingInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "VRfsv4e3"; }
+ const char* GetAesKey() const override { return "Bh4WqR01"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GetUserInfoRequestHandler.cpp b/gimuserver/gme/handlers/GetUserInfoRequestHandler.cpp
new file mode 100644
index 0000000..510788e
--- /dev/null
+++ b/gimuserver/gme/handlers/GetUserInfoRequestHandler.cpp
@@ -0,0 +1,314 @@
+#include "GetUserInfoRequestHandler.hpp"
+#include
+#include
+#include
+#include "gme/response/UserTeamInfo.hpp"
+#include "gme/response/UserLoginCampaignInfo.hpp"
+#include "gme/response/NoticeInfo.hpp"
+#include "gme/response/UserItemDictionaryInfo.hpp"
+#include "gme/response/UserTeamArchive.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "gme/response/UserPartyDeckInfo.hpp"
+#include "gme/response/UserWarehouseInfo.hpp"
+#include "gme/response/UserClearMissionInfo.hpp"
+#include "gme/response/ItemFavorite.hpp"
+#include "gme/response/UserTeamArenaArchive.hpp"
+#include "gme/response/UserUnitDictionary.hpp"
+#include "gme/response/UserFavorite.hpp"
+#include "gme/response/UserArenaInfo.hpp"
+#include "gme/response/UserGiftInfo.hpp"
+#include "gme/response/VideoAdInfo.hpp"
+#include "gme/response/VideoAdRegion.hpp"
+#include "gme/response/SummonerJournalUserInfo.hpp"
+#include "gme/response/SignalKey.hpp"
+#include
+
+namespace {
+ // Helper: Populate unit data structure with default values
+ void PopulateUnitData(Response::UserUnitInfo::Data& d, const std::string& userId,
+ uint32_t userUnitId, uint64_t unitId) {
+ d.userID = userId;
+ d.userUnitID = userUnitId;
+ d.unitID = unitId;
+ d.element = "fire";
+ d.unitLv = 1;
+ d.newFlg = 1;
+ d.receiveDate = 100;
+ d.FeBP = 100;
+ d.FeMaxUsableBP = 200;
+
+ // Base stats - all start at 1000
+ d.baseHp = d.baseAtk = d.baseDef = d.baseHeal = 1000;
+ d.addHp = d.addAtk = d.addDef = d.addHeal = 100;
+ d.extHp = d.extAtk = d.extDef = d.extHeal = 100;
+ d.limitOverHP = d.limitOverAtk = d.limitOverDef = d.limitOverHeal = 200;
+ d.exp = d.totalExp = 1;
+
+ // Default skill and equipment IDs
+ d.unitTypeID = 1;
+ d.leaderSkillID = d.skillID = d.extraSkillID = 0;
+ d.eqipItemFrameID = d.eqipItemFrameID2 = 0;
+ d.eqipItemID = d.equipItemID2 = 0;
+ d.ExtraPassiveSkillID = d.ExtraPassiveSkillID2 = d.AddExtraPassiveSkillID = 0;
+ d.FeSkillInfo = "";
+ }
+
+ // Helper: Create dummy unit for empty inventory (Vargas starter unit)
+ Response::UserUnitInfo::Data CreateDummyUnit(const std::string& userId) {
+ Response::UserUnitInfo::Data d;
+ PopulateUnitData(d, userId, 1, 10017); // Unit ID 10017 = Vargas
+ return d;
+ }
+
+ // Helper: Build unit info from database result
+ Response::UserUnitInfo BuildUnitInfo(const drogon::orm::Result& unitResult, const std::string& userId) {
+ Response::UserUnitInfo unitInfo;
+
+ for (const auto& row : unitResult) {
+ Response::UserUnitInfo::Data d;
+ // unit_id may have suffixes like _100 (limit broken) or _2 (evolved form).
+ // Strip everything after the first underscore to get the base numeric ID.
+ std::string rawId = row["unit_id"].as();
+ auto underscore = rawId.find('_');
+ uint64_t unitId = std::stoull(
+ underscore == std::string::npos ? rawId : rawId.substr(0, underscore)
+ );
+ PopulateUnitData(d, userId, row["id"].as(), unitId);
+ unitInfo.Mst.emplace_back(d);
+ }
+
+ // Add dummy unit if inventory is empty to prevent client crashes
+ if (unitInfo.Mst.empty()) {
+ LOG_WARN << "No units found for user " << userId << ", adding dummy unit";
+ unitInfo.Mst.emplace_back(CreateDummyUnit(userId));
+ }
+
+ return unitInfo;
+ }
+
+ // Helper: Create party deck with first unit as leader
+ Response::UserPartyDeckInfo CreateDefaultDeck(const Response::UserUnitInfo& unitInfo) {
+ Response::UserPartyDeckInfo deckInfo;
+
+ if (!unitInfo.Mst.empty()) {
+ Response::UserPartyDeckInfo::Data d;
+ d.deckNum = 0;
+ d.deckType = 1;
+ d.dispOrder = 0;
+ d.memberType = 0; // Leader position
+ d.userUnitID = unitInfo.Mst[0].userUnitID;
+ deckInfo.Mst.emplace_back(d);
+ }
+
+ return deckInfo;
+ }
+}
+
+void Handler::GetUserInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const {
+ // The Windows client sends dummy placeholder values like '0101AABB' as user_id
+ // inside the encrypted GME packet body. The GmeController copies that into
+ // user.info.userID before calling us, so we cannot trust it directly.
+ //
+ // Resolution: query the users table. If the current userID exists, use it.
+ // Otherwise (UNION ALL) fall back to the first real user in the DB.
+ // For offline single-player this always resolves to the one real account.
+ LOG_INFO << "UserInfoHandler: raw user_id: " << user.info.userID;
+
+ GME_DB->execSqlAsync(
+ "SELECT id FROM users WHERE id = $1 "
+ "UNION ALL "
+ "SELECT id FROM users WHERE id != $1 LIMIT 1",
+ [this, &user, cb, req](const drogon::orm::Result& idResult)
+ {
+ if (!idResult.empty())
+ {
+ std::string resolvedId = idResult[0]["id"].as();
+ if (resolvedId != user.info.userID)
+ {
+ LOG_INFO << "UserInfoHandler: remapped " << user.info.userID
+ << " -> " << resolvedId;
+ user.info.userID = resolvedId;
+ }
+ }
+ else
+ {
+ LOG_WARN << "UserInfoHandler: no users in DB";
+ }
+ // Now dispatch with the resolved user ID.
+ HandleResolved(user, cb, req);
+ },
+ [this, &user, cb, req](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "UserInfoHandler: resolution query failed: " << e.base().what();
+ HandleResolved(user, cb, req);
+ },
+ user.info.userID
+ );
+}
+
+void Handler::GetUserInfoRequestHandler::HandleResolved(UserInfo& user, DrogonCallback cb, const Json::Value& req) const {
+ LOG_INFO << "UserInfoHandler: resolved user_id: " << user.info.userID;
+
+ // Handle unit inventory or squad management requests separately
+ std::string action = req.isMember("action") ? req["action"].asString() : "";
+ if (action == "load_unit_inventory" || action == "Zw3WIoWu" || action == "load_squad_management") {
+ GME_DB->execSqlAsync(
+ "SELECT id, unit_id FROM user_units WHERE user_id = $1 LIMIT 4000",
+ [this, &user, cb](const drogon::orm::Result& unitResult) {
+ LOG_INFO << "Found " << unitResult.size() << " units for user " << user.info.userID;
+
+ Json::Value res;
+ auto unitInfo = BuildUnitInfo(unitResult, user.info.userID);
+ unitInfo.Serialize(res);
+
+ auto deckInfo = CreateDefaultDeck(unitInfo);
+ deckInfo.Serialize(res);
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+ },
+ [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
+ user.info.userID
+ );
+ return;
+ }
+
+ // Main user info loading logic
+ GME_DB->execSqlAsync(
+ "SELECT level, exp, max_unit_count, max_friend_count, zel, karma, brave_coin, "
+ "max_warehouse_count, want_gift, free_gems, paid_gems, active_deck, summon_tickets, "
+ "rainbow_coins, colosseum_tickets, active_arena_deck, total_brave_points, "
+ "avail_brave_points, energy FROM userinfo WHERE id = $1",
+ [this, &user, cb](const drogon::orm::Result& result) {
+ // Load existing user data or initialize defaults
+ if (result.size() > 0) {
+ auto& sql = result[0];
+ int col = 0;
+ user.teamInfo.UserID = user.info.userID;
+ user.teamInfo.Level = sql[col++].as();
+ user.teamInfo.Exp = sql[col++].as();
+ user.teamInfo.MaxUnitCount = sql[col++].as();
+ user.teamInfo.MaxFriendCount = sql[col++].as();
+ user.teamInfo.Zel = sql[col++].as();
+ user.teamInfo.Karma = sql[col++].as();
+ user.teamInfo.BraveCoin = sql[col++].as();
+ user.teamInfo.WarehouseCount = sql[col++].as();
+ user.teamInfo.WantGift = sql[col++].as();
+ user.teamInfo.FreeGems = sql[col++].as();
+ user.teamInfo.PaidGems = sql[col++].as();
+ user.teamInfo.ActiveDeck = sql[col++].as();
+ user.teamInfo.SummonTicket = sql[col++].as();
+ user.teamInfo.RainbowCoin = sql[col++].as();
+ user.teamInfo.ColosseumTicket = sql[col++].as();
+ user.teamInfo.ArenaDeckNum = sql[col++].as();
+ user.teamInfo.BravePointsTotal = sql[col++].as();
+ user.teamInfo.CurrentBravePoints = sql[col++].as();
+ user.teamInfo.ActionPoint = sql[col++].as();
+ }
+ else {
+ // Initialize new user with starter config
+ //TODO: Call New User Logic Here
+ auto sc = System::Instance().MstConfig().StartInfo();
+ user.teamInfo.UserID = user.info.userID;
+ user.teamInfo.Level = sc.Level;
+ user.teamInfo.Exp = 0;
+ user.teamInfo.MaxUnitCount = user.teamInfo.WarehouseCount = 4000;
+ user.teamInfo.MaxFriendCount = sc.FriendCount;
+ user.teamInfo.Zel = sc.Zel;
+ user.teamInfo.Karma = sc.Karma;
+ user.teamInfo.BraveCoin = 0;
+ user.teamInfo.FreeGems = sc.FreeGems;
+ user.teamInfo.PaidGems = sc.PaidGems;
+ user.teamInfo.SummonTicket = sc.SummonTickets;
+ user.teamInfo.ColosseumTicket = sc.ColosseumTickets;
+
+ // Persist new user to database
+ GME_DB->execSqlAsync(
+ "INSERT INTO userinfo (id, level, exp, max_unit_count, max_friend_count, "
+ "zel, karma, brave_coin, max_warehouse_count, want_gift, free_gems, paid_gems, "
+ "active_deck, summon_tickets, rainbow_coins, colosseum_tickets, active_arena_deck, "
+ "total_brave_points, avail_brave_points, energy) "
+ "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)",
+ [](const drogon::orm::Result&) { LOG_INFO << "Inserted default userinfo for new user"; },
+ [](const drogon::orm::DrogonDbException& e) {
+ LOG_ERROR << "Failed to insert userinfo: " << e.base().what();
+ },
+ user.info.userID, user.teamInfo.Level, user.teamInfo.Exp, user.teamInfo.MaxUnitCount,
+ user.teamInfo.MaxFriendCount, user.teamInfo.Zel, user.teamInfo.Karma, user.teamInfo.BraveCoin,
+ user.teamInfo.WarehouseCount, user.teamInfo.WantGift, user.teamInfo.FreeGems, user.teamInfo.PaidGems,
+ user.teamInfo.ActiveDeck, user.teamInfo.SummonTicket, user.teamInfo.RainbowCoin,
+ user.teamInfo.ColosseumTicket, user.teamInfo.ArenaDeckNum, user.teamInfo.BravePointsTotal,
+ user.teamInfo.CurrentBravePoints, user.teamInfo.ActionPoint
+ );
+ }
+
+ // Apply level-based progression modifiers
+ const auto& msts = System::Instance().MstConfig();
+ const auto& p = msts.GetProgressionInfo().Mst.at(user.teamInfo.Level - 1);
+ user.teamInfo.DeckCost = p.deckCost;
+ user.teamInfo.MaxFriendCount = p.friendCount;
+ user.teamInfo.AddFriendCount = p.addFriendCount;
+ user.teamInfo.MaxActionPoint = p.actionPoints;
+ if (user.teamInfo.ActionPoint == 0)
+ user.teamInfo.ActionPoint = user.teamInfo.MaxActionPoint;
+
+ // Load user units and build complete response
+ GME_DB->execSqlAsync(
+ "SELECT id, unit_id FROM user_units WHERE user_id = $1 LIMIT 4000",
+ [this, &user, cb](const drogon::orm::Result& unitResult) {
+ LOG_INFO << "Found " << unitResult.size() << " units for user " << user.info.userID;
+
+ // Build comprehensive response with all user data
+ Json::Value res;
+ user.info.Serialize(res);
+ user.teamInfo.Serialize(res);
+
+ // Add login campaign info
+ Response::UserLoginCampaignInfo campaign;
+ campaign.currentDay = 1;
+ campaign.totalDays = 96;
+ campaign.firstForTheDay = true;
+ campaign.Serialize(res);
+
+ // Add unit inventory
+ auto unitInfo = BuildUnitInfo(unitResult, user.info.userID);
+ unitInfo.Serialize(res);
+
+ // Add party deck
+ auto deckInfo = CreateDefaultDeck(unitInfo);
+ deckInfo.Serialize(res);
+
+ // Serialize all other game data structures
+ Response::UserTeamArchive{}.Serialize(res);
+ Response::UserTeamArenaArchive{}.Serialize(res);
+ Response::UserUnitDictionary{}.Serialize(res);
+ Response::UserFavorite{}.Serialize(res);
+ Response::UserClearMissionInfo{}.Serialize(res);
+ Response::UserWarehouseInfo{}.Serialize(res);
+ Response::ItemFavorite{}.Serialize(res);
+ Response::UserItemDictionaryInfo{}.Serialize(res);
+ Response::UserArenaInfo{}.Serialize(res);
+ Response::UserGiftInfo{}.Serialize(res);
+
+ // Add summoner journal info
+ Response::SummonerJournalUserInfo journal;
+ journal.userId = user.info.userID;
+ journal.Serialize(res);
+
+ // Add signal key for client authentication
+ Response::SignalKey signalKey;
+ signalKey.key = "5EdKHavF";
+ signalKey.Serialize(res);
+
+ // Append master config data
+ System::Instance().MstConfig().CopyUserInfoMstTo(res);
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+ },
+ [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
+ user.info.userID
+ );
+ },
+ [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
+ user.info.userID
+ );
+}
\ No newline at end of file
diff --git a/gimuserver/gme/handlers/GetUserInfoRequestHandler.hpp b/gimuserver/gme/handlers/GetUserInfoRequestHandler.hpp
new file mode 100644
index 0000000..e9bd9a0
--- /dev/null
+++ b/gimuserver/gme/handlers/GetUserInfoRequestHandler.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GetUserInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "cTZ3W2JG"; }
+ const char* GetAesKey() const override { return "ScJx6ywWEb0A3njT"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+
+private:
+ // Second-phase dispatch called after user ID has been resolved from the users table.
+ // Exists because the Windows client sends dummy values like '0101AABB' as user_id
+ // in the encrypted request body, so Handle() first resolves the real ID async,
+ // then delegates here where all member functions (GetGroupId, GetAesKey, OnError)
+ // are in scope normally.
+ void HandleResolved(UserInfo& user, DrogonCallback cb, const Json::Value& req) const;
+};
+HANDLER_NS_END
\ No newline at end of file
diff --git a/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.cpp
new file mode 100644
index 0000000..0f737b2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildBattleScoreInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildBattleScoreInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.hpp
new file mode 100644
index 0000000..5074e29
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBattleScoreInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildBattleScoreInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "W1Dgsfnz"; }
+ const char* GetAesKey() const override { return "eMfdsGVJ"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.cpp
new file mode 100644
index 0000000..a91b597
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildBoardInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildBoardInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.hpp
new file mode 100644
index 0000000..a2cb78c
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBoardInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildBoardInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "J93ki3Bw"; }
+ const char* GetAesKey() const override { return "m83D19ib"; }
+ // TODO: Response has 9 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildBoardPostRequestHandler.cpp b/gimuserver/gme/handlers/GuildBoardPostRequestHandler.cpp
new file mode 100644
index 0000000..3c5776a
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBoardPostRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildBoardPostRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildBoardPostRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildBoardPostRequestHandler.hpp b/gimuserver/gme/handlers/GuildBoardPostRequestHandler.hpp
new file mode 100644
index 0000000..46a9563
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildBoardPostRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildBoardPostRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "X89bDai1"; }
+ const char* GetAesKey() const override { return "Bi9Ralbq"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildCampRequestHandler.cpp b/gimuserver/gme/handlers/GuildCampRequestHandler.cpp
new file mode 100644
index 0000000..b9471e5
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildCampRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildCampRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildCampRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildCampRequestHandler.hpp b/gimuserver/gme/handlers/GuildCampRequestHandler.hpp
new file mode 100644
index 0000000..ce202d8
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildCampRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildCampRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "38b67ie1"; }
+ const char* GetAesKey() const override { return "hG738a5b"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildCreateRequestHandler.cpp b/gimuserver/gme/handlers/GuildCreateRequestHandler.cpp
new file mode 100644
index 0000000..310bbdb
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildCreateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildCreateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildCreateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildCreateRequestHandler.hpp b/gimuserver/gme/handlers/GuildCreateRequestHandler.hpp
new file mode 100644
index 0000000..dd47b62
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildCreateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildCreateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "g298Da10"; }
+ const char* GetAesKey() const override { return "G23Bd01d"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.cpp b/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.cpp
new file mode 100644
index 0000000..c376c31
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildDeckActivateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildDeckActivateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.hpp b/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.hpp
new file mode 100644
index 0000000..f24b487
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildDeckActivateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildDeckActivateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "bk30i39b"; }
+ const char* GetAesKey() const override { return "3bkb98a1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildDeckEditRequestHandler.cpp b/gimuserver/gme/handlers/GuildDeckEditRequestHandler.cpp
new file mode 100644
index 0000000..4a0de7e
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildDeckEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildDeckEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildDeckEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildDeckEditRequestHandler.hpp b/gimuserver/gme/handlers/GuildDeckEditRequestHandler.hpp
new file mode 100644
index 0000000..194f21e
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildDeckEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildDeckEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "adk28bij"; }
+ const char* GetAesKey() const override { return "fgd3uu2b"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.cpp b/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.cpp
new file mode 100644
index 0000000..7fbaae6
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildGuardianSummonContributeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildGuardianSummonContributeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.hpp b/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.hpp
new file mode 100644
index 0000000..1d1fd12
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildGuardianSummonContributeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildGuardianSummonContributeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "yDDcC0vW"; }
+ const char* GetAesKey() const override { return "NOeugPyv"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildInfoRequestHandler.cpp
new file mode 100644
index 0000000..d26ecbb
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildInfoRequestHandler.hpp
new file mode 100644
index 0000000..6ba66d8
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "138ba8d4"; }
+ const char* GetAesKey() const override { return "23gD81ia"; }
+ // TODO: Response has 12 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildInviteManageRequestHandler.cpp b/gimuserver/gme/handlers/GuildInviteManageRequestHandler.cpp
new file mode 100644
index 0000000..6ce87fa
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildInviteManageRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildInviteManageRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildInviteManageRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildInviteManageRequestHandler.hpp b/gimuserver/gme/handlers/GuildInviteManageRequestHandler.hpp
new file mode 100644
index 0000000..5454be4
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildInviteManageRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildInviteManageRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "1D8bba8D"; }
+ const char* GetAesKey() const override { return "bUd2bd0e"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildJoinRequestHandler.cpp b/gimuserver/gme/handlers/GuildJoinRequestHandler.cpp
new file mode 100644
index 0000000..f8c518a
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildJoinRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildJoinRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildJoinRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildJoinRequestHandler.hpp b/gimuserver/gme/handlers/GuildJoinRequestHandler.hpp
new file mode 100644
index 0000000..b79465c
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildJoinRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildJoinRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "bfa2D1bp"; }
+ const char* GetAesKey() const override { return "9b3abdk1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildJoinedListRequestHandler.cpp b/gimuserver/gme/handlers/GuildJoinedListRequestHandler.cpp
new file mode 100644
index 0000000..d4d7f7c
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildJoinedListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildJoinedListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildJoinedListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildJoinedListRequestHandler.hpp b/gimuserver/gme/handlers/GuildJoinedListRequestHandler.hpp
new file mode 100644
index 0000000..0592fd5
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildJoinedListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildJoinedListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "3890ab5j"; }
+ const char* GetAesKey() const override { return "820b38z5"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.cpp
new file mode 100644
index 0000000..8b5f5e3
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildMemberGuildInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildMemberGuildInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.hpp
new file mode 100644
index 0000000..0ce992c
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildMemberGuildInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildMemberGuildInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "38bSeq81"; }
+ const char* GetAesKey() const override { return "h8TmR1bi"; }
+ // TODO: Response has 12 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.cpp b/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.cpp
new file mode 100644
index 0000000..7d2d0d5
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildMemberUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildMemberUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.hpp b/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.hpp
new file mode 100644
index 0000000..1e83896
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildMemberUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildMemberUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ad81b8at"; }
+ const char* GetAesKey() const override { return "2b1bDo2m"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.cpp b/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.cpp
new file mode 100644
index 0000000..57fb0f2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildPreviousRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildPreviousRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.hpp b/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.hpp
new file mode 100644
index 0000000..b940629
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildPreviousRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildPreviousRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "oRa3ztp8"; }
+ const char* GetAesKey() const override { return "pVg9L9Uw"; }
+ // TODO: Response has 5 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.cpp b/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.cpp
new file mode 100644
index 0000000..3024827
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildQuestClaimRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildQuestClaimRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.hpp b/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.hpp
new file mode 100644
index 0000000..875773b
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildQuestClaimRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildQuestClaimRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "dsRW32K"; }
+ const char* GetAesKey() const override { return "Afs43Dc4"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.cpp
new file mode 100644
index 0000000..22b45db
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidBattleInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidBattleInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.hpp
new file mode 100644
index 0000000..7e640b3
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidBattleInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "9b98aKj1"; }
+ const char* GetAesKey() const override { return "b8dAl1ic"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.cpp
new file mode 100644
index 0000000..e2637d2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidBattleLogListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidBattleLogListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.hpp
new file mode 100644
index 0000000..668d673
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleLogListRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidBattleLogListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "MTzXyuFL"; }
+ const char* GetAesKey() const override { return "MkV5xHDL"; }
+ // TODO: Response has 16 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.cpp
new file mode 100644
index 0000000..a308c58
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidBattleLogSetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidBattleLogSetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.hpp
new file mode 100644
index 0000000..439e4b4
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleLogSetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidBattleLogSetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "36jhZ9YZ"; }
+ const char* GetAesKey() const override { return "Zd3d2zGx"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.cpp
new file mode 100644
index 0000000..08eb366
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidBattleOutpostRelocateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidBattleOutpostRelocateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.hpp
new file mode 100644
index 0000000..df369d2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleOutpostRelocateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidBattleOutpostRelocateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "bka03Bi1"; }
+ const char* GetAesKey() const override { return "F91Dalb8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.cpp
new file mode 100644
index 0000000..f2d7416
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidBattleProgressRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidBattleProgressRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.hpp
new file mode 100644
index 0000000..d6f5c09
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidBattleProgressRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidBattleProgressRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "v87b3Diq"; }
+ const char* GetAesKey() const override { return "Da0m39b1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.cpp
new file mode 100644
index 0000000..91913ea
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidFriendSelectRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidFriendSelectRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.hpp
new file mode 100644
index 0000000..4384991
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidFriendSelectRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidFriendSelectRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "zGk5R8Dd"; }
+ const char* GetAesKey() const override { return "DRJQatky"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.cpp
new file mode 100644
index 0000000..1a7e2cb
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidGuardSetupRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidGuardSetupRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.hpp
new file mode 100644
index 0000000..c7c6434
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidGuardSetupRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidGuardSetupRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Xdi3ebD9"; }
+ const char* GetAesKey() const override { return "TrDi19Bd"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.cpp
new file mode 100644
index 0000000..6501d6b
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.hpp
new file mode 100644
index 0000000..08978e0
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Ie01B83k"; }
+ const char* GetAesKey() const override { return "P93Db8q1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.cpp
new file mode 100644
index 0000000..10b0af1
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidJoinRoomRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidJoinRoomRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.hpp
new file mode 100644
index 0000000..6ba92c2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidJoinRoomRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidJoinRoomRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "L3D9eK19"; }
+ const char* GetAesKey() const override { return "9Ur3Dkb3"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.cpp
new file mode 100644
index 0000000..e0b0245
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidMemberDeployRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidMemberDeployRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.hpp
new file mode 100644
index 0000000..3dc2ae4
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMemberDeployRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidMemberDeployRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Z3d9b0ew"; }
+ const char* GetAesKey() const override { return "Bd83Dakb"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..4bb8ed7
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidMissionBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidMissionBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..6d134bd
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMissionBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidMissionBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "v83Diq7b"; }
+ const char* GetAesKey() const override { return "m39bDa01"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..3fc4dc8
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidMissionBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidMissionBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..c464d62
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidMissionBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidMissionBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "d735ub8o"; }
+ const char* GetAesKey() const override { return "bk7eob01"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.cpp
new file mode 100644
index 0000000..f128619
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidQuestObjectiveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidQuestObjectiveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.hpp
new file mode 100644
index 0000000..4872bb0
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidQuestObjectiveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidQuestObjectiveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "fd54Sey"; }
+ const char* GetAesKey() const override { return "F32dfFS"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.cpp
new file mode 100644
index 0000000..e3e9442
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRankingResultRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRankingResultRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.hpp
new file mode 100644
index 0000000..49b96d9
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRankingResultRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRankingResultRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "W1Daxfnz"; }
+ const char* GetAesKey() const override { return "eMMfFDVJ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..0fbc6ba
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..dd6327a
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7di8aie9"; }
+ const char* GetAesKey() const override { return "yh8ak18b"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.cpp
new file mode 100644
index 0000000..9dcbd09
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomCreateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomCreateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.hpp
new file mode 100644
index 0000000..5f2185f
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomCreateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomCreateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "U83BiqDw"; }
+ const char* GetAesKey() const override { return "Cv3DaI3W"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.cpp
new file mode 100644
index 0000000..382f221
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.hpp
new file mode 100644
index 0000000..34a28e2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "83kBdiqD"; }
+ const char* GetAesKey() const override { return "93Di3Ge8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.cpp
new file mode 100644
index 0000000..0a49581
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.hpp
new file mode 100644
index 0000000..c7ca345
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomListRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Q8Eib8Xv"; }
+ const char* GetAesKey() const override { return "UI3Da1B7"; }
+ // TODO: Response has 7 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.cpp
new file mode 100644
index 0000000..9b13051
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomMemberKickRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomMemberKickRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.hpp
new file mode 100644
index 0000000..407f174
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomMemberKickRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomMemberKickRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "M2dD4b0A"; }
+ const char* GetAesKey() const override { return "I2ixn4Ac"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.cpp
new file mode 100644
index 0000000..3fb1398
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomPartSkillListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomPartSkillListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.hpp
new file mode 100644
index 0000000..15ae6d3
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomPartSkillListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomPartSkillListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "26ZGiseY"; }
+ const char* GetAesKey() const override { return "00dU9t9M"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.cpp
new file mode 100644
index 0000000..ad2b1b2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomPartSkillSetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomPartSkillSetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.hpp
new file mode 100644
index 0000000..d0f2428
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomPartSkillSetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomPartSkillSetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ZZ9xaJoi"; }
+ const char* GetAesKey() const override { return "sdtfUs9y"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.cpp b/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.cpp
new file mode 100644
index 0000000..582203e
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRaidRoomUpdatedRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRaidRoomUpdatedRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.hpp b/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.hpp
new file mode 100644
index 0000000..129f0f4
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRaidRoomUpdatedRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRaidRoomUpdatedRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "L3D9eK19"; }
+ const char* GetAesKey() const override { return "9Ur3Dkb3"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.cpp b/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.cpp
new file mode 100644
index 0000000..c8b96c8
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRankingDetailRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRankingDetailRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.hpp b/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.hpp
new file mode 100644
index 0000000..4870603
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRankingDetailRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRankingDetailRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7ekSBz2y"; }
+ const char* GetAesKey() const override { return "tWF58aK0"; }
+ // TODO: Response has 10 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRankingRequestHandler.cpp b/gimuserver/gme/handlers/GuildRankingRequestHandler.cpp
new file mode 100644
index 0000000..a5e30cb
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRankingRequestHandler.hpp b/gimuserver/gme/handlers/GuildRankingRequestHandler.hpp
new file mode 100644
index 0000000..681f6b0
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2b9D01b4"; }
+ const char* GetAesKey() const override { return "23Djab0e"; }
+ // TODO: Response has 8 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.cpp b/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.cpp
new file mode 100644
index 0000000..f8f3feb
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRecomendedMemberRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRecomendedMemberRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.hpp b/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.hpp
new file mode 100644
index 0000000..1db48d2
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRecomendedMemberRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRecomendedMemberRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ja5Enusw"; }
+ const char* GetAesKey() const override { return "8upheqaC"; }
+ // TODO: Response has 7 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.cpp b/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.cpp
new file mode 100644
index 0000000..cb1828f
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildResearchInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildResearchInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.hpp b/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.hpp
new file mode 100644
index 0000000..396884e
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildResearchInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildResearchInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "0Dl4rdsn"; }
+ const char* GetAesKey() const override { return "ndk4sS0s"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.cpp b/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.cpp
new file mode 100644
index 0000000..d65a140
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRoundBattleSummaryRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRoundBattleSummaryRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.hpp b/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.hpp
new file mode 100644
index 0000000..418d155
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRoundBattleSummaryRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRoundBattleSummaryRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "aXPZmq9h"; }
+ const char* GetAesKey() const override { return "J90g7sZK"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.cpp b/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.cpp
new file mode 100644
index 0000000..bcd7d70
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildRoundSumarryRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildRoundSumarryRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.hpp b/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.hpp
new file mode 100644
index 0000000..0700203
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildRoundSumarryRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildRoundSumarryRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Xfpo7jE2"; }
+ const char* GetAesKey() const override { return "tVBMO5GW"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildSearchRequestHandler.cpp b/gimuserver/gme/handlers/GuildSearchRequestHandler.cpp
new file mode 100644
index 0000000..e7d5283
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildSearchRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildSearchRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildSearchRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildSearchRequestHandler.hpp b/gimuserver/gme/handlers/GuildSearchRequestHandler.hpp
new file mode 100644
index 0000000..b0238ec
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildSearchRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildSearchRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "R38ba9M3"; }
+ const char* GetAesKey() const override { return "0D18dQn4"; }
+ // TODO: Response has 9 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildShopUseRequestHandler.cpp b/gimuserver/gme/handlers/GuildShopUseRequestHandler.cpp
new file mode 100644
index 0000000..4645503
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildShopUseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildShopUseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildShopUseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildShopUseRequestHandler.hpp b/gimuserver/gme/handlers/GuildShopUseRequestHandler.hpp
new file mode 100644
index 0000000..e15c228
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildShopUseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildShopUseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "cXi7b58e"; }
+ const char* GetAesKey() const override { return "jK18btd0"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildTradeRequestHandler.cpp b/gimuserver/gme/handlers/GuildTradeRequestHandler.cpp
new file mode 100644
index 0000000..e49a6be
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildTradeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildTradeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildTradeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildTradeRequestHandler.hpp b/gimuserver/gme/handlers/GuildTradeRequestHandler.hpp
new file mode 100644
index 0000000..f6895af
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildTradeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildTradeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "38adiJeb"; }
+ const char* GetAesKey() const override { return "ja3biAqb"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildUpdateRequestHandler.cpp b/gimuserver/gme/handlers/GuildUpdateRequestHandler.cpp
new file mode 100644
index 0000000..e30f856
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildUpdateRequestHandler.hpp b/gimuserver/gme/handlers/GuildUpdateRequestHandler.hpp
new file mode 100644
index 0000000..39186ad
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "92bDoqBi"; }
+ const char* GetAesKey() const override { return "w3Bne038"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.cpp b/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.cpp
new file mode 100644
index 0000000..4b3e4a4
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildUpgradeContRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildUpgradeContRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.hpp b/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.hpp
new file mode 100644
index 0000000..85268d3
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpgradeContRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildUpgradeContRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "38bad198"; }
+ const char* GetAesKey() const override { return "d38bHiqj"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuildUpgradeRequestHandler.cpp b/gimuserver/gme/handlers/GuildUpgradeRequestHandler.cpp
new file mode 100644
index 0000000..2842ef9
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpgradeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuildUpgradeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuildUpgradeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuildUpgradeRequestHandler.hpp b/gimuserver/gme/handlers/GuildUpgradeRequestHandler.hpp
new file mode 100644
index 0000000..612ce4e
--- /dev/null
+++ b/gimuserver/gme/handlers/GuildUpgradeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuildUpgradeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "a38B82bG"; }
+ const char* GetAesKey() const override { return "7Ykwq038"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.cpp b/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.cpp
new file mode 100644
index 0000000..e7acc33
--- /dev/null
+++ b/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "GuilldBattleMoveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::GuilldBattleMoveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.hpp b/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.hpp
new file mode 100644
index 0000000..64d2733
--- /dev/null
+++ b/gimuserver/gme/handlers/GuilldBattleMoveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class GuilldBattleMoveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "8b6DKiqz"; }
+ const char* GetAesKey() const override { return "b8akzyk1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/HomeInfoHandler.cpp b/gimuserver/gme/handlers/HomeInfoHandler.cpp
deleted file mode 100644
index 7df6c74..0000000
--- a/gimuserver/gme/handlers/HomeInfoHandler.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "HomeInfoHandler.hpp"
-#include "gme/response/ReinforcementInfo.hpp"
-
-void Handler::HomeInfoHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
-
-}
diff --git a/gimuserver/gme/handlers/HomeInfoRequestHandler.cpp b/gimuserver/gme/handlers/HomeInfoRequestHandler.cpp
new file mode 100644
index 0000000..06dfd2f
--- /dev/null
+++ b/gimuserver/gme/handlers/HomeInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "HomeInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::HomeInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/HomeInfoHandler.hpp b/gimuserver/gme/handlers/HomeInfoRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/HomeInfoHandler.hpp
rename to gimuserver/gme/handlers/HomeInfoRequestHandler.hpp
index 9ca39e6..8a31563 100644
--- a/gimuserver/gme/handlers/HomeInfoHandler.hpp
+++ b/gimuserver/gme/handlers/HomeInfoRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class HomeInfoHandler : public HandlerBase
+class HomeInfoRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "NiYWKdzs"; }
diff --git a/gimuserver/gme/handlers/InboxMessageManageRequestHandler.cpp b/gimuserver/gme/handlers/InboxMessageManageRequestHandler.cpp
new file mode 100644
index 0000000..a6e89d3
--- /dev/null
+++ b/gimuserver/gme/handlers/InboxMessageManageRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "InboxMessageManageRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::InboxMessageManageRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/InboxMessageManageRequestHandler.hpp b/gimuserver/gme/handlers/InboxMessageManageRequestHandler.hpp
new file mode 100644
index 0000000..10cb190
--- /dev/null
+++ b/gimuserver/gme/handlers/InboxMessageManageRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class InboxMessageManageRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "rYSfaC4P"; }
+ const char* GetAesKey() const override { return "0R9ZPaSf"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/InitializeHandler.cpp b/gimuserver/gme/handlers/InitializeRequest2Handler.cpp
similarity index 67%
rename from gimuserver/gme/handlers/InitializeHandler.cpp
rename to gimuserver/gme/handlers/InitializeRequest2Handler.cpp
index 6db0dd9..82a6f37 100644
--- a/gimuserver/gme/handlers/InitializeHandler.cpp
+++ b/gimuserver/gme/handlers/InitializeRequest2Handler.cpp
@@ -1,8 +1,14 @@
-#include "InitializeHandler.hpp"
+#include "InitializeRequest2Handler.hpp"
#include "core/Utils.hpp"
#include "core/System.hpp"
#include "gme/requests/UserInfo.hpp"
#include "gme/response/UserInfo.hpp"
+// DEV_SKIP_TUTORIAL flag — defined in AccountController.hpp/cpp.
+// We need it here to gate the tutorialEndFlag force-set in OnUserInfoSuccess.
+// TODO (tutorial): Remove this include when DEV_SKIP_TUTORIAL is retired.
+#ifndef DEV_SKIP_TUTORIAL
+#define DEV_SKIP_TUTORIAL 0
+#endif
#include "gme/response/SignalKey.hpp"
#include "gme/response/ChallengeArenaUserInfo.hpp"
#include "gme/response/DailyTaskPrizeMst.hpp"
@@ -18,7 +24,7 @@
#include "gme/response/SummonerJournalUserInfo.hpp"
#include "db/DbMacro.hpp"
-void Handler::InitializeHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+void Handler::InitializeRequest2Handler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
{
Request::UserInfo inInfo;
inInfo.Deserialize(req);
@@ -31,7 +37,8 @@ void Handler::InitializeHandler::Handle(UserInfo& user, DrogonCallback cb, const
);
}
-void Handler::InitializeHandler::OnUserInfoSuccess(const drogon::orm::Result& result, DrogonCallback cb, UserInfo& user) const
+
+void Handler::InitializeRequest2Handler::OnUserInfoSuccess(const drogon::orm::Result& result, DrogonCallback cb, UserInfo& user) const
{
if (result.size() > 0)
{
@@ -40,8 +47,30 @@ void Handler::InitializeHandler::OnUserInfoSuccess(const drogon::orm::Result& re
user.info.accountID = sql[col++].as();
user.info.handleName = sql[col++].as();
user.info.debugMode = sql[col++].as() ? 1 : 0;
+
+ // DEV_SKIP_TUTORIAL: Force tutorial complete for all existing users.
+ //
+ // Root cause of the post-asset-validation crash:
+ // AccountController::HandleGuest inserts the user row into the DB before
+ // this handler is ever called, so result.size() > 0 is ALWAYS true for our
+ // seeded account. The else-branch below (which sets tutorialEndFlag=1) is
+ // therefore never reached. tutorialEndFlag stays at the struct default of 0,
+ // the client receives "tutorial not complete", attempts the tutorial sequence,
+ // hits an unimplemented tutorial handler, gets a bad/empty response, crashes.
+ //
+ // TODO (tutorial): Remove this block once tutorialEndFlag is persisted in the
+ // users table. Add a tutorial_end_flag INTEGER column via a new migration:
+ // "ALTER TABLE users ADD COLUMN tutorial_end_flag INTEGER DEFAULT 0;"
+ // The tutorial-completion handler should UPDATE it to 1 after the player
+ // picks their starter unit. Read it back here alongside account_id/username.
+#if DEV_SKIP_TUTORIAL
+ user.info.tutorialEndFlag = 1;
+ user.info.tutorialStatus = 0;
+#endif
}
else {
+ // New user that somehow isn't in the DB yet (race between HandleGuest's async
+ // INSERT and this handler being called -- should be rare but possible).
user.info.handleName = "BFOM: 03/03/2024";
user.info.debugMode = false;
user.info.accountID = Utils::RandomAccountID();
@@ -110,8 +139,8 @@ void Handler::InitializeHandler::OnUserInfoSuccess(const drogon::orm::Result& re
{
Response::DailyTaskMst dailyTasks;
- // TODO: we need a daily task table so that we
- // can select how many daily tasks we can do
+ // TODO: we need a daily task table so that we
+ // can select how many daily tasks we can do
Response::DailyTaskMst::Data d;
d.typeKey = "AV";
d.typeTitle = "Arena Victory";
@@ -159,4 +188,4 @@ void Handler::InitializeHandler::OnUserInfoSuccess(const drogon::orm::Result& re
msts.CopyInitializeMstTo(res);
cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
+}
\ No newline at end of file
diff --git a/gimuserver/gme/handlers/InitializeHandler.hpp b/gimuserver/gme/handlers/InitializeRequest2Handler.hpp
similarity index 88%
rename from gimuserver/gme/handlers/InitializeHandler.hpp
rename to gimuserver/gme/handlers/InitializeRequest2Handler.hpp
index e021ca4..f22d116 100644
--- a/gimuserver/gme/handlers/InitializeHandler.hpp
+++ b/gimuserver/gme/handlers/InitializeRequest2Handler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class InitializeHandler : public HandlerBase
+class InitializeRequest2Handler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "MfZyu1q9"; }
diff --git a/gimuserver/gme/handlers/InitializeRequestHandler.cpp b/gimuserver/gme/handlers/InitializeRequestHandler.cpp
new file mode 100644
index 0000000..ebbfa19
--- /dev/null
+++ b/gimuserver/gme/handlers/InitializeRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "InitializeRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::InitializeRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/InitializeRequestHandler.hpp b/gimuserver/gme/handlers/InitializeRequestHandler.hpp
new file mode 100644
index 0000000..3ee6f4f
--- /dev/null
+++ b/gimuserver/gme/handlers/InitializeRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class InitializeRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "MfZyu1q9"; }
+ const char* GetAesKey() const override { return "EmcshnQoDr20TZz1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/InvitationReceiptRequestHandler.cpp b/gimuserver/gme/handlers/InvitationReceiptRequestHandler.cpp
new file mode 100644
index 0000000..c64d798
--- /dev/null
+++ b/gimuserver/gme/handlers/InvitationReceiptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "InvitationReceiptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::InvitationReceiptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/InvitationReceiptRequestHandler.hpp b/gimuserver/gme/handlers/InvitationReceiptRequestHandler.hpp
new file mode 100644
index 0000000..1392618
--- /dev/null
+++ b/gimuserver/gme/handlers/InvitationReceiptRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class InvitationReceiptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7Zxr9PzB"; }
+ const char* GetAesKey() const override { return "7s5Ic3Nx"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemEditRequestHandler.cpp b/gimuserver/gme/handlers/ItemEditRequestHandler.cpp
new file mode 100644
index 0000000..6e0a0b3
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemEditRequestHandler.hpp b/gimuserver/gme/handlers/ItemEditRequestHandler.hpp
new file mode 100644
index 0000000..14dab15
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ruoB7bD8"; }
+ const char* GetAesKey() const override { return "DHEfRexCu0q5TAQm"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemFavoriteRequestHandler.cpp b/gimuserver/gme/handlers/ItemFavoriteRequestHandler.cpp
new file mode 100644
index 0000000..3a75e15
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemFavoriteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemFavoriteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemFavoriteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemFavoriteRequestHandler.hpp b/gimuserver/gme/handlers/ItemFavoriteRequestHandler.hpp
new file mode 100644
index 0000000..343a5a9
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemFavoriteRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemFavoriteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "I8il6EiI"; }
+ const char* GetAesKey() const override { return "aRoIftRy"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemMixRequestHandler.cpp b/gimuserver/gme/handlers/ItemMixRequestHandler.cpp
new file mode 100644
index 0000000..b319110
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemMixRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemMixRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemMixRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemMixRequestHandler.hpp b/gimuserver/gme/handlers/ItemMixRequestHandler.hpp
new file mode 100644
index 0000000..53bbbd1
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemMixRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemMixRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4P5GELTF"; }
+ const char* GetAesKey() const override { return "AFqKIJ8Z4mHPB9xg"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemSellRequestHandler.cpp b/gimuserver/gme/handlers/ItemSellRequestHandler.cpp
new file mode 100644
index 0000000..e22df40
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemSellRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemSellRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemSellRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemSellRequestHandler.hpp b/gimuserver/gme/handlers/ItemSellRequestHandler.hpp
new file mode 100644
index 0000000..d85a2e2
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemSellRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemSellRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "qDQerU74"; }
+ const char* GetAesKey() const override { return "73aFNjPu"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.cpp b/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.cpp
new file mode 100644
index 0000000..e7d5486
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemSphereEqpRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemSphereEqpRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.hpp b/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.hpp
new file mode 100644
index 0000000..94fe269
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemSphereEqpRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemSphereEqpRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "0IXGiC9t"; }
+ const char* GetAesKey() const override { return "CZE56XAY"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.cpp b/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.cpp
new file mode 100644
index 0000000..b0b3e1b
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ItemUseTimeLimitRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ItemUseTimeLimitRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.hpp b/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.hpp
new file mode 100644
index 0000000..fa84620
--- /dev/null
+++ b/gimuserver/gme/handlers/ItemUseTimeLimitRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ItemUseTimeLimitRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4eCLR4rq"; }
+ const char* GetAesKey() const override { return "1O3NPf93"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameCardEndRequestHandler.cpp b/gimuserver/gme/handlers/MinigameCardEndRequestHandler.cpp
new file mode 100644
index 0000000..76e37ac
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameCardEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameCardEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameCardEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameCardEndRequestHandler.hpp b/gimuserver/gme/handlers/MinigameCardEndRequestHandler.hpp
new file mode 100644
index 0000000..0b04f01
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameCardEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameCardEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jJKzi0v2"; }
+ const char* GetAesKey() const override { return "eHt7ob1v"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameFriendListRequestHandler.cpp b/gimuserver/gme/handlers/MinigameFriendListRequestHandler.cpp
new file mode 100644
index 0000000..d660569
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameFriendListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameFriendListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameFriendListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameFriendListRequestHandler.hpp b/gimuserver/gme/handlers/MinigameFriendListRequestHandler.hpp
new file mode 100644
index 0000000..3685adc
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameFriendListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameFriendListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Hjk84giw"; }
+ const char* GetAesKey() const override { return "9qg5s7ob"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.cpp b/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.cpp
new file mode 100644
index 0000000..d027ab0
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameNameEntryRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameNameEntryRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.hpp b/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.hpp
new file mode 100644
index 0000000..d8ec502
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameNameEntryRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameNameEntryRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "oT8OP9Bp"; }
+ const char* GetAesKey() const override { return "0xzd3AlK"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.cpp b/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.cpp
new file mode 100644
index 0000000..d722408
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameRankingInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameRankingInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.hpp b/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.hpp
new file mode 100644
index 0000000..cce7689
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameRankingInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameRankingInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "XrfDHUJo"; }
+ const char* GetAesKey() const override { return "cw9sw5y2"; }
+ // TODO: Response has 4 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.cpp b/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.cpp
new file mode 100644
index 0000000..f91df6d
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameSmashEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameSmashEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.hpp b/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.hpp
new file mode 100644
index 0000000..2dba0ab
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameSmashEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameSmashEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jJKzi0v2"; }
+ const char* GetAesKey() const override { return "eHt7ob1v"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MinigameStartRequestHandler.cpp b/gimuserver/gme/handlers/MinigameStartRequestHandler.cpp
new file mode 100644
index 0000000..f1cf6bd
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MinigameStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MinigameStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MinigameStartRequestHandler.hpp b/gimuserver/gme/handlers/MinigameStartRequestHandler.hpp
new file mode 100644
index 0000000..7be0f62
--- /dev/null
+++ b/gimuserver/gme/handlers/MinigameStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MinigameStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "SR7tf9pa"; }
+ const char* GetAesKey() const override { return "XBSu90iF"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MissionContinueRequestHandler.cpp b/gimuserver/gme/handlers/MissionContinueRequestHandler.cpp
new file mode 100644
index 0000000..5222dc0
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionContinueRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MissionContinueRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MissionContinueRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MissionContinueRequestHandler.hpp b/gimuserver/gme/handlers/MissionContinueRequestHandler.hpp
new file mode 100644
index 0000000..c865d88
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionContinueRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MissionContinueRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "p8B2i9rJ"; }
+ const char* GetAesKey() const override { return "G3FwvQfy5hcxHMen"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MissionEndRequestHandler.cpp b/gimuserver/gme/handlers/MissionEndRequestHandler.cpp
new file mode 100644
index 0000000..1d667e0
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MissionEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MissionEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MissionEndRequestHandler.hpp b/gimuserver/gme/handlers/MissionEndRequestHandler.hpp
new file mode 100644
index 0000000..9f53419
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MissionEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "9TvyNR5H"; }
+ const char* GetAesKey() const override { return "oINq0rfUFPx5MgmT"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MissionRestartRequestHandler.cpp b/gimuserver/gme/handlers/MissionRestartRequestHandler.cpp
new file mode 100644
index 0000000..c6b8c91
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MissionRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MissionRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MissionRestartRequestHandler.hpp b/gimuserver/gme/handlers/MissionRestartRequestHandler.hpp
new file mode 100644
index 0000000..5e7eccd
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MissionRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "IP96ys7T"; }
+ const char* GetAesKey() const override { return "0Zy3G9eD"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MissionStartHandler.cpp b/gimuserver/gme/handlers/MissionStartHandler.cpp
deleted file mode 100644
index 8800612..0000000
--- a/gimuserver/gme/handlers/MissionStartHandler.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "MissionStartHandler.hpp"
-
-void Handler::MissionStartHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- Json::Value res;
-
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
diff --git a/gimuserver/gme/handlers/MissionStartRequestHandler.cpp b/gimuserver/gme/handlers/MissionStartRequestHandler.cpp
new file mode 100644
index 0000000..dae066f
--- /dev/null
+++ b/gimuserver/gme/handlers/MissionStartRequestHandler.cpp
@@ -0,0 +1,535 @@
+#include "MissionStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "gme/response/MissionStartInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MissionStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ Response::MissionStartInfo missionInfo;
+ Response::MissionStartInfo::Data d;
+ d.userID = user.info.userID;
+ d.reinforceUserID = "n9ZMPC0t";
+ d.friendPoint = 42640;
+ d.missionID = "10";
+ d.deckNum = 1;
+ missionInfo.Mst.emplace_back(d);
+ missionInfo.Serialize(res);
+
+ {
+ Json::Value status;
+ status["Kn51uR4Y"] = "0h6Q08SL";
+ res["6FrKacq7"].append(status);
+ }
+
+ {
+ Json::Value userState;
+ userState["h7eY3sAK"] = "n9ZMPC0t";
+ userState["D9wXQI2V"] = "309";
+ userState["d96tuT2E"] = "232666";
+ userState["YnM14RIP"] = "199";
+ userState["0P9X1YHs"] = "196";
+ userState["V0yJS7vZ"] = "1650627374";
+ userState["f0IY4nj8"] = 540;
+ userState["9m5FWR8q"] = "3";
+ userState["YS2JG9no"] = "2";
+ userState["32HCWt51"] = "1650627005";
+ userState["jp9s8IyY"] = 3231;
+ userState["ouXxIY63"] = "150";
+ userState["Px1X7fcd"] = "620";
+ userState["QYP4kId9"] = "383";
+ userState["Z0Y4RoD7"] = "1";
+ userState["gKNfIZiA"] = 2;
+ userState["TwqMChon"] = "-1,-99,-99";
+ userState["3u41PhR2"] = "50";
+ userState["2rR5s6wn"] = "0";
+ userState["5pjoGBC4"] = "200";
+ userState["iI7Wj6pM"] = "125";
+ userState["J3stQ7jd"] = "42640";
+ userState["Najhr8m6"] = "64394391";
+ userState["HTVh8a65"] = "99202910";
+ userState["03UGMHxF"] = "225";
+ userState["bM7RLu5K"] = "La Gimu Trolla PUNTO";
+ userState["s2WnRw9N"] = "460,420,430,0,0";
+ userState["EfinBo65"] = "7";
+ userState["qVBx7g2c"] = "0";
+ userState["1RQT92uE"] = "0";
+ userState["kW5QuUz7"] = "20220422";
+ userState["3w6YDS4z"] = "3";
+ userState["lKuj3Ier"] = "";
+ userState["JmFn3g9t"] = "0";
+ userState["9r3aLmaB"] = "1";
+ userState["bya9a67k"] = "2580";
+ userState["22rqpZTo"] = "3285";
+ userState["KAZmxkgy"] = 0;
+ userState["AKP8t3xK"] = 0;
+ userState["Nou5bCmm"] = 0;
+ userState["s3uU4Lgb"] = 1;
+ userState["3a8b9D8i"] = "0";
+ userState["7qncTHUJ"] = 0;
+ userState["38d7D18b"] = 0;
+ userState["D38bda8B"] = 0;
+ userState["Qo9doUsp"] = 0;
+ userState["d37CaiX1"] = 0;
+ userState["92uj7oXB"] = 0;
+ res["fEi17cnx"].append(userState);
+ }
+
+ {
+ Json::Value reinforceUser;
+ reinforceUser["h7eY3sAK"] = "n9ZMPC0t";
+ reinforceUser["dD64grYH"] = "334";
+ reinforceUser["3w6YDS4z"] = "20";
+ reinforceUser["d96tuT2E"] = "36216751";
+ reinforceUser["pThS5FE3"] = "152762744";
+ reinforceUser["mn5Tj3fz"] = "125539575";
+ reinforceUser["jG91JRxN"] = "36137127";
+ reinforceUser["06phPeqv"] = "35791092";
+ reinforceUser["Zq8ej5IN"] = "346035";
+ reinforceUser["isRx41jy"] = "147217074";
+ reinforceUser["20qd9shE"] = "48090082";
+ reinforceUser["Sf95jez7"] = 146280;
+ reinforceUser["I29Qgxot"] = "124800";
+ reinforceUser["WMC6rNF1"] = "702";
+ reinforceUser["Z93pUQhG"] = "2180";
+ reinforceUser["Rc6St9h1"] = "45";
+ reinforceUser["k5Sjn9Zq"] = "7849";
+ reinforceUser["c3Bo97kI"] = "2674";
+ reinforceUser["Gt2msFb1"] = "7050";
+ reinforceUser["07HgoLtC"] = "1";
+ reinforceUser["AEz43gai"] = "0";
+ reinforceUser["8CEu9Kcm"] = "0";
+ reinforceUser["3DBVLY8H"] = "2887";
+ reinforceUser["c4im6B2v"] = 2092;
+ reinforceUser["UCN04WxE"] = "1994";
+ reinforceUser["ovFJ6Hp0"] = "15045";
+ reinforceUser["TW1Mrtp5"] = "502";
+ reinforceUser["5NRJQ1LU"] = "824760049";
+ reinforceUser["XP06YWdT"] = "569";
+ reinforceUser["U8uZLA34"] = "666505";
+ reinforceUser["rZQJF5G9"] = "51673";
+ reinforceUser["0LwvAF3H"] = "10523";
+ reinforceUser["rQ3TAy6I"] = "10116";
+ reinforceUser["hoG2ieT5"] = "5461379";
+ reinforceUser["6PLsn8xo"] = "2114221";
+ reinforceUser["84BC2kXw"] = "3418";
+ reinforceUser["5pg7MYCQ"] = "576";
+ reinforceUser["mFID53JZ"] = "1124";
+ reinforceUser["e6BKoYy9"] = "1814061344";
+ res["zI2tJB7R"].append(reinforceUser);
+ }
+
+ {
+ Json::Value mission;
+ mission["ZSf8e1MG"] = "11";
+ mission["j28VNcUW"] = "10";
+ mission["VETu07N6"] = "1";
+ mission["ug9xV4Fz"] = "50";
+ mission["5aetPz3C"] = "0";
+ mission["mFxqsc7Y"] = "0";
+ mission["etM5TCb9"] = "0";
+ mission["Qzhp8B40"] = "101301";
+ res["pj41dy9g"].append(mission);
+
+ mission["ZSf8e1MG"] = "12";
+ mission["j28VNcUW"] = "10";
+ mission["VETu07N6"] = "2";
+ mission["ug9xV4Fz"] = "50";
+ mission["5aetPz3C"] = "0";
+ mission["mFxqsc7Y"] = "0";
+ mission["etM5TCb9"] = "0";
+ mission["Qzhp8B40"] = "101302";
+ res["pj41dy9g"].append(mission);
+
+ mission["ZSf8e1MG"] = "14";
+ mission["j28VNcUW"] = "10";
+ mission["VETu07N6"] = "3";
+ mission["ug9xV4Fz"] = "50";
+ mission["5aetPz3C"] = "0";
+ mission["mFxqsc7Y"] = "0";
+ mission["etM5TCb9"] = "0";
+ mission["Qzhp8B40"] = "101300";
+ res["pj41dy9g"].append(mission);
+
+ mission["ZSf8e1MG"] = "16";
+ mission["j28VNcUW"] = "10";
+ mission["VETu07N6"] = "4";
+ mission["ug9xV4Fz"] = "50";
+ mission["5aetPz3C"] = "0";
+ mission["mFxqsc7Y"] = "0";
+ mission["etM5TCb9"] = "0";
+ mission["Qzhp8B40"] = "101302";
+ res["pj41dy9g"].append(mission);
+
+ mission["ZSf8e1MG"] = "18";
+ mission["j28VNcUW"] = "10";
+ mission["VETu07N6"] = "5";
+ mission["ug9xV4Fz"] = "100";
+ mission["5aetPz3C"] = "0";
+ mission["mFxqsc7Y"] = "0";
+ mission["etM5TCb9"] = "1";
+ mission["Qzhp8B40"] = "101304";
+ res["pj41dy9g"].append(mission);
+ }
+
+ {
+ Json::Value bonus;
+ bonus["k9cxD7Ba"] = "58844709";
+ bonus["j3g5P4cq"] = "1";
+ bonus["nA95Bdj6"] = "0";
+ bonus["5Z1LNoyH"] = "0";
+ bonus["LE6JkUp7"] = "1|0:25:30030:1:1| @2|0:25:10030:1:1| @3| |1/1/4:25:10000:1@4|1:30:50030:2:2| @5| | ";
+ res["Kz7qfSs5"].append(bonus);
+ }
+
+ {
+ Json::Value missionData;
+ missionData["Qzhp8B40"] = "101301";
+ missionData["q9I4karx"] = "??????1-2";
+ missionData["o49dYfpH"] = "30352";
+ missionData["hZtF1s8B"] = "0";
+ missionData["3g8PW6x0"] = "180:302";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:30030:1:0,30:30030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101301";
+ missionData["q9I4karx"] = "??????1-2";
+ missionData["o49dYfpH"] = "40352";
+ missionData["hZtF1s8B"] = "1";
+ missionData["3g8PW6x0"] = "120:248";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:40030:1:0,30:40030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101302";
+ missionData["q9I4karx"] = "??????2-1";
+ missionData["o49dYfpH"] = "10352";
+ missionData["hZtF1s8B"] = "0";
+ missionData["3g8PW6x0"] = "180:302";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:10030:1:0,30:10030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101302";
+ missionData["q9I4karx"] = "??????2-1";
+ missionData["o49dYfpH"] = "50352";
+ missionData["hZtF1s8B"] = "1";
+ missionData["3g8PW6x0"] = "120:248";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:50030:1:0,30:50030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101302";
+ missionData["q9I4karx"] = "??????2-1";
+ missionData["o49dYfpH"] = "30352";
+ missionData["hZtF1s8B"] = "2";
+ missionData["3g8PW6x0"] = "96:352";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:30030:1:0,30:30030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101300";
+ missionData["q9I4karx"] = "??????1-1";
+ missionData["o49dYfpH"] = "10352";
+ missionData["hZtF1s8B"] = "0";
+ missionData["3g8PW6x0"] = "180:302";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:10030:1:0,30:10030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101300";
+ missionData["q9I4karx"] = "??????1-1";
+ missionData["o49dYfpH"] = "20352";
+ missionData["hZtF1s8B"] = "1";
+ missionData["3g8PW6x0"] = "120:248";
+ missionData["i30R8TAs"] = "7:10000:3,7:10300:3";
+ missionData["hw3L0uVj"] = "25:20030:1:0,30:20030:2:0";
+ missionData["5wB9SHAV"] = "15,25:500,25:250,25:10,25:10000:1";
+ res["75t0sx9z"].append(missionData);
+
+ missionData["Qzhp8B40"] = "101304";
+ missionData["q9I4karx"] = "??????boss";
+ missionData["o49dYfpH"] = "40401";
+ missionData["hZtF1s8B"] = "0";
+ missionData["3g8PW6x0"] = "180:302";
+ missionData["i30R8TAs"] = "7:10301:5,3:10603:1";
+ missionData["hw3L0uVj"] = "0:0:0:0,0:0:0:0";
+ missionData["5wB9SHAV"] = "0,25:500,25:250,25:10,25:10301:1";
+ res["75t0sx9z"].append(missionData);
+ }
+
+ {
+ Json::Value enemy;
+ enemy["o49dYfpH"] = "30352";
+ enemy["Btf93Xs1"] = "????Lv2";
+ enemy["3evIn0zZ"] = "????";
+ enemy["e7DK0FQT"] = "830";
+ enemy["67CApcti"] = "340";
+ enemy["q08xLEsy"] = "90";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "3";
+ enemy["eyUo6a8c"] = "24:123:1";
+ enemy["6Aou5M9r"] = "30:100:2:1";
+ enemy["n9h7p02P"] = "1";
+ enemy["Najhr8m6"] = "33";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "21";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "5";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "30030";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??87";
+ res["U0v5IeJo"].append(enemy);
+
+ enemy["o49dYfpH"] = "40352";
+ enemy["Btf93Xs1"] = "????Lv2";
+ enemy["3evIn0zZ"] = "????";
+ enemy["e7DK0FQT"] = "760";
+ enemy["67CApcti"] = "370";
+ enemy["q08xLEsy"] = "0";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "4";
+ enemy["eyUo6a8c"] = "24:124:1";
+ enemy["6Aou5M9r"] = "30:100:2:1";
+ enemy["n9h7p02P"] = "1";
+ enemy["Najhr8m6"] = "30";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "19";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "2";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "40030";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??120";
+ res["U0v5IeJo"].append(enemy);
+
+ enemy["o49dYfpH"] = "10352";
+ enemy["Btf93Xs1"] = "????Lv2";
+ enemy["3evIn0zZ"] = "????";
+ enemy["e7DK0FQT"] = "800";
+ enemy["67CApcti"] = "320";
+ enemy["q08xLEsy"] = "50";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "1";
+ enemy["eyUo6a8c"] = "24:121:1";
+ enemy["6Aou5M9r"] = "30:100:2:1";
+ enemy["n9h7p02P"] = "3";
+ enemy["Najhr8m6"] = "32";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "20";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "5";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "10030";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??21";
+ res["U0v5IeJo"].append(enemy);
+
+ enemy["o49dYfpH"] = "50352";
+ enemy["Btf93Xs1"] = "????Lv2";
+ enemy["3evIn0zZ"] = "????";
+ enemy["e7DK0FQT"] = "850";
+ enemy["67CApcti"] = "340";
+ enemy["q08xLEsy"] = "60";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "5";
+ enemy["eyUo6a8c"] = "24:125:1";
+ enemy["6Aou5M9r"] = "30:100:2:1";
+ enemy["n9h7p02P"] = "1";
+ enemy["Najhr8m6"] = "34";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "21";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "1";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "50030";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??153";
+ res["U0v5IeJo"].append(enemy);
+
+ enemy["o49dYfpH"] = "20352";
+ enemy["Btf93Xs1"] = "????Lv2";
+ enemy["3evIn0zZ"] = "????";
+ enemy["e7DK0FQT"] = "780";
+ enemy["67CApcti"] = "330";
+ enemy["q08xLEsy"] = "20";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "2";
+ enemy["eyUo6a8c"] = "24:122:1";
+ enemy["6Aou5M9r"] = "30:100:2:1";
+ enemy["n9h7p02P"] = "1";
+ enemy["Najhr8m6"] = "31";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "20";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "5";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "20030";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??54";
+ res["U0v5IeJo"].append(enemy);
+
+ enemy["o49dYfpH"] = "40401";
+ enemy["Btf93Xs1"] = "???????Lv1";
+ enemy["3evIn0zZ"] = "???????";
+ enemy["e7DK0FQT"] = "2500";
+ enemy["67CApcti"] = "470";
+ enemy["q08xLEsy"] = "30";
+ enemy["CEeqs63b"] = "0:0:0:0:0:0";
+ enemy["iNy0ZU5M"] = "4";
+ enemy["eyUo6a8c"] = "36:124:1";
+ enemy["6Aou5M9r"] = "42:100:2:1";
+ enemy["n9h7p02P"] = "1";
+ enemy["Najhr8m6"] = "100";
+ enemy["9FN0GAei"] = "5";
+ enemy["HTVh8a65"] = "63";
+ enemy["vNk2sI4X"] = "5";
+ enemy["9pXSKmn1"] = "0";
+ enemy["J2hPXGo5"] = "2";
+ enemy["mv4o39Uz"] = "1";
+ enemy["h2L1YI90"] = "1";
+ enemy["XE7Yi5c3"] = "1";
+ enemy["D4Y5bWK7"] = "1";
+ enemy["oMGC3hW0"] = "1";
+ enemy["m4EK7Gt6"] = "1";
+ enemy["6fwL59FT"] = "100.00";
+ enemy["i74vGUFa"] = "1";
+ enemy["F4bQ7r8C"] = "";
+ enemy["hjAy9St3"] = "";
+ enemy["2Smu5Mtq"] = "";
+ enemy["2EF0d6ue"] = "";
+ enemy["QqfI9mM4"] = "";
+ enemy["CYk84E3W"] = "0,0";
+ enemy["3BpHN6VD"] = "";
+ enemy["Lkh6gYkT"] = "0,0";
+ enemy["pn16CNah"] = "40031";
+ enemy["Y6bd4fXp"] = "0,0,0";
+ enemy["jm6JSK2D"] = "";
+ enemy["qp37xTDh"] = "??121";
+ res["U0v5IeJo"].append(enemy);
+ }
+
+ res["8hoyIF9Q"] = Json::arrayValue;
+ res["VZwB7f3j"] = Json::arrayValue;
+
+ {
+ Json::Value status;
+ status["Kn51uR4Y"] = "0";
+ res["nAligJSQ"].append(status);
+ }
+
+ {
+ Json::Value clientInfo;
+ clientInfo["h7eY3sAK"] = "n9ZMPC0t";
+ clientInfo["B5JQyV8j"] = "Arves100";
+ clientInfo["iN7buP0j"] = "WAS-LX1A_android8.0.0";
+ clientInfo["Ma5GnU0H"] = "4e457983-74b0-4ea7-9a98-1c5890dfc836";
+ res["IKqx1Cn9"].append(clientInfo);
+ }
+
+ {
+ Json::Value announcement;
+ announcement["xJNom6i0"] = "3876";
+ announcement["jsRoN50z"] = "http://ios21900.bfww.gumi.sg//news.gumi.sg/bravefrontier/news/files/html/2022-03/Closure_Announcement_033022_1648608188.html";
+ res["Pj6zDW3m"] = announcement;
+ }
+
+ std::cout << "MissionStartHandler response: " << res.toStyledString() << std::endl;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MissionStartHandler.hpp b/gimuserver/gme/handlers/MissionStartRequestHandler.hpp
similarity index 85%
rename from gimuserver/gme/handlers/MissionStartHandler.hpp
rename to gimuserver/gme/handlers/MissionStartRequestHandler.hpp
index e369fb1..dcea344 100644
--- a/gimuserver/gme/handlers/MissionStartHandler.hpp
+++ b/gimuserver/gme/handlers/MissionStartRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class MissionStartHandler : public HandlerBase
+class MissionStartRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "jE6Sp0q4"; }
diff --git a/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.cpp b/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.cpp
new file mode 100644
index 0000000..35f7c6b
--- /dev/null
+++ b/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MultiGachaIapPurchaseIapRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MultiGachaIapPurchaseIapRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.hpp b/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.hpp
new file mode 100644
index 0000000..0d5c4ef
--- /dev/null
+++ b/gimuserver/gme/handlers/MultiGachaIapPurchaseIapRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MultiGachaIapPurchaseIapRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jk17biw9"; }
+ const char* GetAesKey() const override { return "gIT163bi"; }
+ // TODO: Response has 5 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.cpp b/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.cpp
new file mode 100644
index 0000000..69db5f5
--- /dev/null
+++ b/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MysteryBoxClaimRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MysteryBoxClaimRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.hpp b/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.hpp
new file mode 100644
index 0000000..3f02e6a
--- /dev/null
+++ b/gimuserver/gme/handlers/MysteryBoxClaimRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MysteryBoxClaimRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2paswUpR"; }
+ const char* GetAesKey() const override { return "kadRadU5"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/MysteryBoxListRequestHandler.cpp b/gimuserver/gme/handlers/MysteryBoxListRequestHandler.cpp
new file mode 100644
index 0000000..1d17b2a
--- /dev/null
+++ b/gimuserver/gme/handlers/MysteryBoxListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "MysteryBoxListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::MysteryBoxListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/MysteryBoxListRequestHandler.hpp b/gimuserver/gme/handlers/MysteryBoxListRequestHandler.hpp
new file mode 100644
index 0000000..a1ce9b1
--- /dev/null
+++ b/gimuserver/gme/handlers/MysteryBoxListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class MysteryBoxListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "pAJ2Xesw"; }
+ const char* GetAesKey() const override { return "DaswA3rE"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/NgwordCheckRequestHandler.cpp b/gimuserver/gme/handlers/NgwordCheckRequestHandler.cpp
new file mode 100644
index 0000000..38b1d0f
--- /dev/null
+++ b/gimuserver/gme/handlers/NgwordCheckRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "NgwordCheckRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::NgwordCheckRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/NgwordCheckRequestHandler.hpp b/gimuserver/gme/handlers/NgwordCheckRequestHandler.hpp
new file mode 100644
index 0000000..fdc8eca
--- /dev/null
+++ b/gimuserver/gme/handlers/NgwordCheckRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class NgwordCheckRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "TA4MnZX8"; }
+ const char* GetAesKey() const override { return "r4Smw5TX"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/NoticeListRequestHandler.cpp b/gimuserver/gme/handlers/NoticeListRequestHandler.cpp
new file mode 100644
index 0000000..dc71ade
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "NoticeListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::NoticeListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/NoticeListRequestHandler.hpp b/gimuserver/gme/handlers/NoticeListRequestHandler.hpp
new file mode 100644
index 0000000..c6685a4
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class NoticeListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5s4aVWfc"; }
+ const char* GetAesKey() const override { return "miMBpUZ3"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.cpp b/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.cpp
new file mode 100644
index 0000000..9da0637
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "NoticeReadUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::NoticeReadUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.hpp b/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.hpp
new file mode 100644
index 0000000..9235165
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeReadUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class NoticeReadUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "cuKwx5rF"; }
+ const char* GetAesKey() const override { return "o2rhxCmg"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/NoticeUpdateRequestHandler.cpp b/gimuserver/gme/handlers/NoticeUpdateRequestHandler.cpp
new file mode 100644
index 0000000..dc049be
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "NoticeUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::NoticeUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/NoticeUpdateRequestHandler.hpp b/gimuserver/gme/handlers/NoticeUpdateRequestHandler.hpp
new file mode 100644
index 0000000..0983f46
--- /dev/null
+++ b/gimuserver/gme/handlers/NoticeUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class NoticeUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "68pTQAJv"; }
+ const char* GetAesKey() const override { return "WHfcd53M"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/PresentListRequestHandler.cpp b/gimuserver/gme/handlers/PresentListRequestHandler.cpp
new file mode 100644
index 0000000..87d6056
--- /dev/null
+++ b/gimuserver/gme/handlers/PresentListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "PresentListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::PresentListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/PresentListRequestHandler.hpp b/gimuserver/gme/handlers/PresentListRequestHandler.hpp
new file mode 100644
index 0000000..2de5480
--- /dev/null
+++ b/gimuserver/gme/handlers/PresentListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class PresentListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "nhjvB52R"; }
+ const char* GetAesKey() const override { return "6F9sMzBxEv8jXpau"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/PresentReceiptRequestHandler.cpp b/gimuserver/gme/handlers/PresentReceiptRequestHandler.cpp
new file mode 100644
index 0000000..090e633
--- /dev/null
+++ b/gimuserver/gme/handlers/PresentReceiptRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "PresentReceiptRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::PresentReceiptRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/PresentReceiptRequestHandler.hpp b/gimuserver/gme/handlers/PresentReceiptRequestHandler.hpp
new file mode 100644
index 0000000..867f3b2
--- /dev/null
+++ b/gimuserver/gme/handlers/PresentReceiptRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class PresentReceiptRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "bV5xa0ZW"; }
+ const char* GetAesKey() const override { return "X2QFqAKfomPIg3rG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidAgreementRequestHandler.cpp b/gimuserver/gme/handlers/RaidAgreementRequestHandler.cpp
new file mode 100644
index 0000000..85a8d03
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidAgreementRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidAgreementRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidAgreementRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidAgreementRequestHandler.hpp b/gimuserver/gme/handlers/RaidAgreementRequestHandler.hpp
new file mode 100644
index 0000000..46cda70
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidAgreementRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidAgreementRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Cu94xU8j"; }
+ const char* GetAesKey() const override { return "Eh5a3yr9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.cpp b/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.cpp
new file mode 100644
index 0000000..a3954ae
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidCampRestEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidCampRestEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.hpp b/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.hpp
new file mode 100644
index 0000000..bbc4a0c
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidCampRestEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "f9Dh4djx"; }
+ const char* GetAesKey() const override { return "0TCX6S4R"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.cpp b/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.cpp
new file mode 100644
index 0000000..b26612c
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidCampRestGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidCampRestGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.hpp b/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.hpp
new file mode 100644
index 0000000..2b6af6a
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidCampRestGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "diIe8ux7"; }
+ const char* GetAesKey() const override { return "G5uind2r"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.cpp b/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.cpp
new file mode 100644
index 0000000..bb5955d
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidCampRestStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidCampRestStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.hpp b/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.hpp
new file mode 100644
index 0000000..9acd3b6
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidCampRestStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidCampRestStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "I7nVUv0h"; }
+ const char* GetAesKey() const override { return "qy27SYu9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidEnterRequestHandler.cpp b/gimuserver/gme/handlers/RaidEnterRequestHandler.cpp
new file mode 100644
index 0000000..950e490
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidEnterRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidEnterRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidEnterRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidEnterRequestHandler.hpp b/gimuserver/gme/handlers/RaidEnterRequestHandler.hpp
new file mode 100644
index 0000000..2446db3
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidEnterRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidEnterRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "yZReG75i"; }
+ const char* GetAesKey() const override { return "N0Azw6ob"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidExitRequestHandler.cpp b/gimuserver/gme/handlers/RaidExitRequestHandler.cpp
new file mode 100644
index 0000000..40bcf1e
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidExitRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidExitRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidExitRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidExitRequestHandler.hpp b/gimuserver/gme/handlers/RaidExitRequestHandler.hpp
new file mode 100644
index 0000000..5423e04
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidExitRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidExitRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jqi71nWu"; }
+ const char* GetAesKey() const override { return "PD4ke3Ii"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.cpp b/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.cpp
new file mode 100644
index 0000000..0de8b73
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidFriendRemoveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidFriendRemoveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.hpp b/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.hpp
new file mode 100644
index 0000000..3d71170
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidFriendRemoveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidFriendRemoveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "u59zdKCi"; }
+ const char* GetAesKey() const override { return "0HJ9ShKp"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.cpp b/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.cpp
new file mode 100644
index 0000000..a20d18f
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidFrlendSelectRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidFrlendSelectRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.hpp b/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.hpp
new file mode 100644
index 0000000..d7f0cea
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidFrlendSelectRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidFrlendSelectRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "u59zdKCw"; }
+ const char* GetAesKey() const override { return "0HJ9ShKg"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.cpp b/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.cpp
new file mode 100644
index 0000000..6a7f5a5
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidGetChatLogRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidGetChatLogRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.hpp b/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.hpp
new file mode 100644
index 0000000..b1662dc
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidGetChatLogRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidGetChatLogRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "k5pMN68B"; }
+ const char* GetAesKey() const override { return "cy0oLna7"; }
+ // TODO: Response has 8 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.cpp
new file mode 100644
index 0000000..2e44cb6
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidGetPlayerInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidGetPlayerInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.hpp
new file mode 100644
index 0000000..25c3a5f
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidGetPlayerInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidGetPlayerInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "81zkMjfN"; }
+ const char* GetAesKey() const override { return "V7M6Bph4"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.cpp b/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.cpp
new file mode 100644
index 0000000..3d9ae53
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidItemDeleteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidItemDeleteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.hpp b/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.hpp
new file mode 100644
index 0000000..95b3ff1
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemDeleteRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidItemDeleteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "N43JmIf2"; }
+ const char* GetAesKey() const override { return "jvm3q24f"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidItemEditRequestHandler.cpp b/gimuserver/gme/handlers/RaidItemEditRequestHandler.cpp
new file mode 100644
index 0000000..d00b0d7
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidItemEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidItemEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidItemEditRequestHandler.hpp b/gimuserver/gme/handlers/RaidItemEditRequestHandler.hpp
new file mode 100644
index 0000000..8c8bf17
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidItemEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "DZLI83hx"; }
+ const char* GetAesKey() const override { return "3Lxpf5KE"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidItemMixRequestHandler.cpp b/gimuserver/gme/handlers/RaidItemMixRequestHandler.cpp
new file mode 100644
index 0000000..e3f9003
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemMixRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidItemMixRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidItemMixRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidItemMixRequestHandler.hpp b/gimuserver/gme/handlers/RaidItemMixRequestHandler.hpp
new file mode 100644
index 0000000..a121c35
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidItemMixRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidItemMixRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "K17JUYR2"; }
+ const char* GetAesKey() const override { return "c6wBM9sH"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.cpp b/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.cpp
new file mode 100644
index 0000000..a02b0ba
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidLimitedUseItemRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidLimitedUseItemRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.hpp b/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.hpp
new file mode 100644
index 0000000..c6d4cf9
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidLimitedUseItemRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidLimitedUseItemRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "SaN7v13E"; }
+ const char* GetAesKey() const override { return "btR9Jkw7"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..e9d6d4d
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..322fd1e
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5Ko2BjPA"; }
+ const char* GetAesKey() const override { return "gi6B0m2p"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.cpp
new file mode 100644
index 0000000..3af1532
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionBattleRestartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionBattleRestartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.hpp
new file mode 100644
index 0000000..06a8531
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleRestartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionBattleRestartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "La24KGAp"; }
+ const char* GetAesKey() const override { return "ecJRzX16"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..b5865d4
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..9262eed
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "8UiQj0uF"; }
+ const char* GetAesKey() const override { return "1Jhavqb7"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionEndRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionEndRequestHandler.cpp
new file mode 100644
index 0000000..6203c33
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionEndRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionEndRequestHandler.hpp
new file mode 100644
index 0000000..cb7931f
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "vgin9Mf1"; }
+ const char* GetAesKey() const override { return "95ULkowE"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionExitRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionExitRequestHandler.cpp
new file mode 100644
index 0000000..e14d49b
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionExitRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionExitRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionExitRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionExitRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionExitRequestHandler.hpp
new file mode 100644
index 0000000..fbad960
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionExitRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionExitRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "a12v0RcA"; }
+ const char* GetAesKey() const override { return "14GMJFIN"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.cpp
new file mode 100644
index 0000000..255eaff
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionHarvestRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionHarvestRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.hpp
new file mode 100644
index 0000000..13db0af
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionHarvestRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionHarvestRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "9QdRVwB1"; }
+ const char* GetAesKey() const override { return "b1ScyFv9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.cpp
new file mode 100644
index 0000000..6bb42b6
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionInfoLightRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionInfoLightRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.hpp
new file mode 100644
index 0000000..d8f34d8
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionInfoLightRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionInfoLightRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Argz1U6B"; }
+ const char* GetAesKey() const override { return "1hJrYxs7"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.cpp
new file mode 100644
index 0000000..8ce9537
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.hpp
new file mode 100644
index 0000000..5c579c6
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "BqF2x3EC"; }
+ const char* GetAesKey() const override { return "6SyFs0Du"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.cpp
new file mode 100644
index 0000000..10289ec
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionSelectRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionSelectRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.hpp
new file mode 100644
index 0000000..98daf62
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionSelectRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionSelectRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "8iQL3IKA"; }
+ const char* GetAesKey() const override { return "ZBex5ju9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionStartRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionStartRequestHandler.cpp
new file mode 100644
index 0000000..a9e7971
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionStartRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionStartRequestHandler.hpp
new file mode 100644
index 0000000..347b863
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2qDW9NBU"; }
+ const char* GetAesKey() const override { return "kY5y1zBj"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.cpp b/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.cpp
new file mode 100644
index 0000000..3c1fc99
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidMissionUseItemRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidMissionUseItemRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.hpp b/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.hpp
new file mode 100644
index 0000000..f52c663
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidMissionUseItemRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidMissionUseItemRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "o03kCtb1"; }
+ const char* GetAesKey() const override { return "Ys8ro9Sq"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidQuickStartRequestHandler.cpp b/gimuserver/gme/handlers/RaidQuickStartRequestHandler.cpp
new file mode 100644
index 0000000..63430f2
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidQuickStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidQuickStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidQuickStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidQuickStartRequestHandler.hpp b/gimuserver/gme/handlers/RaidQuickStartRequestHandler.hpp
new file mode 100644
index 0000000..b9e10b1
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidQuickStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidQuickStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "CWeTY8BQ"; }
+ const char* GetAesKey() const override { return "HsVofOJJ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.cpp
new file mode 100644
index 0000000..e672ca3
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoomDissolveRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoomDissolveRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.hpp
new file mode 100644
index 0000000..a5c9583
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomDissolveRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoomDissolveRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "H8N1R0TE"; }
+ const char* GetAesKey() const override { return "q7dbw29J"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.cpp
new file mode 100644
index 0000000..812ec14
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoomFriendGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoomFriendGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.hpp
new file mode 100644
index 0000000..7e1b2eb
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomFriendGetRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoomFriendGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Xe2UB3A8"; }
+ const char* GetAesKey() const override { return "9WN8oYBx"; }
+ // TODO: Response has 48 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.cpp
new file mode 100644
index 0000000..b6d0110
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoomInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoomInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.hpp
new file mode 100644
index 0000000..6cd2b48
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoomInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "0VxE6kTW"; }
+ const char* GetAesKey() const override { return "cUrw7K6W"; }
+ // TODO: Response has 38 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoomKickRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoomKickRequestHandler.cpp
new file mode 100644
index 0000000..edbc53a
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomKickRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoomKickRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoomKickRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoomKickRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoomKickRequestHandler.hpp
new file mode 100644
index 0000000..ef4ce4b
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomKickRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoomKickRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Xbgen5J8"; }
+ const char* GetAesKey() const override { return "FrX0T2QJ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoomListRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoomListRequestHandler.cpp
new file mode 100644
index 0000000..13b9ca6
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoomListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoomListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoomListRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoomListRequestHandler.hpp
new file mode 100644
index 0000000..49992ba
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoomListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoomListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "YF9UQpn6"; }
+ const char* GetAesKey() const override { return "c0Qf94Ir"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.cpp b/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.cpp
new file mode 100644
index 0000000..abbd7ad
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidRoonItemEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidRoonItemEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.hpp b/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.hpp
new file mode 100644
index 0000000..cd25002
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidRoonItemEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidRoonItemEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "bv9xt3m6"; }
+ const char* GetAesKey() const override { return "9mKud8kc"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidSendChatRequestHandler.cpp b/gimuserver/gme/handlers/RaidSendChatRequestHandler.cpp
new file mode 100644
index 0000000..fd3c034
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidSendChatRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidSendChatRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidSendChatRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidSendChatRequestHandler.hpp b/gimuserver/gme/handlers/RaidSendChatRequestHandler.hpp
new file mode 100644
index 0000000..af67a0e
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidSendChatRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidSendChatRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "dYIy6Eu8"; }
+ const char* GetAesKey() const override { return "x2Fm1LSt"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidShopUseRequestHandler.cpp b/gimuserver/gme/handlers/RaidShopUseRequestHandler.cpp
new file mode 100644
index 0000000..77b1f13
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidShopUseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidShopUseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidShopUseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidShopUseRequestHandler.hpp b/gimuserver/gme/handlers/RaidShopUseRequestHandler.hpp
new file mode 100644
index 0000000..ebbfe13
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidShopUseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidShopUseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4zJ0WmTX"; }
+ const char* GetAesKey() const override { return "RSvU7dh6"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.cpp
new file mode 100644
index 0000000..7c2d7b3
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpDataRoomInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpDataRoomInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.hpp
new file mode 100644
index 0000000..2c9f295
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDataRoomInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpDataRoomInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "52H0dkjv"; }
+ const char* GetAesKey() const override { return "9KdeuMX8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.cpp
new file mode 100644
index 0000000..fda940f
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpDataUserReadyRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpDataUserReadyRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.hpp
new file mode 100644
index 0000000..9283b2a
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDataUserReadyRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpDataUserReadyRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "vmdA2GD8"; }
+ const char* GetAesKey() const override { return "esR7NZL9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.cpp
new file mode 100644
index 0000000..79a88c1
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpDateCashRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpDateCashRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.hpp
new file mode 100644
index 0000000..4dee275
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpDateCashRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpDateCashRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "XTban70i"; }
+ const char* GetAesKey() const override { return "H5d6B2pi"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.cpp
new file mode 100644
index 0000000..82a879f
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpScenarioInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpScenarioInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.hpp
new file mode 100644
index 0000000..c651853
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpScenarioInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpScenarioInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "R38qvphm"; }
+ const char* GetAesKey() const override { return "72EyFbW8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.cpp
new file mode 100644
index 0000000..48bf336
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpdateBlackListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpdateBlackListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.hpp
new file mode 100644
index 0000000..34800c3
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpdateBlackListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpdateBlackListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4igfcyIm"; }
+ const char* GetAesKey() const override { return "XIgQ4UHm"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.cpp b/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.cpp
new file mode 100644
index 0000000..c600b55
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUpdateProgressRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUpdateProgressRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.hpp b/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.hpp
new file mode 100644
index 0000000..dd250a8
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUpdateProgressRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUpdateProgressRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "7geDL5Vb"; }
+ const char* GetAesKey() const override { return "7DkVMG8Y"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidUserInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidUserInfoRequestHandler.cpp
new file mode 100644
index 0000000..6cf8936
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUserInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidUserInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidUserInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidUserInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidUserInfoRequestHandler.hpp
new file mode 100644
index 0000000..b76e818
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidUserInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidUserInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jJZ01VQo"; }
+ const char* GetAesKey() const override { return "SsQ26dVY"; }
+ // TODO: Response has 9 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.cpp b/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.cpp
new file mode 100644
index 0000000..0a1bf42
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "RaidWorloInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::RaidWorloInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.hpp b/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.hpp
new file mode 100644
index 0000000..386bdd5
--- /dev/null
+++ b/gimuserver/gme/handlers/RaidWorloInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class RaidWorloInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "H7GRp01L"; }
+ const char* GetAesKey() const override { return "5JxFp0tD"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.cpp b/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.cpp
new file mode 100644
index 0000000..e77a222
--- /dev/null
+++ b/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SGChatLogInfoListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SGChatLogInfoListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.hpp b/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.hpp
new file mode 100644
index 0000000..ae8ee42
--- /dev/null
+++ b/gimuserver/gme/handlers/SGChatLogInfoListRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SGChatLogInfoListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jVRl14IS"; }
+ const char* GetAesKey() const override { return "sxdFrtRW"; }
+ // TODO: Response has 5 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.cpp b/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.cpp
new file mode 100644
index 0000000..4c5cb24
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SPChallengeMissionStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SPChallengeMissionStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.hpp b/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.hpp
new file mode 100644
index 0000000..73e44d8
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeMissionStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SPChallengeMissionStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "QZy7cSW1"; }
+ const char* GetAesKey() const override { return "qojy81wY"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.cpp b/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.cpp
new file mode 100644
index 0000000..3010e2e
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SPChallengeRankingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SPChallengeRankingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.hpp b/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.hpp
new file mode 100644
index 0000000..5e8d696
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeRankingRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SPChallengeRankingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "27rGx1rL"; }
+ const char* GetAesKey() const override { return "pTDy82st"; }
+ // TODO: Response has 10 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.cpp b/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.cpp
new file mode 100644
index 0000000..92b93f8
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SPChallengeUserInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SPChallengeUserInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.hpp b/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.hpp
new file mode 100644
index 0000000..7fa31f0
--- /dev/null
+++ b/gimuserver/gme/handlers/SPChallengeUserInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SPChallengeUserInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "G3J9Domt"; }
+ const char* GetAesKey() const override { return "6QJwgU3V"; }
+ // TODO: Response has 3 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.cpp b/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.cpp
new file mode 100644
index 0000000..af04e2f
--- /dev/null
+++ b/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SetPurchaseInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SetPurchaseInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.hpp b/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.hpp
new file mode 100644
index 0000000..acdbf65
--- /dev/null
+++ b/gimuserver/gme/handlers/SetPurchaseInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SetPurchaseInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "u06y2UE4"; }
+ const char* GetAesKey() const override { return "c2kjaKv8"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/ShopUseRequestHandler.cpp b/gimuserver/gme/handlers/ShopUseRequestHandler.cpp
new file mode 100644
index 0000000..4b03693
--- /dev/null
+++ b/gimuserver/gme/handlers/ShopUseRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "ShopUseRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::ShopUseRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/ShopUseRequestHandler.hpp b/gimuserver/gme/handlers/ShopUseRequestHandler.hpp
new file mode 100644
index 0000000..25e7305
--- /dev/null
+++ b/gimuserver/gme/handlers/ShopUseRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class ShopUseRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "xe8tiSf4"; }
+ const char* GetAesKey() const override { return "qthMXTQSkz3KfH9R"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SlotActionRequestHandler.cpp b/gimuserver/gme/handlers/SlotActionRequestHandler.cpp
new file mode 100644
index 0000000..287437a
--- /dev/null
+++ b/gimuserver/gme/handlers/SlotActionRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SlotActionRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SlotActionRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SlotActionRequestHandler.hpp b/gimuserver/gme/handlers/SlotActionRequestHandler.hpp
new file mode 100644
index 0000000..8d6b552
--- /dev/null
+++ b/gimuserver/gme/handlers/SlotActionRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SlotActionRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "vChFp73J"; }
+ const char* GetAesKey() const override { return "hm9X6BQj"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.cpp b/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.cpp
new file mode 100644
index 0000000..d51fff4
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SummonerJournalInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SummonerJournalInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.hpp b/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.hpp
new file mode 100644
index 0000000..4223a6a
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SummonerJournalInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "32Gwida0"; }
+ const char* GetAesKey() const override { return "66B2pDki"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.cpp b/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.cpp
new file mode 100644
index 0000000..fe0abbb
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SummonerJournalMilestoneRewardsRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SummonerJournalMilestoneRewardsRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.hpp b/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.hpp
new file mode 100644
index 0000000..6a284ef
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalMilestoneRewardsRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SummonerJournalMilestoneRewardsRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "3a83iY3r"; }
+ const char* GetAesKey() const override { return "98Tw0ubW"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.cpp b/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.cpp
new file mode 100644
index 0000000..57a14bb
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SummonerJournalTaskRewardsRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SummonerJournalTaskRewardsRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.hpp b/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.hpp
new file mode 100644
index 0000000..927e602
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerJournalTaskRewardsRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SummonerJournalTaskRewardsRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2y48D13d"; }
+ const char* GetAesKey() const override { return "7nm3Dqe9"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SummonerMixRequestHandler.cpp b/gimuserver/gme/handlers/SummonerMixRequestHandler.cpp
new file mode 100644
index 0000000..a13f580
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerMixRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SummonerMixRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SummonerMixRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SummonerMixRequestHandler.hpp b/gimuserver/gme/handlers/SummonerMixRequestHandler.hpp
new file mode 100644
index 0000000..25c96ca
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerMixRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SummonerMixRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "nv4d3O7F"; }
+ const char* GetAesKey() const override { return "vM65bAB4"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.cpp b/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.cpp
new file mode 100644
index 0000000..dcf88b3
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "SummonerSkillGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::SummonerSkillGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.hpp b/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.hpp
new file mode 100644
index 0000000..f5ddd55
--- /dev/null
+++ b/gimuserver/gme/handlers/SummonerSkillGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class SummonerSkillGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "qWkYyw5i"; }
+ const char* GetAesKey() const override { return "mrXjLLJB"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.cpp b/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.cpp
new file mode 100644
index 0000000..18ab046
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TierTourneyClaimRewardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TierTourneyClaimRewardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.hpp b/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.hpp
new file mode 100644
index 0000000..4e49d28
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyClaimRewardRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TierTourneyClaimRewardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Ue7kmR38"; }
+ const char* GetAesKey() const override { return "23r27AbNW239alHi"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.cpp b/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.cpp
new file mode 100644
index 0000000..97425b3
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TierTourneyFriendListRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TierTourneyFriendListRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.hpp b/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.hpp
new file mode 100644
index 0000000..b2daba5
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyFriendListRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TierTourneyFriendListRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "p3iaD81y"; }
+ const char* GetAesKey() const override { return "B1oeKLqUw03wELoz"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.cpp b/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.cpp
new file mode 100644
index 0000000..617214e
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TierTourneyRewardMstRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TierTourneyRewardMstRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.hpp b/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.hpp
new file mode 100644
index 0000000..6d7e011
--- /dev/null
+++ b/gimuserver/gme/handlers/TierTourneyRewardMstRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TierTourneyRewardMstRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "gWi2z398"; }
+ const char* GetAesKey() const override { return "M2kajT23Yqwp83CX"; }
+ // TODO: Response has 7 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.cpp b/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.cpp
new file mode 100644
index 0000000..b691012
--- /dev/null
+++ b/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TieupCampaignInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TieupCampaignInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.hpp b/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.hpp
new file mode 100644
index 0000000..b960511
--- /dev/null
+++ b/gimuserver/gme/handlers/TieupCampaignInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TieupCampaignInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "nWBLmp53"; }
+ const char* GetAesKey() const override { return "h06IDKYb"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.cpp b/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.cpp
new file mode 100644
index 0000000..24fb63f
--- /dev/null
+++ b/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TownFacilityUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TownFacilityUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.hpp b/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.hpp
new file mode 100644
index 0000000..855ae17
--- /dev/null
+++ b/gimuserver/gme/handlers/TownFacilityUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TownFacilityUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "8v43tz7g"; }
+ const char* GetAesKey() const override { return "rq7Yd1nG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TownUpdateRequestHandler.cpp b/gimuserver/gme/handlers/TownUpdateRequestHandler.cpp
new file mode 100644
index 0000000..9cf8e4e
--- /dev/null
+++ b/gimuserver/gme/handlers/TownUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TownUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TownUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TownUpdateRequestHandler.hpp b/gimuserver/gme/handlers/TownUpdateRequestHandler.hpp
new file mode 100644
index 0000000..f1473df
--- /dev/null
+++ b/gimuserver/gme/handlers/TownUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TownUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "CuQ5oB8U"; }
+ const char* GetAesKey() const override { return "w1eo2ZDJ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.cpp b/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.cpp
new file mode 100644
index 0000000..579de44
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TransferCodeCheckRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TransferCodeCheckRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.hpp b/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.hpp
new file mode 100644
index 0000000..ee45576
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferCodeCheckRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TransferCodeCheckRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Fn1UzTo3"; }
+ const char* GetAesKey() const override { return "A6QiFT7D"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.cpp b/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.cpp
new file mode 100644
index 0000000..e0dcaf4
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TransferCodeIssueRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TransferCodeIssueRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.hpp b/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.hpp
new file mode 100644
index 0000000..bb3a8b6
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferCodeIssueRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TransferCodeIssueRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "LK9e0WyX"; }
+ const char* GetAesKey() const override { return "B6siV3AT"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TransferRequestHandler.cpp b/gimuserver/gme/handlers/TransferRequestHandler.cpp
new file mode 100644
index 0000000..174e4e0
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TransferRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TransferRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TransferRequestHandler.hpp b/gimuserver/gme/handlers/TransferRequestHandler.hpp
new file mode 100644
index 0000000..9c1c467
--- /dev/null
+++ b/gimuserver/gme/handlers/TransferRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TransferRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "I9DyF2aU"; }
+ const char* GetAesKey() const override { return "2hp90fZ1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TrialDeckEditRequestHandler.cpp b/gimuserver/gme/handlers/TrialDeckEditRequestHandler.cpp
new file mode 100644
index 0000000..86be514
--- /dev/null
+++ b/gimuserver/gme/handlers/TrialDeckEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TrialDeckEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TrialDeckEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TrialDeckEditRequestHandler.hpp b/gimuserver/gme/handlers/TrialDeckEditRequestHandler.hpp
new file mode 100644
index 0000000..7632cd3
--- /dev/null
+++ b/gimuserver/gme/handlers/TrialDeckEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TrialDeckEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "MbdL5D4K"; }
+ const char* GetAesKey() const override { return "Bb1T0qdC"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TrialDeckGetRequestHandler.cpp b/gimuserver/gme/handlers/TrialDeckGetRequestHandler.cpp
new file mode 100644
index 0000000..5ccb77e
--- /dev/null
+++ b/gimuserver/gme/handlers/TrialDeckGetRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TrialDeckGetRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TrialDeckGetRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TrialDeckGetRequestHandler.hpp b/gimuserver/gme/handlers/TrialDeckGetRequestHandler.hpp
new file mode 100644
index 0000000..a84c518
--- /dev/null
+++ b/gimuserver/gme/handlers/TrialDeckGetRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TrialDeckGetRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "gY63Zvy7"; }
+ const char* GetAesKey() const override { return "5QuLx4DG"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TutorialSkipRequestHandler.cpp b/gimuserver/gme/handlers/TutorialSkipRequestHandler.cpp
new file mode 100644
index 0000000..63d9224
--- /dev/null
+++ b/gimuserver/gme/handlers/TutorialSkipRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TutorialSkipRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TutorialSkipRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TutorialSkipRequestHandler.hpp b/gimuserver/gme/handlers/TutorialSkipRequestHandler.hpp
new file mode 100644
index 0000000..5d0f058
--- /dev/null
+++ b/gimuserver/gme/handlers/TutorialSkipRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TutorialSkipRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "d36DaiJl"; }
+ const char* GetAesKey() const override { return "p3qD61db"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/TutorialUpdateRequestHandler.cpp b/gimuserver/gme/handlers/TutorialUpdateRequestHandler.cpp
new file mode 100644
index 0000000..aa9bf6f
--- /dev/null
+++ b/gimuserver/gme/handlers/TutorialUpdateRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "TutorialUpdateRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::TutorialUpdateRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/TutorialUpdateRequestHandler.hpp b/gimuserver/gme/handlers/TutorialUpdateRequestHandler.hpp
new file mode 100644
index 0000000..618bf78
--- /dev/null
+++ b/gimuserver/gme/handlers/TutorialUpdateRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class TutorialUpdateRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "T1nCVvx4"; }
+ const char* GetAesKey() const override { return "7hqzmR3T"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/URLMstRequestHandler.cpp b/gimuserver/gme/handlers/URLMstRequestHandler.cpp
new file mode 100644
index 0000000..ff0b902
--- /dev/null
+++ b/gimuserver/gme/handlers/URLMstRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "URLMstRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::URLMstRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/URLMstRequestHandler.hpp b/gimuserver/gme/handlers/URLMstRequestHandler.hpp
new file mode 100644
index 0000000..51f1322
--- /dev/null
+++ b/gimuserver/gme/handlers/URLMstRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class URLMstRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "MfZyu1q9"; }
+ const char* GetAesKey() const override { return "EmcshnQoDr20TZz1"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitBondBoostRequestHandler.cpp b/gimuserver/gme/handlers/UnitBondBoostRequestHandler.cpp
new file mode 100644
index 0000000..5edcbc8
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitBondBoostRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitBondBoostRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitBondBoostRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitBondBoostRequestHandler.hpp b/gimuserver/gme/handlers/UnitBondBoostRequestHandler.hpp
new file mode 100644
index 0000000..1262fb8
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitBondBoostRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitBondBoostRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "tr5rOwro"; }
+ const char* GetAesKey() const override { return "fus9A2ut"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitEvoRequestHandler.cpp b/gimuserver/gme/handlers/UnitEvoRequestHandler.cpp
new file mode 100644
index 0000000..7675a75
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitEvoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitEvoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitEvoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitEvoRequestHandler.hpp b/gimuserver/gme/handlers/UnitEvoRequestHandler.hpp
new file mode 100644
index 0000000..8be9de3
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitEvoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitEvoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "0gUSE84e"; }
+ const char* GetAesKey() const override { return "biHf01DxcrPou5Qt"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitFavoriteRequestHandler.cpp b/gimuserver/gme/handlers/UnitFavoriteRequestHandler.cpp
new file mode 100644
index 0000000..1b7c354
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitFavoriteRequestHandler.cpp
@@ -0,0 +1,40 @@
+#include "UnitFavoriteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitFavoriteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ //std::cout << req.toStyledString();
+
+ Json::Value d;
+ d["edy7fq3L"] = req["3kcmQy7B"][0]["edy7fq3L"]; // Unique String for Unit
+ d["5JbjC3Pp"] = req["3kcmQy7B"][0]["5JbjC3Pp"]; //Favorited or not?
+ res["3kcmQy7B"] = d;
+
+ /*
+ *
+ * if (req.isMember("user_id")) {
+ requestUserId = req["user_id"].asString();
+ user.info.userID = requestUserId;
+ LOG_INFO << "UserInfoHandler: Overriding user_id from request body to: " << requestUserId;
+ }
+ *
+ *
+
+ "3kcmQy7B" :
+ [
+ {
+ "2pAyFjmZ" : "1",
+ "5JbjC3Pp" : "1",
+ "edy7fq3L" : "11843"
+ }
+
+ */
+
+
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitFavoriteRequestHandler.hpp b/gimuserver/gme/handlers/UnitFavoriteRequestHandler.hpp
new file mode 100644
index 0000000..d1f61e6
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitFavoriteRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitFavoriteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "2p9LHCNh"; }
+ const char* GetAesKey() const override { return "cb4ESLa1"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitMixRequestHandler.cpp b/gimuserver/gme/handlers/UnitMixRequestHandler.cpp
new file mode 100644
index 0000000..96b6034
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitMixRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitMixRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitMixRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitMixRequestHandler.hpp b/gimuserver/gme/handlers/UnitMixRequestHandler.hpp
new file mode 100644
index 0000000..04434a3
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitMixRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitMixRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Mw08CIg2"; }
+ const char* GetAesKey() const override { return "JnegC7RrN3FoW8dQ"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.cpp b/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.cpp
new file mode 100644
index 0000000..60de0eb
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitOmniEvoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitOmniEvoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.hpp b/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.hpp
new file mode 100644
index 0000000..07ccdf7
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitOmniEvoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitOmniEvoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "4Dk4spf9"; }
+ const char* GetAesKey() const override { return "4s3lsODp"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.cpp b/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.cpp
new file mode 100644
index 0000000..5d6265e
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitSelectorGachaTicketRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitSelectorGachaTicketRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.hpp b/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.hpp
new file mode 100644
index 0000000..a0f44c8
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitSelectorGachaTicketRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitSelectorGachaTicketRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "k57TdKDj"; }
+ const char* GetAesKey() const override { return "1IJ8SaNk"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UnitSellRequestHandler.cpp b/gimuserver/gme/handlers/UnitSellRequestHandler.cpp
new file mode 100644
index 0000000..9fcb3bb
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitSellRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UnitSellRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UnitSellRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UnitSellRequestHandler.hpp b/gimuserver/gme/handlers/UnitSellRequestHandler.hpp
new file mode 100644
index 0000000..89570e9
--- /dev/null
+++ b/gimuserver/gme/handlers/UnitSellRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UnitSellRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "Ri3uTq9b"; }
+ const char* GetAesKey() const override { return "92VqcGFWuPkmT60U"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.cpp b/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.cpp
new file mode 100644
index 0000000..53a6014
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UpdateEventInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UpdateEventInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.hpp b/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.hpp
new file mode 100644
index 0000000..79eb5cb
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdateEventInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UpdateEventInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "rCB7ZI8x"; }
+ const char* GetAesKey() const override { return "L1o4eGbi"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UpdateInfoLightHandler.cpp b/gimuserver/gme/handlers/UpdateInfoLightHandler.cpp
deleted file mode 100644
index c2b70d0..0000000
--- a/gimuserver/gme/handlers/UpdateInfoLightHandler.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "UpdateInfoLightHandler.hpp"
-
-void Handler::UpdateInfoLightHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- Json::Value res;
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
-}
diff --git a/gimuserver/gme/handlers/UpdateInfoLightRequestHandler.cpp b/gimuserver/gme/handlers/UpdateInfoLightRequestHandler.cpp
new file mode 100644
index 0000000..d2593d1
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdateInfoLightRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UpdateInfoLightRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UpdateInfoLightRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UpdateInfoLightHandler.hpp b/gimuserver/gme/handlers/UpdateInfoLightRequestHandler.hpp
similarity index 84%
rename from gimuserver/gme/handlers/UpdateInfoLightHandler.hpp
rename to gimuserver/gme/handlers/UpdateInfoLightRequestHandler.hpp
index d6f4ef1..593fde2 100644
--- a/gimuserver/gme/handlers/UpdateInfoLightHandler.hpp
+++ b/gimuserver/gme/handlers/UpdateInfoLightRequestHandler.hpp
@@ -3,7 +3,7 @@
#include "../GmeHandler.hpp"
HANDLER_NS_BEGIN
-class UpdateInfoLightHandler : public HandlerBase
+class UpdateInfoLightRequestHandler : public HandlerBase
{
public:
const char* GetGroupId() const override { return "ynB7X5P9"; }
diff --git a/gimuserver/gme/handlers/UpdateInfoRequestHandler.cpp b/gimuserver/gme/handlers/UpdateInfoRequestHandler.cpp
new file mode 100644
index 0000000..8e66e27
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdateInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UpdateInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UpdateInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UpdateInfoRequestHandler.hpp b/gimuserver/gme/handlers/UpdateInfoRequestHandler.hpp
new file mode 100644
index 0000000..de0ad1e
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdateInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UpdateInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "RUV94Dqz"; }
+ const char* GetAesKey() const override { return "hy0P9xjsGJ6MAgb2"; }
+ // TODO: Response has 1 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.cpp b/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.cpp
new file mode 100644
index 0000000..98a20da
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UpdatePermitPlaceInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UpdatePermitPlaceInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.hpp b/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.hpp
new file mode 100644
index 0000000..4a760bc
--- /dev/null
+++ b/gimuserver/gme/handlers/UpdatePermitPlaceInfoRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UpdatePermitPlaceInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "1MJT6L3W"; }
+ const char* GetAesKey() const override { return "3zip5Htw"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.cpp b/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.cpp
new file mode 100644
index 0000000..738de2d
--- /dev/null
+++ b/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UserEnteredFeatureRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UserEnteredFeatureRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.hpp b/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.hpp
new file mode 100644
index 0000000..5ada7a3
--- /dev/null
+++ b/gimuserver/gme/handlers/UserEnteredFeatureRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UserEnteredFeatureRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "983D5Dii"; }
+ const char* GetAesKey() const override { return "Dr6pwV3i"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.cpp b/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.cpp
new file mode 100644
index 0000000..ba79e55
--- /dev/null
+++ b/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UserGemShardInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UserGemShardInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.hpp b/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.hpp
new file mode 100644
index 0000000..ec1b805
--- /dev/null
+++ b/gimuserver/gme/handlers/UserGemShardInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UserGemShardInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "29slks49"; }
+ const char* GetAesKey() const override { return "930sDd3i"; }
+ // TODO: Response has 2 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserInfoHandler.cpp b/gimuserver/gme/handlers/UserInfoHandler.cpp
deleted file mode 100644
index 80f308b..0000000
--- a/gimuserver/gme/handlers/UserInfoHandler.cpp
+++ /dev/null
@@ -1,423 +0,0 @@
-#include "UserInfoHandler.hpp"
-#include
-#include
-#include
-#include "gme/response/UserTeamInfo.hpp"
-#include "gme/response/UserLoginCampaignInfo.hpp"
-#include "gme/response/NoticeInfo.hpp"
-#include "gme/response/UserItemDictionaryInfo.hpp"
-#include "gme/response/UserTeamArchive.hpp"
-#include "gme/response/UserUnitInfo.hpp"
-#include "gme/response/UserPartyDeckInfo.hpp"
-#include "gme/response/UserWarehouseInfo.hpp"
-#include "gme/response/UserClearMissionInfo.hpp"
-#include "gme/response/ItemFavorite.hpp"
-#include "gme/response/UserItemDictionaryInfo.hpp"
-#include "gme/response/UserTeamArenaArchive.hpp"
-#include "gme/response/UserUnitDictionary.hpp"
-#include "gme/response/UserFavorite.hpp"
-#include "gme/response/UserArenaInfo.hpp"
-#include "gme/response/UserGiftInfo.hpp"
-#include "gme/response/VideoAdInfo.hpp"
-#include "gme/response/VideoAdRegion.hpp"
-#include "gme/response/SummonerJournalUserInfo.hpp"
-#include "gme/response/SignalKey.hpp"
-#include
-
-void Handler::UserInfoHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
-{
- // Extract and log the initial user ID
- std::string requestUserId = user.info.userID;
- LOG_INFO << "UserInfoHandler: Handling request for user_id (initial): " << requestUserId;
-
- // Check for user_id in the request body
- if (req.isMember("user_id")) {
- requestUserId = req["user_id"].asString();
- user.info.userID = requestUserId;
- LOG_INFO << "UserInfoHandler: Overriding user_id from request body to: " << requestUserId;
- }
- else if (req.isMember("ak")) { // Check for ak parameter (from login context)
- requestUserId = req["ak"].asString();
- user.info.userID = requestUserId;
- LOG_INFO << "UserInfoHandler: Overriding user_id from request ak to: " << requestUserId;
- }
- else {
- // Fallback: Use the user_id from the login response (hardcode for now)
- requestUserId = "0839899613932562";
- user.info.userID = requestUserId;
- LOG_INFO << "UserInfoHandler: No user_id or ak in request, using hardcoded user_id: " << requestUserId;
- }
-
- // Check if this is a unit inventory or squad management request
- std::string action = req.isMember("action") ? req["action"].asString() : "";
- if (action == "load_unit_inventory" || action == "Zw3WIoWu" || action == "load_squad_management") {
- GME_DB->execSqlAsync(
- "SELECT unit_id, name, rarity, element, stats, bb, leader_skill, ai FROM user_units WHERE user_id = $1 LIMIT 500", // LIMIT 1470 here
- [this, &user, cb, action](const drogon::orm::Result& unitResult) {
- LOG_INFO << "UserInfoHandler: Found " << unitResult.size() << " units for user_id: " << user.info.userID;
-
- Json::Value res;
- Response::UserUnitInfo unitInfo;
- for (const auto& row : unitResult) {
- Response::UserUnitInfo::Data d;
- d.userID = user.info.userID;
- d.userUnitID = std::stoul(row["unit_id"].as());
- d.unitID = std::stoul(row["unit_id"].as());
- d.unitTypeID = row["rarity"].as();
- d.element = row["element"].as();
- d.unitLv = 1;
- d.newFlg = 1;
- d.receiveDate = 100;
- d.FeBP = 100;
- d.FeMaxUsableBP = 200;
-
- Json::Value stats;
- Json::Reader reader;
- std::string statsStr = row["stats"].as();
- if (!reader.parse(statsStr, stats)) {
- LOG_ERROR << "Failed to parse stats JSON: " << statsStr;
- stats = Json::Value();
- }
- d.baseHp = stats.isMember("hp") ? stats["hp"].asUInt() : 1000;
- d.baseAtk = stats.isMember("atk") ? stats["atk"].asUInt() : 1000;
- d.baseDef = stats.isMember("def") ? stats["def"].asUInt() : 1000;
- d.baseHeal = stats.isMember("rec") ? stats["rec"].asUInt() : 1000;
- d.addHp = d.baseHp / 10;
- d.addAtk = d.baseAtk / 10;
- d.addDef = d.baseDef / 10;
- d.addHeal = d.baseHeal / 10;
- d.extHp = d.addHp;
- d.extAtk = d.addAtk;
- d.extDef = d.addDef;
- d.extHeal = d.addHeal;
- d.limitOverHP = d.baseHp / 5;
- d.limitOverAtk = d.baseAtk / 5;
- d.limitOverDef = d.baseDef / 5;
- d.limitOverHeal = d.baseHeal / 5;
- d.exp = 1;
- d.totalExp = 1;
-
- unitInfo.Mst.emplace_back(d);
- }
-
- // Fallback: Add a dummy unit if inventory is empty (to prevent crashes)
- if (unitInfo.Mst.empty()) {
- LOG_WARN << "UserInfoHandler: No units found, adding dummy unit for compatibility";
- Response::UserUnitInfo::Data d;
- d.userID = user.info.userID;
- d.userUnitID = 9999;
- d.unitID = 9999;
- d.unitTypeID = 1;
- d.element = "fire";
- d.unitLv = 1;
- d.newFlg = 1;
- d.receiveDate = 100;
- d.FeBP = 100;
- d.FeMaxUsableBP = 200;
- d.baseHp = 1000;
- d.baseAtk = 1000;
- d.baseDef = 1000;
- d.baseHeal = 1000;
- d.addHp = 100;
- d.addAtk = 100;
- d.addDef = 100;
- d.addHeal = 100;
- d.extHp = 100;
- d.extAtk = 100;
- d.extDef = 100;
- d.extHeal = 100;
- d.limitOverHP = 200;
- d.limitOverAtk = 200;
- d.limitOverDef = 200;
- d.limitOverHeal = 200;
- d.exp = 1;
- d.totalExp = 1;
- unitInfo.Mst.emplace_back(d);
- }
-
- unitInfo.Serialize(res);
-
- // Initialize party with the first unit to avoid Empty_Party_Info
- Response::UserPartyDeckInfo deckInfo;
- if (!unitInfo.Mst.empty()) {
- Response::UserPartyDeckInfo::Data d;
- d.deckNum = 0;
- d.deckType = 1;
- d.dispOrder = 0;
- d.memberType = 0; // Leader
- d.userUnitID = unitInfo.Mst[0].userUnitID;
- deckInfo.Mst.emplace_back(d);
- }
- deckInfo.Serialize(res);
-
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
- return;
- },
- [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
- user.info.userID
- );
- return;
- }
-
- // Original logic for initial load
- GME_DB->execSqlAsync(
- "SELECT level, exp, max_unit_count, max_friend_count, "
- "zel, karma, brave_coin, max_warehouse_count, want_gift, "
- "free_gems, paid_gems, active_deck, summon_tickets, "
- "rainbow_coins, colosseum_tickets, active_arena_deck, "
- "total_brave_points, avail_brave_points, energy "
- "FROM userinfo WHERE id = $1",
- [this, &user, cb](const drogon::orm::Result& result) {
- if (result.size() > 0) {
- int col = 0;
- auto& sql = result[0];
- user.teamInfo.UserID = user.info.userID;
- user.teamInfo.Level = sql[col++].as();
- user.teamInfo.Exp = sql[col++].as();
- user.teamInfo.MaxUnitCount = sql[col++].as();
- user.teamInfo.MaxFriendCount = sql[col++].as();
- user.teamInfo.Zel = sql[col++].as();
- user.teamInfo.Karma = sql[col++].as();
- user.teamInfo.BraveCoin = sql[col++].as();
- user.teamInfo.WarehouseCount = sql[col++].as();
- user.teamInfo.WantGift = sql[col++].as();
- user.teamInfo.FreeGems = sql[col++].as();
- user.teamInfo.PaidGems = sql[col++].as();
- user.teamInfo.ActiveDeck = sql[col++].as();
- user.teamInfo.SummonTicket = sql[col++].as();
- user.teamInfo.RainbowCoin = sql[col++].as();
- user.teamInfo.ColosseumTicket = sql[col++].as();
- user.teamInfo.ArenaDeckNum = sql[col++].as();
- user.teamInfo.BravePointsTotal = sql[col++].as();
- user.teamInfo.CurrentBravePoints = sql[col++].as();
- user.teamInfo.ActionPoint = sql[col++].as();
- }
- else {
- auto sc = System::Instance().MstConfig().StartInfo();
- user.teamInfo.UserID = user.info.userID;
- user.teamInfo.Level = sc.Level;
- user.teamInfo.Exp = 0;
- user.teamInfo.MaxUnitCount = 2292; // Updated to match unit count
- user.teamInfo.MaxFriendCount = sc.FriendCount;
- user.teamInfo.Zel = sc.Zel;
- user.teamInfo.Karma = sc.Karma;
- user.teamInfo.BraveCoin = 0;
- user.teamInfo.WarehouseCount = 2292; // Updated to match unit count
- user.teamInfo.FreeGems = sc.FreeGems;
- user.teamInfo.PaidGems = sc.PaidGems;
- user.teamInfo.SummonTicket = sc.SummonTickets;
- user.teamInfo.ColosseumTicket = sc.ColosseumTickets;
-
- // Insert default userinfo to simulate proper login flow
- GME_DB->execSqlAsync(
- "INSERT INTO userinfo (id, level, exp, max_unit_count, max_friend_count, zel, karma, brave_coin, max_warehouse_count, want_gift, free_gems, paid_gems, active_deck, summon_tickets, rainbow_coins, colosseum_tickets, active_arena_deck, total_brave_points, avail_brave_points, energy) "
- "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)",
- [](const drogon::orm::Result& result) {
- LOG_INFO << "UserInfoHandler: Inserted default userinfo for new user";
- },
- [](const drogon::orm::DrogonDbException& e) {
- LOG_ERROR << "UserInfoHandler: Failed to insert default userinfo: " << e.base().what();
- },
- user.info.userID, user.teamInfo.Level, user.teamInfo.Exp, user.teamInfo.MaxUnitCount, user.teamInfo.MaxFriendCount,
- user.teamInfo.Zel, user.teamInfo.Karma, user.teamInfo.BraveCoin, user.teamInfo.WarehouseCount, user.teamInfo.WantGift,
- user.teamInfo.FreeGems, user.teamInfo.PaidGems, user.teamInfo.ActiveDeck, user.teamInfo.SummonTicket, user.teamInfo.RainbowCoin,
- user.teamInfo.ColosseumTicket, user.teamInfo.ArenaDeckNum, user.teamInfo.BravePointsTotal, user.teamInfo.CurrentBravePoints, user.teamInfo.ActionPoint
- );
- }
-
- const auto& msts = System::Instance().MstConfig();
- {
- const auto& p = msts.GetProgressionInfo().Mst.at(user.teamInfo.Level - 1);
- user.teamInfo.DeckCost = p.deckCost;
- user.teamInfo.MaxFriendCount = p.friendCount;
- user.teamInfo.AddFriendCount = p.addFriendCount;
- user.teamInfo.MaxActionPoint = p.actionPoints;
- if (user.teamInfo.ActionPoint == 0)
- user.teamInfo.ActionPoint = user.teamInfo.MaxActionPoint;
- }
-
- GME_DB->execSqlAsync(
- "SELECT unit_id, name, rarity, element, stats, bb, leader_skill, ai FROM user_units WHERE user_id = $1 LIMIT 500", // LIMIT 1470 here at end
- [this, &user, cb](const drogon::orm::Result& unitResult) {
- LOG_INFO << "UserInfoHandler: Found " << unitResult.size() << " units for user_id: " << user.info.userID;
-
- Json::Value res;
- user.info.Serialize(res);
- user.teamInfo.Serialize(res);
-
- {
- Response::UserLoginCampaignInfo v;
- v.currentDay = 1;
- v.totalDays = 96;
- v.firstForTheDay = true;
- v.Serialize(res);
- }
-
- {
- Response::UserTeamArchive v;
- v.Serialize(res);
- }
-
- {
- Response::UserTeamArenaArchive v;
- v.Serialize(res);
- }
-
- Response::UserUnitInfo unitInfo;
- for (const auto& row : unitResult) {
- Response::UserUnitInfo::Data d;
- d.userID = user.info.userID;
- d.userUnitID = std::stoul(row["unit_id"].as());
- d.unitID = std::stoul(row["unit_id"].as());
- d.unitTypeID = row["rarity"].as();
- d.element = row["element"].as();
- d.unitLv = 1;
- d.newFlg = 1;
- d.receiveDate = 100;
- d.FeBP = 100;
- d.FeMaxUsableBP = 200;
-
- Json::Value stats;
- Json::Reader reader;
- std::string statsStr = row["stats"].as();
- if (!reader.parse(statsStr, stats)) {
- LOG_ERROR << "Failed to parse stats JSON: " << statsStr;
- stats = Json::Value();
- }
- d.baseHp = stats.isMember("hp") ? stats["hp"].asUInt() : 1000;
- d.baseAtk = stats.isMember("atk") ? stats["atk"].asUInt() : 1000;
- d.baseDef = stats.isMember("def") ? stats["def"].asUInt() : 1000;
- d.baseHeal = stats.isMember("rec") ? stats["rec"].asUInt() : 1000;
- d.addHp = d.baseHp / 10;
- d.addAtk = d.baseAtk / 10;
- d.addDef = d.baseDef / 10;
- d.addHeal = d.baseHeal / 10;
- d.extHp = d.addHp;
- d.extAtk = d.addAtk;
- d.extDef = d.addDef;
- d.extHeal = d.addHeal;
- d.limitOverHP = d.baseHp / 5;
- d.limitOverAtk = d.baseAtk / 5;
- d.limitOverDef = d.baseDef / 5;
- d.limitOverHeal = d.baseHeal / 5;
- d.exp = 1;
- d.totalExp = 1;
-
- unitInfo.Mst.emplace_back(d);
- }
-
- // Fallback: Add a dummy unit if inventory is empty
- if (unitInfo.Mst.empty()) {
- LOG_WARN << "UserInfoHandler: No units found, adding dummy unit for compatibility";
- Response::UserUnitInfo::Data d;
- d.userID = user.info.userID;
- d.userUnitID = 9999;
- d.unitID = 9999;
- d.unitTypeID = 1;
- d.element = "fire";
- d.unitLv = 1;
- d.newFlg = 1;
- d.receiveDate = 100;
- d.FeBP = 100;
- d.FeMaxUsableBP = 200;
- d.baseHp = 1000;
- d.baseAtk = 1000;
- d.baseDef = 1000;
- d.baseHeal = 1000;
- d.addHp = 100;
- d.addAtk = 100;
- d.addDef = 100;
- d.addHeal = 100;
- d.extHp = 100;
- d.extAtk = 100;
- d.extDef = 100;
- d.extHeal = 100;
- d.limitOverHP = 200;
- d.limitOverAtk = 200;
- d.limitOverDef = 200;
- d.limitOverHeal = 200;
- d.exp = 1;
- d.totalExp = 1;
- unitInfo.Mst.emplace_back(d);
- }
-
- unitInfo.Serialize(res);
-
- {
- Response::UserPartyDeckInfo deckInfo;
- if (!unitInfo.Mst.empty()) {
- Response::UserPartyDeckInfo::Data d;
- d.deckNum = 0;
- d.deckType = 1;
- d.dispOrder = 0;
- d.memberType = 0; // Leader
- d.userUnitID = unitInfo.Mst[0].userUnitID;
- deckInfo.Mst.emplace_back(d);
- }
- deckInfo.Serialize(res);
- }
-
- {
- Response::UserUnitDictionary v;
- v.Serialize(res);
- }
-
- {
- Response::UserFavorite v;
- v.Serialize(res);
- }
-
- {
- Response::UserClearMissionInfo v;
- v.Serialize(res);
- }
-
- {
- Response::UserWarehouseInfo v;
- v.Serialize(res);
- }
-
- {
- Response::ItemFavorite v;
- v.Serialize(res);
- }
-
- {
- Response::UserItemDictionaryInfo v;
- v.Serialize(res);
- }
-
- {
- Response::UserArenaInfo v;
- v.Serialize(res);
- }
-
- {
- Response::UserGiftInfo v;
- v.Serialize(res);
- }
-
- {
- Response::SummonerJournalUserInfo v;
- v.userId = user.info.userID;
- v.Serialize(res);
- }
-
- {
- Response::SignalKey v;
- v.key = "5EdKHavF";
- v.Serialize(res);
- }
-
- System::Instance().MstConfig().CopyUserInfoMstTo(res);
-
- cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
- },
- [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
- user.info.userID
- );
- },
- [this, cb](const drogon::orm::DrogonDbException& e) { OnError(e, cb); },
- user.info.userID
- );
-}
\ No newline at end of file
diff --git a/gimuserver/gme/handlers/UserInfoHandler.hpp b/gimuserver/gme/handlers/UserInfoHandler.hpp
deleted file mode 100644
index 09707c2..0000000
--- a/gimuserver/gme/handlers/UserInfoHandler.hpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "../GmeHandler.hpp"
-
-HANDLER_NS_BEGIN
-class UserInfoHandler : public HandlerBase
-{
-public:
- const char* GetGroupId() const override { return "cTZ3W2JG"; }
- const char* GetAesKey() const override { return "ScJx6ywWEb0A3njT"; }
- void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
-};
-HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.cpp b/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.cpp
new file mode 100644
index 0000000..9b8f0e8
--- /dev/null
+++ b/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UserLoginCampaignInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UserLoginCampaignInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.hpp b/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.hpp
new file mode 100644
index 0000000..a290d5e
--- /dev/null
+++ b/gimuserver/gme/handlers/UserLoginCampaignInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UserLoginCampaignInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "5fc8bf2c"; }
+ const char* GetAesKey() const override { return "4eb7ce1b"; }
+ // TODO: Response has 4 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.cpp b/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.cpp
new file mode 100644
index 0000000..316f6ba
--- /dev/null
+++ b/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UserSummonerInfoEditRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UserSummonerInfoEditRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.hpp b/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.hpp
new file mode 100644
index 0000000..8e76cdd
--- /dev/null
+++ b/gimuserver/gme/handlers/UserSummonerInfoEditRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UserSummonerInfoEditRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ZJYkXcHo"; }
+ const char* GetAesKey() const override { return "lyR0us9b"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.cpp b/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.cpp
new file mode 100644
index 0000000..810cacd
--- /dev/null
+++ b/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "UserTournamentInfoRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::UserTournamentInfoRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.hpp b/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.hpp
new file mode 100644
index 0000000..f977e9d
--- /dev/null
+++ b/gimuserver/gme/handlers/UserTournamentInfoRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class UserTournamentInfoRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "L2kdaTx9"; }
+ const char* GetAesKey() const override { return "10db8akS5kaZ32lM"; }
+ // TODO: Response has 5 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.cpp b/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.cpp
new file mode 100644
index 0000000..ebb70a6
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VideoAdCompleteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VideoAdCompleteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.hpp b/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.hpp
new file mode 100644
index 0000000..862eae4
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdCompleteRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VideoAdCompleteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "r234ydi1"; }
+ const char* GetAesKey() const override { return "mDqi310y"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.cpp b/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.cpp
new file mode 100644
index 0000000..d8177f5
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VideoAdSlotsClaimBonusRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VideoAdSlotsClaimBonusRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.hpp b/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.hpp
new file mode 100644
index 0000000..5dc9b70
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsClaimBonusRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VideoAdSlotsClaimBonusRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "29s22s49"; }
+ const char* GetAesKey() const override { return "93055d2i"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.cpp b/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.cpp
new file mode 100644
index 0000000..1d2e986
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VideoAdSlotsCompleteRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VideoAdSlotsCompleteRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.hpp b/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.hpp
new file mode 100644
index 0000000..2643a4c
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsCompleteRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VideoAdSlotsCompleteRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "ifL3TZim"; }
+ const char* GetAesKey() const override { return "FxYPUrf4"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.cpp b/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.cpp
new file mode 100644
index 0000000..4ef9bc5
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VideoAdSlotsStandInfoRefreshRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VideoAdSlotsStandInfoRefreshRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.hpp b/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.hpp
new file mode 100644
index 0000000..dccd01e
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdSlotsStandInfoRefreshRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VideoAdSlotsStandInfoRefreshRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "jwgJVpUP"; }
+ const char* GetAesKey() const override { return "sjrlKA3D"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.cpp b/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.cpp
new file mode 100644
index 0000000..5711a47
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VideoAdsSlotActionRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VideoAdsSlotActionRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.hpp b/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.hpp
new file mode 100644
index 0000000..7cf64dc
--- /dev/null
+++ b/gimuserver/gme/handlers/VideoAdsSlotActionRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VideoAdsSlotActionRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "AjKpMC9a"; }
+ const char* GetAesKey() const override { return "X2esANNz"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.cpp
new file mode 100644
index 0000000..0fd94f4
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaBattleEndRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaBattleEndRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.hpp
new file mode 100644
index 0000000..4f59084
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaBattleEndRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaBattleEndRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "89HrE13b"; }
+ const char* GetAesKey() const override { return "i4gkTv3a"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.cpp
new file mode 100644
index 0000000..2618c57
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaBattleStartRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaBattleStartRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.hpp
new file mode 100644
index 0000000..82dc42e
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaBattleStartRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaBattleStartRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "j3s0iNM1"; }
+ const char* GetAesKey() const override { return "uTk8nBdi"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.cpp
new file mode 100644
index 0000000..d4e4c85
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaClaimDailyRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaClaimDailyRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.hpp
new file mode 100644
index 0000000..b8b394d
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaClaimDailyRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaClaimDailyRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "j3cyKi8o"; }
+ const char* GetAesKey() const override { return "abI7o6dT"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.cpp
new file mode 100644
index 0000000..4a4761a
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaClaimRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaClaimRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.hpp
new file mode 100644
index 0000000..77885fa
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaClaimRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaClaimRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "iwo032Yj"; }
+ const char* GetAesKey() const override { return "ab30d5H2"; }
+ // TODO: Response has 1 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.cpp
new file mode 100644
index 0000000..afd3a10
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaLeaderboardRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaLeaderboardRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.hpp
new file mode 100644
index 0000000..38c94a1
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaLeaderboardRequestHandler.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaLeaderboardRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "290aD3iY"; }
+ const char* GetAesKey() const override { return "d2l0Bdi8"; }
+ // TODO: Response has 11 parameters to implement
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.cpp
new file mode 100644
index 0000000..02a13b8
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaMatchingRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaMatchingRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.hpp
new file mode 100644
index 0000000..687fc7d
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaMatchingRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaMatchingRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "b5TunM93"; }
+ const char* GetAesKey() const override { return "a7GkyuV3"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.cpp
new file mode 100644
index 0000000..0c33a8f
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaRetireRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaRetireRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.hpp
new file mode 100644
index 0000000..e855ac5
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaRetireRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaRetireRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "R34vyqw7"; }
+ const char* GetAesKey() const override { return "j8M3a93W"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/handlers/VortexArenaTopRequestHandler.cpp b/gimuserver/gme/handlers/VortexArenaTopRequestHandler.cpp
new file mode 100644
index 0000000..a24806a
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaTopRequestHandler.cpp
@@ -0,0 +1,11 @@
+#include "VortexArenaTopRequestHandler.hpp"
+#include "gme/response/SignalKey.hpp"
+#include "gme/response/UserUnitInfo.hpp"
+#include "core/System.hpp"
+
+void Handler::VortexArenaTopRequestHandler::Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const
+{
+ Json::Value res;
+
+ cb(newGmeOkResponse(GetGroupId(), GetAesKey(), res));
+}
diff --git a/gimuserver/gme/handlers/VortexArenaTopRequestHandler.hpp b/gimuserver/gme/handlers/VortexArenaTopRequestHandler.hpp
new file mode 100644
index 0000000..1f53e11
--- /dev/null
+++ b/gimuserver/gme/handlers/VortexArenaTopRequestHandler.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "../GmeHandler.hpp"
+
+HANDLER_NS_BEGIN
+class VortexArenaTopRequestHandler : public HandlerBase
+{
+public:
+ const char* GetGroupId() const override { return "lp3a7bvD"; }
+ const char* GetAesKey() const override { return "38ab793G"; }
+ void Handle(UserInfo& user, DrogonCallback cb, const Json::Value& req) const override;
+};
+HANDLER_NS_END
diff --git a/gimuserver/gme/response/BadgeInfo.hpp b/gimuserver/gme/response/BadgeInfo.hpp
index ac400d2..76f079a 100644
--- a/gimuserver/gme/response/BadgeInfo.hpp
+++ b/gimuserver/gme/response/BadgeInfo.hpp
@@ -5,10 +5,19 @@
RESPONSE_NS_BEGIN
struct BadgeInfo : public IResponse
{
- const char* getGroupName() const override { return "h23iRjGN"; }
+ const char* getGroupName() const override { return "h23iRjGN"; } // Found in GameResponseParser
+
+ /*
+ Location: GameResponseParser::getResponseObject [.text]
+ if ( !strcmp(s1, "h23iRjGN") )
+ {
+ v3 = (MessageResponse *)operator new(0x18uLL);
+ BadgeInfoResponse::BadgeInfoResponse(v3);
+ }
+ */
explicit BadgeInfo() : scenarioNum(0), unitDictNum(0), itemDictNum(0),
- newFrohun(0), dungeonKeyNum(0) {}
+ newFrohun(0), dungeonKeyNum(0) {}
uint32_t scenarioNum, unitDictNum, itemDictNum, newFrohun,
dungeonKeyNum;
@@ -17,8 +26,8 @@ struct BadgeInfo : public IResponse
protected:
void SerializeFields(Json::Value& v, size_t) const override
{
- v["u7Htm9P4"] = std::to_string(scenarioNum);
- v["yCLEs28F"] = std::to_string(unitDictNum);
+ v["u7Htm9P4"] = std::to_string(scenarioNum); //Found in BadgeInfoResponse::readParam
+ v["yCLEs28F"] = std::to_string(unitDictNum); //Types are infered, and tested.
v["iakSd6m8"] = std::to_string(itemDictNum);
v["4AjsNu0m"] = std::to_string(newFrohun);
v["dD40xrsh"] = std::to_string(dungeonKeyNum);
diff --git a/gimuserver/gme/response/ChallengeGradeMst.hpp b/gimuserver/gme/response/ChallengeGradeMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeHr.hpp b/gimuserver/gme/response/ChallengeHr.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeItemMst.hpp b/gimuserver/gme/response/ChallengeItemMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeMisMst.hpp b/gimuserver/gme/response/ChallengeMisMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeMst.hpp b/gimuserver/gme/response/ChallengeMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeMvp.hpp b/gimuserver/gme/response/ChallengeMvp.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeRankRewardMst.hpp b/gimuserver/gme/response/ChallengeRankRewardMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ChallengeRewardMst.hpp b/gimuserver/gme/response/ChallengeRewardMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/DailyBPInfo.hpp b/gimuserver/gme/response/DailyBPInfo.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/HelpMst.hpp b/gimuserver/gme/response/HelpMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/HelpSubMst.hpp b/gimuserver/gme/response/HelpSubMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/InformationMst.hpp b/gimuserver/gme/response/InformationMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/InteractiveBannerInfo.hpp b/gimuserver/gme/response/InteractiveBannerInfo.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/MissionStartInfo.hpp b/gimuserver/gme/response/MissionStartInfo.hpp
new file mode 100644
index 0000000..09f2100
--- /dev/null
+++ b/gimuserver/gme/response/MissionStartInfo.hpp
@@ -0,0 +1,53 @@
+#pragma once
+
+#include "../GmeRequest.hpp"
+
+RESPONSE_NS_BEGIN
+struct MissionStartInfo : public IResponse
+{
+ struct Data
+ {
+ std::string userID;
+ std::string reinforceUserID;
+ uint32_t friendPoint;
+ std::string missionID;
+ std::string reinforceInfo; // "1VagK32J" field, not present in the provided response
+ uint32_t deckNum;
+ uint32_t bonusType;
+ float bonusRate;
+
+ explicit Data() : friendPoint(0), deckNum(0), bonusType(0), bonusRate(0.0f)
+ {
+ }
+
+ void Serialize(Json::Value& v) const
+ {
+ v["h7eY3sAK"] = reinforceUserID; // str
+ v["J3stQ7jd"] = std::to_string(friendPoint); // str
+ v["j28VNcUW"] = missionID; // str
+ if (!reinforceInfo.empty()) {
+ v["1VagK32J"] = reinforceInfo; // str
+ }
+ v["Z0Y4RoD7"] = std::to_string(deckNum); // str
+ if (bonusType != 0) {
+ v["nA95Bdj6"] = std::to_string(bonusType); // str
+ }
+ if (bonusRate != 0.0f) {
+ v["5Z1LNoyH"] = std::to_string(bonusRate); // str
+ }
+ }
+ };
+
+ const char* getGroupName() const override { return "fEi17cnx"; }
+
+ std::vector Mst;
+
+protected:
+ size_t getRespCount() const override { return Mst.size(); }
+
+ void SerializeFields(Json::Value& v, size_t i) const override
+ {
+ Mst.at(i).Serialize(v);
+ }
+};
+RESPONSE_NS_END
\ No newline at end of file
diff --git a/gimuserver/gme/response/PermitRecipe.hpp b/gimuserver/gme/response/PermitRecipe.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ServerInfo.hpp b/gimuserver/gme/response/ServerInfo.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/ServerTime.hpp b/gimuserver/gme/response/ServerTime.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/SlotGameInfo.hpp b/gimuserver/gme/response/SlotGameInfo.hpp
index 29a092a..5bf7150 100644
--- a/gimuserver/gme/response/SlotGameInfo.hpp
+++ b/gimuserver/gme/response/SlotGameInfo.hpp
@@ -5,7 +5,7 @@
RESPONSE_NS_BEGIN
struct SlotGameInfo : public IResponse
{
- uint32_t id;
+ uint32_t id = 0; // initialized to suppress C26495
std::string name;
std::string reelPos;
std::string useMedal;
@@ -26,4 +26,4 @@ struct SlotGameInfo : public IResponse
v["TX98PnpE"] = slotImage;
}
};
-RESPONSE_NS_END
+RESPONSE_NS_END
\ No newline at end of file
diff --git a/gimuserver/gme/response/SoundMst.hpp b/gimuserver/gme/response/SoundMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/TrophyGradeMst.hpp b/gimuserver/gme/response/TrophyGradeMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/TrophyGroupMst.hpp b/gimuserver/gme/response/TrophyGroupMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/TrophyMst.hpp b/gimuserver/gme/response/TrophyMst.hpp
deleted file mode 100644
index e69de29..0000000
diff --git a/gimuserver/gme/response/UserAchievementInfo.hpp b/gimuserver/gme/response/UserAchievementInfo.hpp
deleted file mode 100644
index 5b8ec2b..0000000
--- a/gimuserver/gme/response/UserAchievementInfo.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include "../GmeRequest.hpp"
-
-RESPONSE_NS_BEGIN
-struct UserAchievementInfo : public IResponse
-{
- bool isArray() const override { return false; }
- const char* getGroupName() const override { return "Bnc4LpM8"; }
-
-protected:
- void SerializeFields(Json::Value& v, size_t i) const override
- {
- // TODO
- }
-};
-RESPONSE_NS_END
diff --git a/gimuserver/gme/response/UserUnitInfo.hpp b/gimuserver/gme/response/UserUnitInfo.hpp
index 178b22f..89dfa7c 100644
--- a/gimuserver/gme/response/UserUnitInfo.hpp
+++ b/gimuserver/gme/response/UserUnitInfo.hpp
@@ -53,15 +53,15 @@ struct UserUnitInfo : public IResponse
v["67CApcti"] = baseAtk;
v["RT4CtH5d"] = addAtk;
v["t4m1RH6Y"] = extAtk;
- v["D6bKH5eV"] = limitOverAtk;
+ v["D6bKH5eV"] = limitOverAtk; //? Not in order with IDA
v["q08xLEsy"] = baseDef;
v["GcMD0hy6"] = addDef;
v["e6mY8Z0k"] = extDef;
- v["3CsiQA0h"] = limitOverDef;
+ v["3CsiQA0h"] = limitOverDef; //? Not in order with IDA
v["PWXu25cg"] = baseHeal;
v["C1HZr3pb"] = addHeal;
v["X6jf8DUw"] = extHeal;
- v["XJs2rPx0"] = limitOverHeal;
+ v["XJs2rPx0"] = limitOverHeal; //? Not in order with IDA
v["iNy0ZU5M"] = element;
v["oS3kTZ2W"] = std::to_string(leaderSkillID); // str
v["nj9Lw7mV"] = skillID; // str
@@ -89,10 +89,15 @@ struct UserUnitInfo : public IResponse
}
};
- const char* getGroupName() const override { return "4ceMWH6k"; }
+ const char* getGroupName() const override {
+ if (overwrite) return "4ceMWH6k"; // Overwrite all units ?
+ return "qC2tJs4E"; // Add to existing units ?
+ }
std::vector Mst;
+ bool overwrite = true; // For summoning, set to false.
+
protected:
size_t getRespCount() const override { return Mst.size(); }
diff --git a/gimuserver/gumiapi/AccountController.cpp b/gimuserver/gumiapi/AccountController.cpp
index eed43ce..baf51d1 100644
--- a/gimuserver/gumiapi/AccountController.cpp
+++ b/gimuserver/gumiapi/AccountController.cpp
@@ -2,59 +2,519 @@
#include "core/Utils.hpp"
#include
+// =============================================================================
+// DEV MODE: SKIP TUTORIAL / FULL UNIT SEED
+// -----------------------------------------------------------------------------
+// For production / tutorial support, the flow should be:
+// 1. Create the user row with starter resources from start_info.json
+// (see System::Instance().MstConfig().StartInfo() for those values).
+// 2. Do NOT insert any user_units rows here.
+// 3. The client will fire a tutorial-gacha / starter-select handler
+// (tutorial_gatcha_id from define.json) which calls a dedicated handler
+// that inserts the chosen starter unit and triggers the opening cutscene.
+// 4. Gate all non-tutorial content behind the client's own mission/flag system.
+//
+// Until that handler is implemented and the packet structures for all downstream
+// handlers are known, we seed every unit immediately so the full client surface
+// area is reachable for debugging. Flip DEV_SKIP_TUTORIAL to 0 to restore the
+// proper new-account path once tutorial handler research is complete.
+// =============================================================================
+#define DEV_SKIP_TUTORIAL 1
+
+// -----------------------------------------------------------------------------
+// Full unit roster extracted from the reference gme.sqlite (2547 units).
+// When DEV_SKIP_TUTORIAL is disabled, remove this list and let the tutorial
+// gacha handler insert only the unit the player selects.
+// -----------------------------------------------------------------------------
+#if DEV_SKIP_TUTORIAL
+static const std::vector ALL_UNIT_IDS = {
+ "30030", "50802", "850418_100", "10613", "40714", "60965", "840868", "50015",
+ "840034", "30927", "51337", "860758_2_100", "830698", "50203", "60774", "50072",
+ "740237", "820547", "10715", "830767", "840124", "11116", "860818", "810558",
+ "811116", "10017_2", "760226", "20816", "10204", "50052", "40916", "40073",
+ "40464", "20544", "51126", "60164", "840848", "20030", "30013", "10575",
+ "60603", "820146", "860014", "10684", "20095", "20283", "30244", "30804",
+ "10522", "60115", "10804", "860158", "10605", "20025", "20946", "20275",
+ "20344", "810148", "30073", "850178", "40826", "820297", "30582", "60257_2",
+ "30275", "10162", "840258", "40536", "60153", "860357", "840558_100", "20625",
+ "760006", "60154", "60176", "50403", "40666", "30447", "40062", "30294",
+ "40537", "830858", "760227", "40587", "840508", "40475", "830818_100", "840968",
+ "820578", "20976", "10313", "50964", "820588", "60344", "10312", "30464",
+ "10464", "30533", "860377", "10374", "10716", "850628_2_100", "710227", "860547",
+ "840003", "820558", "51067", "50955", "10366", "840888", "860378", "30636",
+ "10113", "20593", "860818_2_100", "850297", "60294", "850148", "10112", "40674",
+ "50123", "60595", "10215", "820005", "10493", "820288_100", "50855", "20023",
+ "10946", "50672", "850858", "860015", "51107", "810838", "10736", "20575",
+ "830828_100", "30213", "50142", "850638", "20453", "20877", "40976", "860158_2",
+ "10092", "20863", "60213", "840255", "40131", "830388", "20736", "10434",
+ "840828_2", "10584", "750006", "30163", "40115", "60714", "50082", "50934",
+ "60017", "30130", "60084", "50022", "30654", "40202", "850900", "810048",
+ "51106", "820657", "840358", "850568", "40274", "820048_100", "810338_2_100", "810178",
+ "30255", "60593", "10233", "60494", "60484", "860687", "10677", "21107",
+ "20083", "60845", "860708", "11077", "20261", "850006", "850928", "860316",
+ "50202", "30413", "30675", "40986", "20354", "840277", "60097", "60534",
+ "850507", "50181", "810557", "20014", "840326", "830708_100", "830134", "850317",
+ "10634", "40102", "50445", "60316", "810588", "20996", "40562", "860978",
+ "11146", "30997", "50515", "40513", "860166", "40152", "10274", "60314",
+ "60844", "11096", "840828_100", "860828_2_100", "20654", "10622", "60163", "810798_100",
+ "50051", "20483", "730342", "60174", "810687", "40576", "811118", "40766",
+ "20475", "30661", "840608_100", "820567", "850116", "810277", "60071", "60040",
+ "10124", "20172", "810327", "820158", "50102", "820938", "30203", "820398",
+ "860758_2", "50936", "60357", "850015", "840867", "11017", "810618_100", "850167",
+ "50553", "50604", "840808", "40132", "40776", "830978", "10666", "850768",
+ "850708_100", "30786", "20012", "810265", "860827", "50764", "30866", "840708_100",
+ "40191", "30212", "830787", "40473", "50801", "830558", "60713",
+ "830437", "60073", "860518", "860818_2", "50895", "850035", "10514", "860257_2",
+ "860888", "820148", "60285", "20213", "850277", "60016", "750003", "860647",
+ "30605", "30125", "60234", "60666_2", "50886", "40857", "820317", "810188",
+ "750122", "40444", "40767", "30655", "30514", "30876", "40083", "30143",
+ "50444", "750166", "850437", "61067", "830598_100", "10256", "11016", "40243",
+ "60094", "20171", "20817", "40595", "31037", "30092", "60103", "40285",
+ "830678_100", "11166", "860328", "10985", "50253", "860035", "40153", "50287",
+ "40113", "860727", "40645", "60082", "40167", "20906", "50765", "50024",
+ "820437", "50143", "830317", "11057", "30694", "60836", "40414", "20181",
+ "820888_100", "860338", "840507", "50405", "60886", "840798_2_100", "20806", "20245",
+ "40215", "40987", "40214", "750005", "820288_2_100", "820798", "10164", "50485",
+ "820004", "40016", "40596", "40545", "60192", "61026", "30754", "850758_100",
+ "51207", "810758_100", "61217", "40261", "20191", "60584", "60986",
+ "10796", "40324", "60736", "850998", "51277", "840367", "860315", "50305",
+ "860757", "830378", "810326", "40345", "50917", "30796", "30021", "20997",
+ "51147", "10152", "820828", "810428", "10021", "50514", "20073", "820868",
+ "50263", "820568", "50165", "820758_2_100", "20153", "810918", "30116", "830146",
+ "20455", "40803", "10011", "40524", "810888", "20141", "10126", "20203",
+ "60120", "830526", "10127", "20162", "850627", "840788_100", "30816", "40172",
+ "60114", "840798_100", "10922", "840044", "850558", "10784", "820948_100", "10255",
+ "20661", "30755", "860105", "830758", "60283", "860167_100", "810708", "860867",
+ "11167", "850508", "30473", "10917", "820418", "860048_100", "820808_100", "830838",
+ "50313", "10072", "20645", "60585", "860787", "860255", "840607", "40273",
+ "61107", "40774", "860146", "50997", "860438", "60655", "60664", "50112",
+ "850328", "840047", "10142", "10465", "810125", "50153", "30676", "820287",
+ "60257", "20893", "10557", "840418", "31006", "60113", "10133", "60104",
+ "810288", "50584", "20566", "861008", "40936", "20071", "810418_100", "810318",
+ "10041", "51066", "30516", "60785", "810003", "20967", "840568_100", "830297",
+ "40071", "60063", "40063", "820417", "20564", "40133", "830298", "50612",
+ "40030", "40515", "51086", "850688", "810518", "830318", "810618", "20142",
+ "830528_100", "21006", "40253", "20524", "20776", "20614", "60643", "50975",
+ "840998_100", "850018_2", "40423", "60464", "20156", "810718", "40315", "830788_100",
+ "40544", "10031", "30583", "820828_2", "60155", "60274", "10017", "30273",
+ "860637", "30896", "60754", "40355", "810688_100", "850828_100", "20804", "850858_100",
+ "40574", "40117", "40735", "60032", "10452", "20655", "820828_2_100", "820828_100",
+ "860788", "50254", "820958", "10354", "31066", "860238", "830788", "30315",
+ "730287", "830408", "10093", "11066", "30105", "40061", "860427", "30817",
+ "10695", "860568_100", "10256_2", "10612", "820388", "811038", "830418_100", "60023",
+ "60175", "40446", "730362", "10104", "30093", "30095", "60895", "20485",
+ "20094", "50131", "60027", "830135", "30124", "830808_100", "20244", "830798_2",
+ "20775", "10363", "820718", "20837", "840287", "60536", "830116", "830958_100",
+ "30032", "30447_2", "810417", "61086", "30017_2", "20704", "20144", "10283",
+ "10704", "50291", "60822", "40155", "40523", "810278_100", "30674", "40254",
+ "820315", "20827", "20785", "840176", "840417", "850197", "20052", "860418_100",
+ "40141", "840118", "810758", "50654", "60476", "820757", "810115", "840557",
+ "40535", "50766", "850958", "820557", "820147", "830998_100", "60674", "50171",
+ "850708", "20534", "840828_2_100", "850278_2", "30355", "840768_100", "820628", "860758_100",
+ "10735", "20294", "820277", "860104", "20636", "10997", "30274", "51336",
+ "50344", "21036", "30573", "830757", "30284", "10122", "820998", "10516",
+ "820003", "830004", "840587", "10030", "820758_2", "50317", "820167", "60975",
+ "20082", "30916", "51112", "10463", "51076", "850568_2_100", "860607", "40213",
+ "820838", "50682", "850146", "850346", "41037", "60021", "10222", "860578_100",
+ "10125", "830818_2", "60483", "830858_100", "30494", "30604", "860187", "20163",
+ "10977", "30704", "10675", "730352", "61056", "20646", "830438_100", "20683",
+ "40122", "730227", "40021", "60181", "20284", "20956", "30172", "810357",
+ "40415", "850788", "820204", "20295", "10553", "50465", "860428", "860548",
+ "30354", "810858_100", "10212", "20756", "850205", "810397", "30081", "10936",
+ "810186", "61196", "30285", "40775", "860657", "30016", "30082", "51216",
+ "10864", "830326", "30836", "61073", "40445", "20675", "10722", "810628_100",
+ "830528", "60974", "30495", "60365", "20554", "50605", "60152", "830118",
+ "11047", "860678", "20805", "810628_2_100", "20425", "10556", "30253", "20986",
+ "850637", "830358_100", "820506", "61287", "40165", "860688", "870034", "20092",
+ "40494", "860003", "30142", "830047", "840808_100", "40166", "30104", "50324",
+ "850548", "10202", "10595", "30596", "810657", "810338", "50986", "830278",
+ "61057", "60884", "60794", "860125", "50696", "50786", "30261", "60041",
+ "60072", "810548", "830505", "50414", "21037", "40236", "830148", "20124",
+ "50011", "61216", "30014", "20050", "830048_100", "50085", "60583", "31067",
+ "840178", "61207", "840958_100", "830598_2", "861008_100", "860758", "30706", "840798",
+ "860808_100", "10865", "820688_100", "840118_100", "50915", "10824", "820958_100", "860518_100", "60177", "60865", "60525", "61097", "60233", "10635", "60625",
+ "30847", "40052", "30202", "50737", "61007", "40896", "50092", "850688_100",
+ "850908", "840627", "860828", "30956", "11027", "30932", "860738", "30624",
+ "10776", "40164", "30627", "40125", "40233", "820998_100", "60635", "40615",
+ "61137", "30166", "60465", "850034", "810045", "830006", "40072", "820867",
+ "860356", "810006", "10191", "810124", "850648", "10165", "820568_100", "20583",
+ "20977", "860005", "51176", "60083", "30113", "60994", "810998_100", "10294",
+ "40234", "811017", "810858", "10996", "860818_100", "50735", "51167", "810204",
+ "30567", "810206", "850828_2", "30513", "61037", "730322", "40856", "820168",
+ "40425", "10261", "10976", "850018_2_100", "60042", "20215", "820558_100", "860257",
+ "860978_100", "40937", "50116", "710167", "60575", "50996", "40507", "820034",
+ "10774", "20634", "860256", "10016", "850265", "40024", "10686", "830316",
+ "20706", "40104", "810808", "830818_2_100", "860148", "60474", "850114", "820044",
+ "30987", "20061", "810005", "20164", "10795", "60061", "810398", "51007",
+ "50987", "60334", "820717", "30565", "10014", "810758_2", "60364", "30155",
+ "820378", "30153", "20705", "40041", "10573", "860357_100", "840257_2", "10253",
+ "61257", "30171", "840128", "830647", "50885", "50315", "30715", "20626",
+ "820318", "830287", "810116", "830528_2", "50386", "30222", "850657", "30946",
+ "810428_100", "51266", "830438", "60945", "40632", "860608", "20243", "840438",
+ "40886", "60243", "50703", "20555", "20624", "60524", "20324", "30555",
+ "840798_2", "40514", "30243", "840115", "850018", "40917", "40631", "50164",
+ "60846", "60095", "40081", "830628", "21046", "20553", "60765", "810318_100",
+ "10203", "20202", "840117", "20214", "20725", "30145", "40877", "40094",
+ "820868_100", "20535", "830868", "850288", "30684", "40092", "20955", "820548",
+ "20154", "20113", "30017", "60286", "20616", "840628_100", "40686", "30204",
+ "850166", "50483", "20605", "10825", "20617", "50314", "50303", "40575",
+ "830003", "810587", "50473", "20577", "40313", "820358_100", "860798", "40245",
+ "40906", "60645", "50113", "40162", "840438_100", "860177", "60665", "730287_100",
+ "10155", "50172", "10755", "40745", "860688_2_100", "30254", "50286", "10636",
+ "760006_100", "840204", "810356", "60473", "30393", "20714", "50166_2", "11117",
+ "50544", "860788_100", "850158", "30933", "750317", "860128", "851018_100", "40586",
+ "20947", "10805", "60445", "40816", "40154", "810838_100", "10916", "20293",
+ "40646", "830117", "60916", "61136", "40212", "820898", "860237", "820508",
+ "840547", "20926", "50673", "30063", "50292", "20125", "30083", "810998",
+ "810617", "30446", "40463", "40124", "60275", "60475", "860728", "60915",
+ "40614", "10847", "40255", "50656", "11036", "40032", "40786", "10334",
+ "20011", "840628_2_100", "840135", "840114", "20204", "50464", "50223", "50757",
+ "20784", "860658_100", "50132", "50013", "840768", "40665", "50285", "50484",
+ "60253", "40802", "51367", "830558_2_100", "40744", "820397", "811028_100", "830048",
+ "30122", "50255", "40293", "50071", "20017_2", "20844", "820206", "860577",
+ "40316", "40353", "830958", "60142", "860127", "40676", "40143", "730227_100",
+ "40493", "840156", "720167", "840258_100", "810108", "60105", "30846", "30233",
+ "30877", "830178", "20015", "50894", "850014", "50265", "840688_100", "50061",
+ "30775", "60954", "10132", "830045", "50475", "60683", "60117", "840006",
+ "840288", "61006", "850788_100", "10032", "30967", "20334", "30616", "10105",
+ "820125", "820758_100", "50864", "840508_2", "11046", "10286", "20615", "40625",
+ "820114", "50394", "60544", "850658_100", "51127", "30164", "840257", "40604",
+ "51014", "850977", "21087", "810325", "810758_2_100", "840256", "30313", "60062",
+ "30594", "10042", "830387", "40095", "40684", "60245", "830758_2_100", "20286",
+ "850888", "830328_2", "61286", "850557", "830527", "840708", "50756", "850298",
+ "720167_100", "11087", "30606", "830888_100", "830798_2_100", "20525", "20236", "840608",
+ "60024", "11097", "51006", "810547", "60317", "50775", "860288", "860628",
+ "850347", "50256", "20442", "41017", "830758_100", "60705", "30554", "810135",
+ "30634", "20105", "10050", "840368", "820278_100", "830598", "50745", "850318",
+ "10214", "50354", "20143", "20032", "810106", "850206", "830118_100", "850568_2",
+ "30986", "61066", "830628_100", "50304", "830504", "40223", "810708_100", "10783",
+ "50323", "10243", "831018_100", "40123", "820668", "10245", "50167", "50094",
+ "61027", "830688", "50104", "21086", "40023", "820658_100", "60116_2", "30823",
+ "20966", "50316", "50025", "50166", "60604", "850135", "20495", "30646",
+ "810908", "850918", "850978", "860568", "50835", "840048_100", "20774", "20695",
+ "10013", "830698_100", "810808_100", "50664", "840206", "20274", "10495", "60134",
+ "60121", "850165", "20253", "30546", "10083", "820948", "30394", "60835",
+ "20484", "840146", "860278_100", "40755", "820658", "60795", "30463", "30837",
+ "830978_100", "10685", "60201", "820827", "860558_100", "30735", "840878_100", "40817",
+ "10505", "20726", "10754", "10756", "60085", "810900", "811008_100",
+ "860167", "10435", "20644", "30071", "820507", "820848_100", "20234", "30165",
+ "820047", "30234", "20454", "20254", "30154", "40624", "860708_100", "30662",
+ "51137", "30734", "30645", "50976", "860178", "30295", "810287", "40334",
+ "840658_100", "10284", "30415", "60050", "20114", "30696", "20042", "10154",
+ "20724", "830115", "30595", "860288_2", "10235", "851018", "50866", "810958",
+ "810828_2_100", "10073", "60874", "20473", "20122", "40496", "850568_100", "60172",
+ "820568_2_100", "810767", "60776", "50643", "850998_100", "860017", "50106", "860134",
+ "60566", "10444", "840116", "850004", "60017_2", "61097_2", "850176", "860658",
+ "50477", "40142", "30346", "50816", "810316", "60786", "840155", "60293",
+ "20423", "20755", "810035", "40017", "10012", "810266", "50966", "40130",
+ "50191", "60735", "20576", "20016", "820357", "830288", "810518_100", "60894",
+ "810507", "850958_100", "60011", "60325", "810205", "830516", "10071", "840004",
+ "840125", "860108", "830588", "10594", "50264", "20024", "20355", "850788_2_100",
+ "11037", "11067", "30957", "61072", "20133", "60644", "20031", "30023",
+ "50585", "20363", "50095", "20062", "840128_100", "30705", "10734", "30050",
+ "10904", "30131", "40244", "51276", "51327", "60012", "850908_100", "820278",
+ "820438", "830034", "841028", "20826", "30181", "30424", "830648", "830528_2_100",
+ "60523", "20276", "810034", "61126", "30695", "830828", "40031", "50154",
+ "50896", "60224", "830818", "50944", "40867", "40716", "820135", "810147",
+ "810148_100", "820898_100", "60775", "50635", "840418_100", "30324", "20574", "50563",
+ "20662", "50503", "820668_100", "810528", "10555", "60363", "50012", "30787",
+ "20592", "30314", "30475", "20754", "20327", "50834", "61256", "830125",
+ "840758_2_100", "50105", "810928_100", "50325", "10145", "830325", "30094", "10445",
+ "850398", "850767", "850266", "40977", "20674", "40284", "30685", "60676",
+ "860578", "60682", "10062", "51227", "10606", "810837", "50273", "60936",
+ "840758", "820115", "30614", "40040", "850788_2", "10254", "840317", "10115",
+ "60254", "60976", "51113", "820837", "840398", "820578_100", "10295", "20836",
+ "820212", "830708", "850005", "10644", "830187", "810427", "30115", "10596",
+ "850025", "40465", "840205", "820298", "30132", "820808", "10676", "40503",
+ "50836", "51075", "41016", "40413", "60463", "10623", "830657", "10023",
+ "860287", "20987", "10806", "20734", "810827", "820748", "50705", "20217",
+ "51046", "40694", "30144", "30011", "51037", "51256", "10141", "40314",
+ "40222", "51257", "50935", "810278", "860107", "850017", "10344", "30123",
+ "10302", "60255", "20876", "50234", "51186", "60834", "40734", "10504",
+ "30765", "10063", "50463", "830697", "40051", "20892", "30345", "20537",
+ "10273", "50415", "730302", "850808_100", "20916", "40616", "50162", "40552",
+ "840657", "30756", "30445", "850828", "60526", "51267", "50016", "40235",
+ "10336", "860258", "810278_2", "850148_100", "860968", "50513", "850157", "30042",
+ "50706", "840357", "20533", "40443", "60143", "810628", "860156", "850315",
+ "40050", "51036", "10604", "850278_2_100", "810176", "10244", "850417", "850357",
+ "841028_100", "50525", "830798", "860437", "810337", "840958", "860868", "820288",
+ "30102", "40525", "840327", "30214", "850438_100", "820035", "810048_100", "61017",
+ "30566", "850798_100", "810898", "40876", "10236", "840147", "30764", "810778",
+ "840315", "10665", "20115", "740247", "830327", "10022", "50114", "60273",
+ "830598_2_100", "830758_2", "830418", "20713", "810177", "860688_100", "30607", "810105",
+ "10285", "60165", "10885", "10696", "40203", "50854", "60527", "840588",
+ "840758_2", "10466", "750317_100", "11056", "830808", "10503", "50704", "60102",
+ "30774", "10024", "30414", "30133", "60985", "60052", "810517", "820628_100",
+ "61046", "810146", "40506", "40103", "51047", "860277", "10765", "10094",
+ "10171", "30503", "20684", "20915", "60656", "810378", "820134", "60623",
+ "60984", "51193", "810315", "21007", "860124", "10544", "850358_100", "50115",
+ "50383", "20604", "10545", "61096", "10884", "61146", "50120", "10131",
+ "30907", "60122", "850758", "40013", "840005", "20104", "20513", "10947",
+ "830587", "10116", "30316", "60594", "30822", "60355", "860417", "840045",
+ "20927", "10213", "60767", "850278", "820006", "10257_2", "40505", "720237",
+ "40534", "30544", "10674", "40866", "830538", "20157_2", "850388", "40424",
+ "810828_2", "20112", "830688_100", "850003", "20565", "830005", "10275", "60766",
+ "10114", "30626", "10875", "20273", "820048", "860258_2", "50274", "20235",
+ "60812", "750167_100", "840278", "10223", "830315", "20126", "40343", "40675",
+ "20285", "40787", "30112", "831018", "811028", "50276", "820316", "10721",
+ "60956", "40012", "10130", "60666", "850808", "20131", "20051", "850367",
+ "10846", "20435", "850368", "811038_100", "10743", "20364", "840278_2_100", "810437",
+ "20255", "10095", "840577", "810357_100", "810627", "40112", "810047", "20155",
+ "820577", "20040", "50032", "811008", "30615", "20356", "30182", "860557",
+ "40294", "60755", "10234", "30505", "50145", "830124", "50945", "20676",
+ "60123", "10082", "40474", "50695", "60022", "40275", "50063", "810508",
+ "40105", "20013", "50814", "60093", "61047", "850567", "860147", "10333",
+ "50041", "30114", "60324", "860018_2", "840748_100", "18830", "850418", "40946",
+ "850377", "860018", "30515", "50694", "50746", "30714", "20041", "820568_2",
+ "840688", "840767", "850727", "830918", "20365", "10335", "850547", "60151",
+ "30031", "850628_100", "840868_100", "860018_2_100", "60030", "30625", "10515", "850196",
+ "810438_100", "840788", "850378", "840134", "860968_100", "830798_100", "30245", "10574",
+ "30012", "860106", "21056", "50603", "30215", "860638", "20302", "40685",
+ "860186", "61087", "51192", "20606", "10364", "60133", "30996", "10794",
+ "820358", "860135", "830678", "20157", "40346", "710217", "50031", "830558_100",
+ "40354", "820387", "820838_100", "50645", "50040", "50583", "30966", "810187",
+ "830147", "860798_2", "50042", "810888_100", "40276", "60326", "40504", "30534",
+ "30535", "60354", "30736", "830867", "41036", "840748", "60173",
+ "40907", "810317", "830044", "60261", "860047", "60624", "840397", "850828_2_100",
+ "40432", "40607", "40897", "60051", "850768_100", "20886", "20887", "50060",
+ "860998", "30897", "50083", "20326", "60704", "20474", "810438", "21106",
+ "60634", "60667", "50565", "30776", "820687", "830768", "40577", "40082",
+ "50030", "840127", "50243", "811016", "10494", "60262", "860688_2", "850438",
+ "820045", "820848", "860888_100", "840568", "860828_100", "810212", "20353", "50224",
+ "810658", "40927", "840358_100", "850397", "30041", "730332", "10554", "20325",
+ "30504", "30061", "810338_100", "60876", "820288_2", "830035", "50163",
+ "10061", "850387", "850154", "60533", "840628", "840878", "40283", "10103",
+ "20102", "30293", "850125", "40553", "61157", "50734", "750004", "30564",
+ "860048", "60543", "30040", "10826", "810658_100", "20857", "50050", "820900",
+ "10757", "850124", "820504", "840848_100", "20567", "860368", "850134", "30167",
+ "30283", "810338_2", "850155", "10607", "20424", "30236", "50144", "61016",
+ "30432", "20696", "50914", "820688", "20223", "30015", "50141", "31007",
+ "20021", "820505", "50564", "50683", "820747", "30152", "51027", "50792",
+ "40546", "860165", "40042", "60295", "820758", "10040", "30276", "50504",
+ "51217", "20582", "860958_100", "40495", "20735", "30062", "50744", "50754",
+ "50657", "50534", "60435", "840900", "810525", "40827", "60806", "10262",
+ "840377", "30024", "840567", "850048", "30343", "810828", "850358", "840968_100",
+ "40295", "30444", "20637", "20145", "850798", "20152", "50736", "51246",
+ "60955", "810828_100", "820677", "840828", "810958_100", "60693", "40262", "860258_2_100",
+ "850647", "850928_100", "850588", "30191", "40696", "30474", "30423", "850757",
+ "830597", "820205", "30223", "810508_2", "20123", "60675", "50916", "61197",
+ "50084", "30926", "50385", "850988_100", "30556", "50182", "810278_2_100", "50876",
+ "20677", "60497", "10257", "850628_2", "40181", "850147", "40563", "810104",
+ "60914", "810688", "40947", "810908_100", "820888", "20635", "30543", "860828_2",
+ "20907", "830377", "10172", "850316", "850988", "820587", "10705", "10052",
+ "40794", "10764", "10543", "50093", "40163", "840278_2", "61147", "10293",
+ "50755", "60144", "20862", "850558_100", "10583", "840278_100", "10646", "40344",
+ "60692", "810928", "820176", "830357", "810418", "730312", "10585", "21047",
+ "840827", "20366", "40015", "850658", "10102", "20017", "60212", "60633",
+ "51247", "51326", "820124", "30686", "50474", "50633", "10123", "20081",
+ "840378", "830868_100", "20262", "50774", "20694", "30162", "60764", "30917",
+ "50666", "10744", "20212", "850013", "60284", "40144", "710168", "860278",
+ "10375", "40145", "850048_100", "20856", "850177", "50017_2", "30545", "740247_100",
+ "60096", "830658", "850156", "40887", "50103", "61036", "860108_100", "40014",
+ "10923", "50634", "60015", "840758_100", "10081", "850888_100", "850728", "720157",
+ "60425", "10373", "840548", "820518", "10866", "820938_100", "10443", "60885",
+ "40017_2", "830525", "50133", "10717", "40025", "30572", "30103", "60112",
+ "60356", "850198", "30072", "50505", "60031", "60191", "840628_2", "50884",
+ "830537", "60821", "50865", "840048", "51317", "720237_100", "840578", "20434",
+ "20543", "20063", "830900", "20515", "50122", "840035", "860517", "21057",
+ "40664", "10937", "50014", "60565", "10433", "20545", "860367", "10025",
+ "730257", "860648", "860258_100", "60313", "860798_100", "60315", "50406", "60116",
+ "40715", "820678", "810004", "860868_100", "30262", "810757", "20796", "820418_100",
+ "20222", "10896", "10664", "860034", "830417", "50021", "50155", "860018_100",
+ "10785", "850018_100", "50665", "60875", "830518_2", "20514", "830557", "60864",
+ "860958", "20165", "840558", "10986", "40204", "50017", "810114", "810377",
+ "840325", "51187", "50073", "830278_100", "830827", "740157", "850167_100", "860013",
+ "810107", "830558_2", "860998_100", "820157", "10775", "860006", "30353",
+ "10163", "20323", "830277", "840998", "50204", "810408", "840757", "850278_100",
+ "30334", "50845", "850328_2", "60132", "850628", "20433", "830658_100", "30344",
+ "850204", "50404", "850115", "40117_2", "30465", "30867", "810558_100", "810798",
+ "20093", "10182", "40695", "20182", "30141", "60896", "30566_2", "750167",
+ "40605", "50384", "10144", "20233", "830518", "50644", "40585", "60535",
+ "40594", "60946", "860808", "830188", "10015", "50242", "30443", "20715",
+ "840177", "20130", "810768", "50134", "30052", "60014", "50023", "840318",
+ "10051", "830328", "60576", "40746", "820116", "11147", "51136", "30051",
+ "61167", "60162", "810898_100", "40644", "820177", "10143", "51166", "820438_100",
+ "20797", "40584", "31036", "810134", "830998", "830888", "50655", "840437",
+ "820377", "60756", "60353", "60495", "840316", "50364", "50413", "860004",
+ "30716", "820748_100", "20072", "40171", "60244", "820178", "840658", "860318",
+ "10153", "40182", "860317", "51087", "840148", "40093", "60737", "860900",
+ "10855", "60964", "30425", "60706", "820678_100", "60092", "50965", "810526",
+ "840888_100", "50152", "20132", "40022", "60734", "30517", "30947", "860558",
+ "860148_100", "60013", "20103", "50815", "60025", "810628_2", "830288_2", "860418",
+ "830358", "30635", "850827", "50275", "30797", "10647", "860838", "60182",
+ "830177", "10737", "40606", "10181", "820798_100", "40114", "10897", "50844",
+ "61125", "30493", "60493", "810044", "850047", "30025", "810527", "40011",
+ "20494", "51026", "10886", "30235", "850287", "10365", "30022", "10645",
+ "50121", "20022", "860798_2_100",
+ // These 7 IDs were previously filtered out as "invalid" but the reference
+ // working DB contains all of them. They are safe — do not remove them again.
+ "9850167", "100884", "200212", "300021", "400023", "500242", "600092",
+};
+#endif // DEV_SKIP_TUTORIAL
+
+// -----------------------------------------------------------------------------
+// Helper: fire-and-forget insert of all units for a new user.
+// Called only when DEV_SKIP_TUTORIAL is enabled.
+//
+// TODO (tutorial): Remove this function (or gate it behind an admin/dev flag)
+// once the tutorial-gacha handler is implemented. The proper path is for the
+// client to call that handler after the opening cutscene, which should insert
+// only the chosen starter unit and then redirect the client into normal play.
+// -----------------------------------------------------------------------------
+#if DEV_SKIP_TUTORIAL
+// Seed all units for a new user using a single INSERT with a recursive CTE
+// so the entire operation is one async call — no loop, no sync calls, no deadlock.
+// The callback fires when the insert is complete; on error it logs and still
+// sends the login response (units can be re-seeded by DevValidateAndSeedUnits
+// at next server start).
+static void SeedAllUnitsForUser(
+ const std::string& userId,
+ std::function onDone,
+ std::function onError)
+{
+ // Build a single INSERT using a VALUES list. SQLite handles this fine
+ // and it avoids the overhead and deadlock risk of 2540 individual statements.
+ // "INSERT OR IGNORE" is safe if the user already has some units.
+ std::string sql =
+ "INSERT OR IGNORE INTO user_units (user_id, unit_id) VALUES ";
+
+ for (size_t i = 0; i < ALL_UNIT_IDS.size(); ++i)
+ {
+ sql += "('" + userId + "', '" + ALL_UNIT_IDS[i] + "')";
+ if (i + 1 < ALL_UNIT_IDS.size()) sql += ",";
+ }
+ sql += ";";
+
+ GME_DB->execSqlAsync(
+ sql,
+ [userId, onDone](const drogon::orm::Result&)
+ {
+ LOG_INFO << "AccountController: seeded " << ALL_UNIT_IDS.size()
+ << " units for user " << userId << " [DEV_SKIP_TUTORIAL]";
+ onDone();
+ },
+ [userId, onError](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "AccountController: unit seed failed for user "
+ << userId << ": " << e.base().what();
+ onError();
+ }
+ );
+}
+#endif // DEV_SKIP_TUTORIAL
+
void AccountController::HandleGuest(const HttpRequestPtr& rq, std::function&& callback)
{
Utils::DumpInfoToDrogon(rq, "AccountController");
- // Extract parameters
auto params = rq->getParameters();
- std::string userId = params["ak"].empty() ? "default_user_id" : params["ak"]; // Use 'ak' as userId (e.g., 0101AABB or 0839899613932562)
+
+ // The client sends its device-generated ID as 'ak'. We use it directly as
+ // the user primary key so every device gets its own row without any server-
+ // side ID generation. Uniqueness is not a concern for offline play.
+ std::string userId = params["ak"].empty() ? "default_user_id" : params["ak"];
std::string deviceId = params["device_id"].empty() ? "unknown_device" : params["device_id"];
- // Check if user exists in users table
GME_DB->execSqlAsync(
"SELECT id FROM users WHERE id = $1",
- [this, userId, deviceId, callback](const drogon::orm::Result& result) {
- if (result.empty()) {
- // New user: Insert into users and userinfo
- GME_DB->execSqlAsync(
- "INSERT INTO users (id, account_id, username, admin) VALUES ($1, $2, $3, $4)",
- [](const drogon::orm::Result& result) {
- LOG_INFO << "AccountController: Inserted new user";
- },
- [](const drogon::orm::DrogonDbException& e) {
- LOG_ERROR << "AccountController: Failed to insert new user: " << e.base().what();
- },
- userId, deviceId, "GuestUser", 0
- );
-
- GME_DB->execSqlAsync(
- "INSERT INTO userinfo (id, level, exp, max_unit_count, max_friend_count, zel, karma, brave_coin, max_warehouse_count, want_gift, free_gems, paid_gems, active_deck, summon_tickets, rainbow_coins, colosseum_tickets, active_arena_deck, total_brave_points, avail_brave_points, energy) "
- "VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)",
- [](const drogon::orm::Result& result) {
- LOG_INFO << "AccountController: Inserted default userinfo for new user";
- },
- [](const drogon::orm::DrogonDbException& e) {
- LOG_ERROR << "AccountController: Failed to insert default userinfo: " << e.base().what();
- },
- userId, 1, 0, 2292, 50, 1000, 0, 0, 2292, "", 100, 0, 0, 0, 0, 0, 0, 0, 0, 15
- );
- }
+ [this, userId, deviceId, callback](const drogon::orm::Result& result)
+ {
+ if (result.empty())
+ {
+ // ---------------------------------------------------------------
+ // NEW USER PATH
+ // All inserts are chained sequentially: users -> userinfo -> units.
+ // Each step fires only after the previous one completes successfully.
+ // The login response is sent at the end of the chain so the client
+ // never proceeds before the DB is fully populated.
+ // ---------------------------------------------------------------
+ GME_DB->execSqlAsync(
+ "INSERT INTO users (id, account_id, username, admin) VALUES ($1, $2, $3, $4)",
+ [userId, deviceId, callback](const drogon::orm::Result&)
+ {
+ LOG_INFO << "AccountController: inserted new user row";
+
+ GME_DB->execSqlAsync(
+ "INSERT INTO userinfo "
+ "(id, level, exp, max_unit_count, max_friend_count, zel, karma, "
+ " brave_coin, max_warehouse_count, want_gift, free_gems, paid_gems, "
+ " active_deck, summon_tickets, rainbow_coins, colosseum_tickets, "
+ " active_arena_deck, total_brave_points, avail_brave_points, energy) "
+ "VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20)",
+ [userId, callback](const drogon::orm::Result&)
+ {
+ LOG_INFO << "AccountController: inserted default userinfo";
+
+ // Send the login response NOW — users and userinfo rows
+ // both exist, so InitializeRequest2 and GetUserInfo can
+ // proceed correctly. The unit seed runs after the response
+ // is sent because GetUserInfo fires ~2 seconds later,
+ // giving the bulk INSERT plenty of time to complete.
+ Json::Value v;
+ v["status"] = "successful";
+ v["token"] = "test_token";
+ v["game_user_id"] = userId;
+ v["status_no"] = "0";
+ callback(HttpResponse::newHttpJsonResponse(v));
+
+#if DEV_SKIP_TUTORIAL
+ // Fire unit seed after response — no callback needed.
+ // DevValidateAndSeedUnits at startup will catch any
+ // units that failed to insert if the seed is interrupted.
+ SeedAllUnitsForUser(userId, []() {
+ LOG_INFO << "AccountController: unit seed complete";
+ }, []() {
+ LOG_WARN << "AccountController: unit seed failed - "
+ << "DevValidateAndSeedUnits will retry on next start";
+ });
+#endif
+ },
+ [callback](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "AccountController: failed to insert userinfo: " << e.base().what();
+ auto resp = HttpResponse::newHttpResponse();
+ resp->setStatusCode(k500InternalServerError);
+ callback(resp);
+ },
+ // id lv exp max_units max_friends zel karma
+ userId, 999, 0, 4000, 50, 99000000LL, 99000000LL,
+ // brave_coin max_wh want_gift free_gems paid_gems
+ 4200, 5500, "", 10000, 20000,
+ // active_deck summon_tix rainbow_coins colosseum_tix
+ // colosseum_tickets must be 0 -- crashes client when non-zero
+ // before the colosseum feature is unlocked.
+ 0, 99, 0, 0,
+ // active_arena_deck total_bp avail_bp energy
+ 0, 0, 0, 431
+ );
+ },
+ [callback](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "AccountController: failed to insert user row: " << e.base().what();
+ auto resp = HttpResponse::newHttpResponse();
+ resp->setStatusCode(k500InternalServerError);
+ callback(resp);
+ },
+ userId, deviceId, "GuestUser", 0
+ );
+ return; // Response sent inside the chain above.
+ }
- // Return login response
- Json::Value v;
- v["status"] = "successful";
- v["token"] = "test_token"; // TODO: Generate a proper token
- v["game_user_id"] = userId; // Use the same userId as in the database
- v["status_no"] = "0";
- callback(HttpResponse::newHttpJsonResponse(v));
- },
- [callback](const drogon::orm::DrogonDbException& e) {
- LOG_ERROR << "AccountController: Database error during login: " << e.base().what();
- auto resp = HttpResponse::newHttpResponse();
- resp->setStatusCode(k500InternalServerError);
- callback(resp);
- },
+ // Existing user — send login response immediately.
+ Json::Value v;
+ v["status"] = "successful";
+ v["token"] = "test_token";
+ v["game_user_id"] = userId;
+ v["status_no"] = "0";
+ callback(HttpResponse::newHttpJsonResponse(v));
+ },
+ [callback](const drogon::orm::DrogonDbException& e)
+ {
+ LOG_ERROR << "AccountController: DB error during login check: " << e.base().what();
+ auto resp = HttpResponse::newHttpResponse();
+ resp->setStatusCode(k500InternalServerError);
+ callback(resp);
+ },
userId
);
}
\ No newline at end of file
diff --git a/gimuserver/system/DailyTaksConfig.cpp b/gimuserver/system/DailyTaskConfig.cpp
similarity index 100%
rename from gimuserver/system/DailyTaksConfig.cpp
rename to gimuserver/system/DailyTaskConfig.cpp
diff --git a/standalone_frontend/main.cpp b/standalone_frontend/main.cpp
index 05f1c3e..1625de1 100644
--- a/standalone_frontend/main.cpp
+++ b/standalone_frontend/main.cpp
@@ -20,11 +20,22 @@ int main(int argc, char** argv)
drogon::app()
.loadConfigFile("./config.json")
.createDbClient("sqlite3", "", 0, "", "", "", 1, System::Instance().GetDbPath(), "gme", false, "utf-8")
- .registerBeginningAdvice([]() {
- System::Instance().RunMigrations(drogon::app().getDbClient("gme"));
- })
- .run()
- ;
+ .registerBeginningAdvice([]()
+ {
+ auto db = drogon::app().getDbClient("gme");
+
+ // 1. Create all tables and run any pending migrations.
+ System::Instance().RunMigrations(db);
+
+ // 2. DEV: top up any users whose unit roster is below the full
+ // seed count. No-op when DEV_SKIP_TUTORIAL=0.
+ System::Instance().DevValidateAndSeedUnits(db);
+
+ // 3. Resolve and cache the real user ID so GmeController can
+ // route all incoming requests without a per-request DB lookup.
+ System::Instance().ResolveActiveUser(db);
+ })
+ .run();
}
catch (const std::exception& ex)
{
@@ -32,4 +43,4 @@ int main(int argc, char** argv)
}
return 0;
-}
+}
\ No newline at end of file