fix getVendorInfoController

This commit is contained in:
Master 2024-07-06 00:48:34 +08:00
parent a4ec3833bf
commit 7ee95ce13f

View File

@ -1,23 +1,60 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import ArchimedeanVendorManifest from "@/static/fixed_responses/getVendorInfo/ArchimedeanVendorManifest.json"; import { ExportVendors } from "warframe-public-export-plus";
import MaskSalesmanManifest from "@/static/fixed_responses/getVendorInfo/MaskSalesmanManifest.json"; import { IMongoDate, IOid } from "@/src/types/commonTypes";
import ZarimanCommisionsManifestArchimedean from "@/static/fixed_responses/getVendorInfo/ZarimanCommisionsManifestArchimedean.json"; import { Types } from "mongoose";
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
export interface VendorInfo {
_id: IOid;
TypeName: string;
ItemManifest: ItemManifestItem[];
PropertyTextHash: string;
Expiry: IMongoDate;
}
export interface ItemManifestItem {
StoreItem: string;
ItemPrices: ItemManifestItemPrice[];
Bin: string;
QuantityMultiplier: number;
Expiry: IMongoDate;
AllowMultipurchase: boolean;
Id: IOid;
}
export interface ItemManifestItemPrice {
ItemType: string;
ItemCount: number;
ProductCategory: string;
}
export const getVendorInfoController: RequestHandler = (req, res) => { export const getVendorInfoController: RequestHandler = (req, res) => {
switch (req.query.vendor as string) { const vendor = String(req.query.vendor);
case "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest": const dateTime = new Date();
res.json(ArchimedeanVendorManifest); dateTime.setDate(dateTime.getDate() + 1);
break; if (vendor in ExportVendors) {
const v = ExportVendors[vendor];
case "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest": const result: VendorInfo = {
res.json(MaskSalesmanManifest); _id: { $oid: new Types.ObjectId().toString() },
break; TypeName: vendor,
ItemManifest: [],
case "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean": PropertyTextHash: "DB7BF03C3FE6D0036A4DC30066A9A17E",
res.json(ZarimanCommisionsManifestArchimedean); Expiry: toMongoDate(new Date(dateTime))
break; };
v.items.forEach(item => {
default: const i = item.itemPrices[0];
throw new Error(`Unknown vendor: ${req.query.vendor}`); result.ItemManifest.push({
StoreItem: item.storeItem,
ItemPrices: [{ ItemType: i.ItemType, ItemCount: i.ItemCount, ProductCategory: "MiscItems" }],
Bin: "BIN_0",
QuantityMultiplier: 1,
Expiry: toMongoDate(new Date(dateTime)),
AllowMultipurchase: true,
Id: { $oid: new Types.ObjectId().toString() }
});
});
res.json({ VendorInfo: result });
} else {
throw new Error(`Unknown vendor: ${vendor}`);
} }
}; };