From 856d3c1ccb36f61fdf99765ce82ea4f5a745fd06 Mon Sep 17 00:00:00 2001 From: holmityd Date: Wed, 30 Aug 2023 17:32:08 +0400 Subject: [PATCH] missionInventoryUpdate - error handler --- .../api/missionInventoryUpdateController.ts | 21 +++++++++++++++++-- src/services/inventoryService.ts | 4 +++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 10c45b3d..7f30049f 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,5 +1,6 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; +import fs from 'fs'; /* - [ ] crossPlaySetting - [ ] rewardsMultiplier @@ -39,11 +40,27 @@ import { missionInventoryUpdate } from "@/src/services/inventoryService"; - [ ] FpsSamples */ const missionInventoryUpdateController: RequestHandler = async (req, res) => { + fs.writeFile("./tmp/missionInventoryUpdate", req.body,(err)=>{ + if(err) + return console.log(err); + }); // temp log, !!! tmp folder need on main dir + const [data, _secondIGuessIsSalt] = String(req.body).split("\n"); const id = req.query.accountId as string; - - await missionInventoryUpdate(JSON.parse(data), id); + // TODO - salt check + + try { + const parsedData = JSON.parse(data); + if (typeof parsedData !== 'object' || parsedData === null) + throw new Error('Invalid data format'); + + await missionInventoryUpdate(parsedData, id); + } catch (err) { + console.error('Error parsing JSON data:', err); + } + + // TODO - get original response res.json({}); }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index ad12c4a7..dbdd4997 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -111,6 +111,8 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou const { RawUpgrades, MiscItems, Suits, Pistols, LongGuns, Melee, RegularCredits } = data; const inventory = await getInventory(accountId); + // TODO - multipliers logic + const addGearExpByCategory = (gearArray: MissionInventoryUpdateGear[] | undefined, categoryName: 'Pistols'|'LongGuns'|'Melee'|'Suits') => { const category = inventory[categoryName]; @@ -127,7 +129,7 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou const addItemsByCategory = (itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, categoryName: 'RawUpgrades'|'MiscItems') => { const category = inventory[categoryName]; - + itemsArray?.forEach(({ ItemCount, ItemType }) => { const itemIndex = category.findIndex(i => i.ItemType === ItemType);