chore: handle profile viewing data request from old versions (#1970)
Reviewed-on: #1970 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
18fbd51efb
commit
ff3a9b382c
@ -18,16 +18,15 @@ import {
|
||||
ITypeXPItem
|
||||
} from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { RequestHandler } from "express";
|
||||
import { catBreadHash } from "@/src/helpers/stringHelpers";
|
||||
import { catBreadHash, getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { ExportCustoms, ExportDojoRecipes } from "warframe-public-export-plus";
|
||||
import { IStatsClient } from "@/src/types/statTypes";
|
||||
import { toStoreItem } from "@/src/services/itemDataService";
|
||||
import { FlattenMaps } from "mongoose";
|
||||
|
||||
export const getProfileViewingDataController: RequestHandler = async (req, res) => {
|
||||
if (req.query.playerId) {
|
||||
const account = await Account.findById(req.query.playerId as string, "DisplayName");
|
||||
const getProfileViewingDataByPlayerIdImpl = async (playerId: string): Promise<IProfileViewingData | undefined> => {
|
||||
const account = await Account.findById(playerId, "DisplayName");
|
||||
if (!account) {
|
||||
res.status(409).send("Could not find requested account");
|
||||
return;
|
||||
}
|
||||
const inventory = (await Inventory.findOne({ accountOwnerId: account._id }))!;
|
||||
@ -67,13 +66,23 @@ export const getProfileViewingDataController: RequestHandler = async (req, res)
|
||||
delete stats.__v;
|
||||
delete stats.accountOwnerId;
|
||||
|
||||
res.json({
|
||||
return {
|
||||
Results: [result],
|
||||
TechProjects: [],
|
||||
XpComponents: [],
|
||||
//XpCacheExpiryDate, some IMongoDate in the future, no clue what it's for
|
||||
Stats: stats
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
export const getProfileViewingDataGetController: RequestHandler = async (req, res) => {
|
||||
if (req.query.playerId) {
|
||||
const data = await getProfileViewingDataByPlayerIdImpl(req.query.playerId as string);
|
||||
if (data) {
|
||||
res.json(data);
|
||||
} else {
|
||||
res.status(409).send("Could not find requested account");
|
||||
}
|
||||
} else if (req.query.guildId) {
|
||||
const guild = await Guild.findById(req.query.guildId, "Name Tier XP Class Emblem TechProjects ClaimedXP");
|
||||
if (!guild) {
|
||||
@ -170,6 +179,28 @@ export const getProfileViewingDataController: RequestHandler = async (req, res)
|
||||
}
|
||||
};
|
||||
|
||||
// For old versions, this was an authenticated POST request.
|
||||
interface IGetProfileViewingDataRequest {
|
||||
AccountId: string;
|
||||
}
|
||||
export const getProfileViewingDataPostController: RequestHandler = async (req, res) => {
|
||||
const payload = getJSONfromString<IGetProfileViewingDataRequest>(String(req.body));
|
||||
const data = await getProfileViewingDataByPlayerIdImpl(payload.AccountId);
|
||||
if (data) {
|
||||
res.json(data);
|
||||
} else {
|
||||
res.status(409).send("Could not find requested account");
|
||||
}
|
||||
};
|
||||
|
||||
interface IProfileViewingData {
|
||||
Results: IPlayerProfileViewingDataResult[];
|
||||
TechProjects: [];
|
||||
XpComponents: [];
|
||||
//XpCacheExpiryDate, some IMongoDate in the future, no clue what it's for
|
||||
Stats: FlattenMaps<Partial<TStatsDatabaseDocument>>;
|
||||
}
|
||||
|
||||
interface IPlayerProfileViewingDataResult extends Partial<IDailyAffiliations> {
|
||||
AccountId: IOid;
|
||||
DisplayName: string;
|
||||
|
@ -59,6 +59,7 @@ import { getGuildDojoController } from "@/src/controllers/api/getGuildDojoContro
|
||||
import { getGuildLogController } from "@/src/controllers/api/getGuildLogController";
|
||||
import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsersController";
|
||||
import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController";
|
||||
import { getProfileViewingDataPostController } from "@/src/controllers/dynamic/getProfileViewingDataController";
|
||||
import { getShipController } from "@/src/controllers/api/getShipController";
|
||||
import { getVendorInfoController } from "@/src/controllers/api/getVendorInfoController";
|
||||
import { getVoidProjectionRewardsController } from "@/src/controllers/api/getVoidProjectionRewardsController";
|
||||
@ -247,6 +248,7 @@ apiRouter.post("/genericUpdate.php", genericUpdateController);
|
||||
apiRouter.post("/getAlliance.php", getAllianceController);
|
||||
apiRouter.post("/getFriends.php", getFriendsController);
|
||||
apiRouter.post("/getGuildDojo.php", getGuildDojoController);
|
||||
apiRouter.post("/getProfileViewingData.php", getProfileViewingDataPostController);
|
||||
apiRouter.post("/getVoidProjectionRewards.php", getVoidProjectionRewardsController);
|
||||
apiRouter.post("/gifting.php", giftingController);
|
||||
apiRouter.post("/gildWeapon.php", gildWeaponController);
|
||||
|
@ -1,14 +1,14 @@
|
||||
import express from "express";
|
||||
import { aggregateSessionsController } from "@/src/controllers/dynamic/aggregateSessionsController";
|
||||
import { getGuildAdsController } from "@/src/controllers/dynamic/getGuildAdsController";
|
||||
import { getProfileViewingDataController } from "@/src/controllers/dynamic/getProfileViewingDataController";
|
||||
import { getProfileViewingDataGetController } from "@/src/controllers/dynamic/getProfileViewingDataController";
|
||||
import { worldStateController } from "@/src/controllers/dynamic/worldStateController";
|
||||
|
||||
const dynamicController = express.Router();
|
||||
|
||||
dynamicController.get("/aggregateSessions.php", aggregateSessionsController);
|
||||
dynamicController.get("/getGuildAds.php", getGuildAdsController);
|
||||
dynamicController.get("/getProfileViewingData.php", getProfileViewingDataController);
|
||||
dynamicController.get("/getProfileViewingData.php", getProfileViewingDataGetController);
|
||||
dynamicController.get("/worldState.php", worldStateController);
|
||||
|
||||
export { dynamicController };
|
||||
|
Loading…
x
Reference in New Issue
Block a user