chore: turn getJSONfromString into a template/generic function
This commit is contained in:
parent
61f63dd40f
commit
524975d321
@ -9,7 +9,7 @@ import { ExportUpgrades } from "warframe-public-export-plus";
|
||||
export const activateRandomModController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const request = getJSONfromString(String(req.body)) as IActiveRandomModRequest;
|
||||
const request = getJSONfromString<IActiveRandomModRequest>(String(req.body));
|
||||
addMods(inventory, [
|
||||
{
|
||||
ItemType: request.ItemType,
|
||||
|
@ -6,7 +6,7 @@ import { getInventory } from "@/src/services/inventoryService";
|
||||
|
||||
const addFriendImageController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const json = getJSONfromString(String(req.body)) as IUpdateGlyphRequest;
|
||||
const json = getJSONfromString<IUpdateGlyphRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
inventory.ActiveAvatarImageType = json.AvatarImageType;
|
||||
await inventory.save();
|
||||
|
@ -6,7 +6,7 @@ import { IOid } from "@/src/types/commonTypes";
|
||||
|
||||
export const arcaneCommonController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const json = getJSONfromString(String(req.body)) as IArcaneCommonRequest;
|
||||
const json = getJSONfromString<IArcaneCommonRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
const upgrade = inventory.Upgrades.id(json.arcane.ItemId.$oid);
|
||||
if (json.newRank == -1) {
|
||||
|
@ -7,7 +7,7 @@ import { config } from "@/src/services/configService";
|
||||
|
||||
export const artifactsController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const artifactsData = getJSONfromString(String(req.body)) as IArtifactsRequest;
|
||||
const artifactsData = getJSONfromString<IArtifactsRequest>(String(req.body));
|
||||
|
||||
const { Upgrade, LevelDiff, Cost, FusionPointCost } = artifactsData;
|
||||
|
||||
|
@ -21,7 +21,7 @@ export interface IClaimCompletedRecipeRequest {
|
||||
}
|
||||
|
||||
export const claimCompletedRecipeController: RequestHandler = async (req, res) => {
|
||||
const claimCompletedRecipeRequest = getJSONfromString(String(req.body)) as IClaimCompletedRecipeRequest;
|
||||
const claimCompletedRecipeRequest = getJSONfromString<IClaimCompletedRecipeRequest>(String(req.body));
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
if (!accountId) throw new Error("no account id");
|
||||
|
||||
|
@ -6,7 +6,7 @@ import { Guild } from "@/src/models/guildModel";
|
||||
|
||||
export const createGuildController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const payload = getJSONfromString(String(req.body)) as ICreateGuildRequest;
|
||||
const payload = getJSONfromString<ICreateGuildRequest>(String(req.body));
|
||||
|
||||
// Create guild on database
|
||||
const guild = new Guild({
|
||||
|
@ -7,7 +7,7 @@ import { TEndlessXpCategory } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
export const endlessXpController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const payload = getJSONfromString(String(req.body)) as IEndlessXpRequest;
|
||||
const payload = getJSONfromString<IEndlessXpRequest>(String(req.body));
|
||||
|
||||
inventory.EndlessXP ??= [];
|
||||
const entry = inventory.EndlessXP.find(x => x.Category == payload.Category);
|
||||
|
@ -8,7 +8,7 @@ import { EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTyp
|
||||
export const evolveWeaponController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const payload = getJSONfromString(String(req.body)) as IEvolveWeaponRequest;
|
||||
const payload = getJSONfromString<IEvolveWeaponRequest>(String(req.body));
|
||||
|
||||
const recipe = getRecipe(payload.Recipe)!;
|
||||
if (payload.Action == "EWA_INSTALL") {
|
||||
|
@ -9,7 +9,7 @@ import { ExportResources, ExportSyndicates } from "warframe-public-export-plus";
|
||||
export const fishmongerController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const body = getJSONfromString(String(req.body)) as IFishmongerRequest;
|
||||
const body = getJSONfromString<IFishmongerRequest>(String(req.body));
|
||||
const miscItemChanges: IMiscItem[] = [];
|
||||
let syndicateTag: string | undefined;
|
||||
let gainedStanding = 0;
|
||||
|
@ -9,7 +9,7 @@ import { IGenericUpdate } from "@/src/types/genericUpdate";
|
||||
|
||||
const genericUpdateController: RequestHandler = async (request, response) => {
|
||||
const accountId = await getAccountIdForRequest(request);
|
||||
const update = getJSONfromString(String(request.body)) as IGenericUpdate;
|
||||
const update = getJSONfromString<IGenericUpdate>(String(request.body));
|
||||
await updateGeneric(update, accountId);
|
||||
response.json(update);
|
||||
};
|
||||
|
@ -10,7 +10,7 @@ import { ExportRelics, ExportRewards, TRarity } from "warframe-public-export-plu
|
||||
|
||||
export const getVoidProjectionRewardsController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const data = getJSONfromString(String(req.body)) as IVoidProjectionRewardRequest;
|
||||
const data = getJSONfromString<IVoidProjectionRewardRequest>(String(req.body));
|
||||
const response: IVoidProjectionRewardResponse = {
|
||||
CurrentWave: data.CurrentWave,
|
||||
ParticipantInfo: data.ParticipantInfo,
|
||||
|
@ -26,7 +26,7 @@ interface IGildWeaponRequest {
|
||||
|
||||
export const gildWeaponController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const data = getJSONfromString(String(req.body)) as IGildWeaponRequest;
|
||||
const data = getJSONfromString<IGildWeaponRequest>(String(req.body));
|
||||
data.ItemId = String(req.query.ItemId);
|
||||
if (!modularWeaponCategory.includes(req.query.Category as WeaponTypeInternal | "Hoverboards")) {
|
||||
throw new Error(`Unknown modular weapon Category: ${String(req.query.Category)}`);
|
||||
|
@ -5,9 +5,9 @@ import { addKeyChainItems, getInventory } from "@/src/services/inventoryService"
|
||||
|
||||
export const giveKeyChainTriggeredItemsController: RequestHandler = async (req, res) => {
|
||||
const accountId = parseString(req.query.accountId);
|
||||
const keyChainTriggeredItemsRequest = getJSONfromString(
|
||||
const keyChainTriggeredItemsRequest = getJSONfromString<IGiveKeyChainTriggeredItemsRequest>(
|
||||
(req.body as string).toString()
|
||||
) as IGiveKeyChainTriggeredItemsRequest;
|
||||
);
|
||||
|
||||
const inventory = await getInventory(accountId);
|
||||
const inventoryChanges = await addKeyChainItems(inventory, keyChainTriggeredItemsRequest);
|
||||
|
@ -22,7 +22,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
switch (req.query.mode) {
|
||||
case "s": {
|
||||
// shard installation
|
||||
const request = getJSONfromString(String(req.body)) as IShardInstallRequest;
|
||||
const request = getJSONfromString<IShardInstallRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!;
|
||||
if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) {
|
||||
@ -50,7 +50,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
|
||||
case "x": {
|
||||
// shard removal
|
||||
const request = getJSONfromString(String(req.body)) as IShardUninstallRequest;
|
||||
const request = getJSONfromString<IShardUninstallRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!;
|
||||
|
||||
@ -88,7 +88,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
|
||||
case "n": {
|
||||
// name the beast
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthNameRequest;
|
||||
const request = getJSONfromString<IHelminthNameRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
inventory.InfestedFoundry ??= {};
|
||||
inventory.InfestedFoundry.Name = request.newName;
|
||||
@ -105,7 +105,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
|
||||
case "c": {
|
||||
// consume items
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthFeedRequest;
|
||||
const request = getJSONfromString<IHelminthFeedRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
inventory.InfestedFoundry ??= {};
|
||||
inventory.InfestedFoundry.Resources ??= [];
|
||||
@ -201,7 +201,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
|
||||
case "o": {
|
||||
// offerings update
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthOfferingsUpdate;
|
||||
const request = getJSONfromString<IHelminthOfferingsUpdate>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
inventory.InfestedFoundry ??= {};
|
||||
inventory.InfestedFoundry.InvigorationIndex = request.OfferingsIndex;
|
||||
@ -220,7 +220,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
|
||||
case "a": {
|
||||
// subsume warframe
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthSubsumeRequest;
|
||||
const request = getJSONfromString<IHelminthSubsumeRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
const recipe = getRecipe(request.Recipe)!;
|
||||
for (const ingredient of recipe.secretIngredients!) {
|
||||
@ -283,7 +283,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
||||
}
|
||||
|
||||
case "u": {
|
||||
const request = getJSONfromString(String(req.body)) as IHelminthInvigorationRequest;
|
||||
const request = getJSONfromString<IHelminthInvigorationRequest>(String(req.body));
|
||||
const inventory = await getInventory(accountId);
|
||||
const suit = inventory.Suits.id(request.SuitId.$oid)!;
|
||||
const upgradesExpiry = new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000);
|
||||
|
@ -52,7 +52,7 @@ import { getInventory } from "@/src/services/inventoryService";
|
||||
export const missionInventoryUpdateController: RequestHandler = async (req, res): Promise<void> => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
|
||||
const missionReport = getJSONfromString((req.body as string).toString()) as IMissionInventoryUpdateRequest;
|
||||
const missionReport = getJSONfromString<IMissionInventoryUpdateRequest>((req.body as string).toString());
|
||||
|
||||
if (missionReport.MissionStatus !== "GS_SUCCESS") {
|
||||
console.log(`Mission failed: ${missionReport.RewardInfo?.node}`);
|
||||
|
@ -29,7 +29,7 @@ interface IModularCraftRequest {
|
||||
|
||||
export const modularWeaponCraftingController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const data = getJSONfromString(String(req.body)) as IModularCraftRequest;
|
||||
const data = getJSONfromString<IModularCraftRequest>(String(req.body));
|
||||
if (!(data.WeaponType in modularWeaponTypes)) {
|
||||
throw new Error(`unknown modular weapon type: ${data.WeaponType}`);
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ interface INameWeaponRequest {
|
||||
export const nameWeaponController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const body = getJSONfromString(String(req.body)) as INameWeaponRequest;
|
||||
const body = getJSONfromString<INameWeaponRequest>(String(req.body));
|
||||
const item = inventory[req.query.Category as string as TEquipmentKey].find(
|
||||
item => item._id.toString() == (req.query.ItemId as string)
|
||||
)!;
|
||||
|
@ -7,7 +7,7 @@ import { RequestHandler } from "express";
|
||||
export const playerSkillsController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const request = getJSONfromString(String(req.body)) as IPlayerSkillsRequest;
|
||||
const request = getJSONfromString<IPlayerSkillsRequest>(String(req.body));
|
||||
|
||||
const oldRank: number = inventory.PlayerSkills[request.Skill as keyof IPlayerSkills];
|
||||
const cost = (request.Pool == "LPP_DRIFTER" ? drifterCosts[oldRank] : 1 << oldRank) * 1000;
|
||||
|
@ -7,7 +7,7 @@ import { getRandomElement } from "@/src/services/rngService";
|
||||
|
||||
export const rerollRandomModController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const request = getJSONfromString(String(req.body)) as RerollRandomModRequest;
|
||||
const request = getJSONfromString<RerollRandomModRequest>(String(req.body));
|
||||
if ("ItemIds" in request) {
|
||||
const inventory = await getInventory(accountId, "Upgrades MiscItems");
|
||||
const upgrade = inventory.Upgrades.id(request.ItemIds[0])!;
|
||||
|
@ -6,7 +6,7 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
export const setEquippedInstrumentController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const body = getJSONfromString(String(req.body)) as ISetEquippedInstrumentRequest;
|
||||
const body = getJSONfromString<ISetEquippedInstrumentRequest>(String(req.body));
|
||||
inventory.EquippedInstrument = body.Instrument;
|
||||
await inventory.save();
|
||||
res.end();
|
||||
|
@ -7,7 +7,7 @@ import { WeaponTypeInternal } from "@/src/services/itemDataService";
|
||||
export const setWeaponSkillTreeController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId);
|
||||
const payload = getJSONfromString(String(req.body)) as ISetWeaponSkillTreeRequest;
|
||||
const payload = getJSONfromString<ISetWeaponSkillTreeRequest>(String(req.body));
|
||||
|
||||
const item = inventory[req.query.Category as WeaponTypeInternal].find(
|
||||
item => item._id.toString() == (req.query.ItemId as string)
|
||||
|
@ -14,7 +14,7 @@ interface IStartRecipeRequest {
|
||||
}
|
||||
|
||||
export const startRecipeController: RequestHandler = async (req, res) => {
|
||||
const startRecipeRequest = getJSONfromString(String(req.body)) as IStartRecipeRequest;
|
||||
const startRecipeRequest = getJSONfromString<IStartRecipeRequest>(String(req.body));
|
||||
logger.debug("StartRecipe Request", { startRecipeRequest });
|
||||
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
|
@ -9,7 +9,7 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||
export const syndicateSacrificeController: RequestHandler = async (request, response) => {
|
||||
const accountId = await getAccountIdForRequest(request);
|
||||
const inventory = await getInventory(accountId);
|
||||
const data = getJSONfromString(String(request.body)) as ISyndicateSacrificeRequest;
|
||||
const data = getJSONfromString<ISyndicateSacrificeRequest>(String(request.body));
|
||||
|
||||
let syndicate = inventory.Affiliations.find(x => x.Tag == data.AffiliationTag);
|
||||
if (!syndicate) {
|
||||
|
@ -19,7 +19,7 @@ interface ITrainingResultsResponse {
|
||||
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
|
||||
const trainingResults = getJSONfromString(String(req.body)) as ITrainingResultsRequest;
|
||||
const trainingResults = getJSONfromString<ITrainingResultsRequest>(String(req.body));
|
||||
|
||||
const inventory = await getInventory(accountId);
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { updateChallengeProgress } from "@/src/services/inventoryService";
|
||||
import { IUpdateChallengeProgressRequest } from "@/src/types/requestTypes";
|
||||
|
||||
const updateChallengeProgressController: RequestHandler = async (req, res) => {
|
||||
const payload = getJSONfromString(String(req.body)) as IUpdateChallengeProgressRequest;
|
||||
const payload = getJSONfromString<IUpdateChallengeProgressRequest>(String(req.body));
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
|
||||
await updateChallengeProgress(payload, accountId);
|
||||
|
@ -9,7 +9,7 @@ import { addItem, combineInventoryChanges, getInventory } from "@/src/services/i
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||
export const updateQuestController: RequestHandler = async (req, res) => {
|
||||
const accountId = parseString(req.query.accountId);
|
||||
const updateQuestRequest = getJSONfromString((req.body as string).toString()) as IUpdateQuestRequest;
|
||||
const updateQuestRequest = getJSONfromString<IUpdateQuestRequest>((req.body as string).toString());
|
||||
|
||||
// updates should be made only to one quest key per request
|
||||
if (updateQuestRequest.QuestKeys.length > 1) {
|
||||
|
@ -9,7 +9,7 @@ const updateThemeController: RequestHandler = async (request, response) => {
|
||||
const body = String(request.body);
|
||||
|
||||
try {
|
||||
const json = getJSONfromString(body) as IThemeUpdateRequest;
|
||||
const json = getJSONfromString<IThemeUpdateRequest>(body);
|
||||
if (typeof json !== "object") {
|
||||
throw new Error("Invalid data format");
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
export const getJSONfromString = (str: string): any => {
|
||||
export const getJSONfromString = <T>(str: string): T => {
|
||||
const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1);
|
||||
return JSON.parse(jsonSubstring);
|
||||
return JSON.parse(jsonSubstring) as T;
|
||||
};
|
||||
|
||||
export const getSubstringFromKeyword = (str: string, keyword: string): string => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user