add purchase
This commit is contained in:
parent
e08df26ab3
commit
d03cc9eec2
@ -7,5 +7,6 @@
|
||||
"skipStoryModeChoice": true,
|
||||
"skipTutorial": true,
|
||||
"testMission": true,
|
||||
"testQuestKey": true
|
||||
"testQuestKey": true,
|
||||
"testShipFeature": true
|
||||
}
|
||||
|
8
package-lock.json
generated
8
package-lock.json
generated
@ -11,7 +11,8 @@
|
||||
"dependencies": {
|
||||
"dotenv": "^16.1.3",
|
||||
"express": "^5.0.0-beta.1",
|
||||
"mongoose": "^7.1.1"
|
||||
"mongoose": "^7.1.1",
|
||||
"warframe-items": "^1.1260.50"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node20": "^1.0.0",
|
||||
@ -3140,6 +3141,11 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/warframe-items": {
|
||||
"version": "1.1260.50",
|
||||
"resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.50.tgz",
|
||||
"integrity": "sha512-03oNB6Yg61yUd7glewUUg0avnaGaAqc9oVPJk+1THFB0o/d4ppQSgL38yTUxMwmw0avCrqd+8z5TMrfXtvPDXQ=="
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
|
||||
|
@ -14,7 +14,8 @@
|
||||
"dependencies": {
|
||||
"dotenv": "^16.1.3",
|
||||
"express": "^5.0.0-beta.1",
|
||||
"mongoose": "^7.1.1"
|
||||
"mongoose": "^7.1.1",
|
||||
"warframe-items": "^1.1260.50"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node20": "^1.0.0",
|
||||
|
@ -1,7 +1,12 @@
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
import { Account } from "@/src/models/loginModel";
|
||||
import { Ship } from "@/src/models/shipModel";
|
||||
|
||||
import { createShip } from "@/src/services/shipService";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
import config from "@/config.json";
|
||||
import testShipFeature from "@/static/fixed_responses/testShipFeature.json";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||
const getShipController: RequestHandler = async (_req, res) => {
|
||||
@ -16,6 +21,13 @@ const getShipController: RequestHandler = async (_req, res) => {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (ship) {
|
||||
const new_ship = ship;
|
||||
if (config.testMission) new_ship.Ship.Features = testShipFeature;
|
||||
res.json(new_ship);
|
||||
return;
|
||||
}
|
||||
res.json(ship);
|
||||
};
|
||||
|
||||
|
@ -1,8 +1,17 @@
|
||||
import purchase from "@/static/fixed_responses/purchase.json";
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
import { PurchaseItem } from "@/src/services/tradeService";
|
||||
import { Request, Response } from "express";
|
||||
|
||||
const purchaseController = (_req: Request, res: Response): void => {
|
||||
res.json(purchase);
|
||||
const body = JSON.parse(_req.body);
|
||||
const response = PurchaseItem(
|
||||
body.PurchaseParams.StoreItem,
|
||||
body.PurchaseParams.Quantity,
|
||||
body.PurchaseParams.UsePremium,
|
||||
body.PurchaseParams.ExpectedPrice
|
||||
);
|
||||
res.json({ InventoryChanges: response });
|
||||
};
|
||||
|
||||
export { purchaseController };
|
||||
|
@ -1,3 +1,6 @@
|
||||
import mongoose from "mongoose";
|
||||
import { Oid } from "../types/commonTypes";
|
||||
|
||||
const isString = (text: unknown): text is string => {
|
||||
return typeof text === "string" || text instanceof String;
|
||||
};
|
||||
@ -55,4 +58,15 @@ const parseBoolean = (booleanCandidate: unknown): boolean => {
|
||||
return booleanCandidate;
|
||||
};
|
||||
|
||||
export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail };
|
||||
const generateOid = (str?: string): Oid => {
|
||||
const objectId: Oid = {
|
||||
$oid: new mongoose.Types.ObjectId().toString()
|
||||
};
|
||||
if (str) {
|
||||
objectId.$oid = str;
|
||||
}
|
||||
//console.log(objectId);
|
||||
return objectId;
|
||||
};
|
||||
|
||||
export { isString, isNumber, parseString, parseNumber, parseDateNumber, parseBoolean, parseEmail, generateOid };
|
||||
|
77
src/services/tradeService.ts
Normal file
77
src/services/tradeService.ts
Normal file
@ -0,0 +1,77 @@
|
||||
import { Item, Misc, Skin, Warframe, Weapon } from "warframe-items";
|
||||
import { InventoryChanges, StoreItem } from "../types/commonTypes";
|
||||
import { generateOid, parseString } from "../helpers/general";
|
||||
|
||||
const PurchaseItem = (item: Item, quantity: number, usePremium: boolean, price: number): InventoryChanges => {
|
||||
// {"InventoryChanges":{"WishlistChanges":["/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"],"FlavourItems":[{"ItemType":"/Lotus/Types/StoreItems/SuitCustomizations/ColourPickerItem"}],"PremiumCredits":-75}}
|
||||
|
||||
const newInventoryChanges: InventoryChanges = {};
|
||||
if ((item as Warframe).productCategory == "Suits") {
|
||||
const newSuits: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName,
|
||||
Cofigs: [],
|
||||
ItemId: generateOid()
|
||||
}
|
||||
];
|
||||
newInventoryChanges.Suits = newSuits;
|
||||
}
|
||||
if ((item as Weapon).productCategory == "LongGuns") {
|
||||
const newLongGuns: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName,
|
||||
Cofigs: [],
|
||||
ItemId: generateOid()
|
||||
}
|
||||
];
|
||||
newInventoryChanges.LongGuns = newLongGuns;
|
||||
}
|
||||
if ((item as Weapon).productCategory == "Pistols") {
|
||||
const newPistols: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName,
|
||||
Cofigs: [],
|
||||
ItemId: generateOid()
|
||||
}
|
||||
];
|
||||
newInventoryChanges.Pistols = newPistols;
|
||||
}
|
||||
if ((item as Weapon).productCategory == "Melee") {
|
||||
const newMelee: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName,
|
||||
Cofigs: [],
|
||||
ItemId: generateOid()
|
||||
}
|
||||
];
|
||||
newInventoryChanges.Melee = newMelee;
|
||||
}
|
||||
if (item as Misc) {
|
||||
const newMisc: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName,
|
||||
ItemCount: quantity
|
||||
}
|
||||
];
|
||||
newInventoryChanges.MiscItems = newMisc;
|
||||
}
|
||||
if (item as Skin) {
|
||||
newInventoryChanges.WishlistChanges = [];
|
||||
newInventoryChanges.WishlistChanges.push(parseString(item.uniqueName));
|
||||
const newFlavourItem: StoreItem[] = [
|
||||
{
|
||||
ItemType: item.uniqueName
|
||||
}
|
||||
];
|
||||
newInventoryChanges.FlavourItems = newFlavourItem;
|
||||
}
|
||||
if (usePremium) {
|
||||
newInventoryChanges.PremiumCredits = -price;
|
||||
}
|
||||
if (!usePremium) {
|
||||
newInventoryChanges.RegularCredits = -price;
|
||||
}
|
||||
return newInventoryChanges;
|
||||
};
|
||||
|
||||
export { PurchaseItem };
|
@ -1,3 +1,25 @@
|
||||
import { CrewShipSalvageBinClass, SuitConfig } from "./inventoryTypes";
|
||||
|
||||
export interface Oid {
|
||||
$oid: string;
|
||||
}
|
||||
|
||||
export interface StoreItem {
|
||||
ItemType?: string;
|
||||
ItemId?: Oid;
|
||||
ItemCount?: number;
|
||||
Cofigs?: SuitConfig[];
|
||||
}
|
||||
|
||||
export interface InventoryChanges {
|
||||
WeaponBin?: CrewShipSalvageBinClass;
|
||||
WishlistChanges?: string[];
|
||||
FlavourItems?: StoreItem[];
|
||||
Suits?: StoreItem[];
|
||||
LongGuns?: StoreItem[];
|
||||
Pistols?: StoreItem[];
|
||||
Melee?: StoreItem[];
|
||||
MiscItems?: StoreItem[];
|
||||
PremiumCredits?: number;
|
||||
RegularCredits?: number;
|
||||
}
|
||||
|
58
static/fixed_responses/testShipFeature.json
Normal file
58
static/fixed_responses/testShipFeature.json
Normal file
@ -0,0 +1,58 @@
|
||||
[
|
||||
"/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/AdvancedOrdisFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/AlchemyRoomFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/AlertsFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ArsenalFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/CeresNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ClanFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/EarthNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/EidolonArchwingFoundryUpgradeFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ErisNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/EuropaNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/FoundryConcurrentBuildFormaFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/FoundryFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/FoundryVesselUpgradeFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryCatbrowUpgradeFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/GeneticFoundryUpgradeFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryArchonShardFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/InfestedFoundryUpgradeFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/JupiterNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/MarketTierOneFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/MarketTierTwoFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/MarsNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ModsFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ModsFusionFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ModsTransmuteFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/NeptuneNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/PersonalQuartersFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/PhobosNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/PlutoNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodBraceFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHoodFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackHullFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleLeftFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackNacelleRightFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/DamagedRailjackTailFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodBraceFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHoodFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackHullFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleLeftFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackNacelleRightFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/Railjack/RailjackTailFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/RailjackCephalonShipFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/RailjackKeyShipFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/SaturnNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/SednaNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/ShipFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/SocialMenuFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/SolarChartFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/UranusNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/VenusNavigationFeatureItem",
|
||||
"/Lotus/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem"
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user