XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

chore: improve updateSession get request handling (#4141)

To avoid logging "session update: undefined" Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4141 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

51d3da9e
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

3 个文件 +51 -40
Modified src/controllers/api/updateSessionController.ts +8 -1
@@ -1,7 +1,14 @@
1 1 import type { RequestHandler } from "express";
2 2 import { updateSession } from "../../services/sessionService.ts";
3 3
4 export const updateSessionController: RequestHandler = async (req, res) => {
4 export const updateSessionGetController: RequestHandler = async (req, res) => {
5 if (!(await updateSession(req.query.sessionId as string, undefined))) {
6 res.status(400);
7 }
8 res.json({});
9 };
10
11 export const updateSessionPostController: RequestHandler = async (req, res) => {
5 12 if (!(await updateSession(req.query.sessionId as string, String(req.body)))) {
6 13 res.status(400);
7 14 }
Modified src/routes/api.ts +3 -3
@@ -180,7 +180,7 @@ import { unlockShipFeatureController } from "../controllers/api/unlockShipFeatur
180 180 import { updateAlignmentController } from "../controllers/api/updateAlignmentController.ts";
181 181 import { updateChallengeProgressController } from "../controllers/api/updateChallengeProgressController.ts";
182 182 import { updateQuestController } from "../controllers/api/updateQuestController.ts";
183 import { updateSessionController } from "../controllers/api/updateSessionController.ts";
183 import { updateSessionGetController, updateSessionPostController } from "../controllers/api/updateSessionController.ts";
184 184 import { updateSongChallengeController } from "../controllers/api/updateSongChallengeController.ts";
185 185 import { updateThemeController } from "../controllers/api/updateThemeController.ts";
186 186 import { upgradeOperatorController } from "../controllers/api/upgradeOperatorController.ts";
@@ -267,7 +267,7 @@ apiRouter.get("/startLibraryPersonalTarget.php", startLibraryPersonalTargetContr
267 267 apiRouter.get("/surveys.php", surveysController);
268 268 apiRouter.get("/trading.php", tradingController);
269 269 apiRouter.get("/trainingResult.php", trainingResultGetController);
270 apiRouter.get("/updateSession.php", updateSessionController);
270 apiRouter.get("/updateSession.php", updateSessionGetController);
271 271 apiRouter.get("/upgradeOperator.php", upgradeOperatorController);
272 272 apiRouter.get("/version.php", versionController);
273 273 apiRouter.get("/worldState.php", worldStateController); // U8
@@ -416,7 +416,7 @@ apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController
416 416 apiRouter.post("/updateInventory.php", missionInventoryUpdateController); // U26 and below
417 417 apiRouter.post("/updateNodeIntros.php", genericUpdateController);
418 418 apiRouter.post("/updateQuest.php", updateQuestController);
419 apiRouter.post("/updateSession.php", updateSessionController);
419 apiRouter.post("/updateSession.php", updateSessionPostController);
420 420 apiRouter.post("/updateSongChallenge.php", updateSongChallengeController);
421 421 apiRouter.post("/updateTheme.php", updateThemeController);
422 422 apiRouter.post("/upgrades.php", upgradesController);
Modified src/services/sessionService.ts +40 -36
@@ -114,53 +114,57 @@ export const getSession = async (request: IFindSessionRequest): Promise<IFindSes
114 114 }));*/
115 115 };
116 116
117 export const updateSession = async (sessionId: string | Types.ObjectId, updateData: string): Promise<boolean> => {
118 logger.debug(`session update: ${updateData}`);
119
117 export const updateSession = async (
118 sessionId: string | Types.ObjectId,
119 updateData: string | undefined
120 ): Promise<boolean> => {
120 121 //const session = sessions.find(session => session._id.equals(sessionId));
121 122 const session = await Session.findById(sessionId);
122
123 123 if (!session) {
124 124 return false;
125 125 }
126 if (updateData.substring(0, 1) == "{") {
127 try {
128 Object.assign(session, JSONParse(updateData));
129 } catch (error) {
130 logger.error("Invalid JSON string for session update.");
131 return false;
132 }
133 } else {
134 const updates: string[] = updateData.split("&");
135 for (const update of updates) {
136 const arr = update.split("=");
137 if (arr.length == 2) {
138 const [key, value] = arr;
139 switch (key) {
140 case "maxPlayers":
141 case "minPlayers":
142 case "privateSlots":
143 case "scoreLimit":
144 case "timeLimit":
145 case "gameModeId":
146 case "eloRating":
147 case "regionId":
148 case "difficulty":
149 case "freePublic":
150 case "freePrivate":
151 session[key] = parseInt(value);
152 break;
153
154 default:
155 logger.error(`unexpected key in legacy session update format: ${key}`);
156 break;
126
127 if (updateData) {
128 logger.debug(`session update: ${updateData}`);
129 if (updateData.substring(0, 1) == "{") {
130 try {
131 Object.assign(session, JSONParse(updateData));
132 } catch (error) {
133 logger.error("Invalid JSON string for session update.");
134 return false;
135 }
136 } else {
137 const updates: string[] = updateData.split("&");
138 for (const update of updates) {
139 const arr = update.split("=");
140 if (arr.length == 2) {
141 const [key, value] = arr;
142 switch (key) {
143 case "maxPlayers":
144 case "minPlayers":
145 case "privateSlots":
146 case "scoreLimit":
147 case "timeLimit":
148 case "gameModeId":
149 case "eloRating":
150 case "regionId":
151 case "difficulty":
152 case "freePublic":
153 case "freePrivate":
154 session[key] = parseInt(value);
155 break;
156
157 default:
158 logger.error(`unexpected key in legacy session update format: ${key}`);
159 break;
160 }
157 161 }
158 162 }
159 163 }
160 164 }
161 //logger.debug(`session after update:`, session);
162 165
163 166 session.lastUpdate = new Date();
167 //logger.debug(`session after update:`, session);
164 168 await session.save();
165 169
166 170 return true;