import { Router } from "express"; import { msToTime } from "../../util/time.js"; import { MProfile } from "../../mongo/profile.js"; import { MBlacklist } from "../../mongo/blacklist.js"; import { SteamUtil } from "../../util/SteamUtil.js"; import { ErrorResponseBuilder, SuccessResponseBuilder } from "../responseBuilder.js"; import { removeProperties } from "../../util/functions.js"; export class ProfilesRoute { static load() { const app = Router(); app.get("/:id", async (req, res) => { if (!req.params.id) { res.redirect("/"); return; } const player = await MProfile.findOne({ steam: req.params.id }); if (!player) { res.status(404).json(new ErrorResponseBuilder() .setCode(404).setData("Profile not found! (probably private)")); return; } const blacklist = await MBlacklist.findOne({ steam: req.params.id! }); if (blacklist && blacklist.status) { res.status(403).json(new ErrorResponseBuilder() .setCode(403).setData("Profile blacklisted!")); return; } const steam = await SteamUtil.getPlayer(player?.steam!); const steamStats = await SteamUtil.getPlayerStats(player?.steam!); res.json( new SuccessResponseBuilder() .setCode(200) .setData({ player: removeProperties(player, ['_id', '__v']), steam, steamStats, }) .toJSON(), ); }); return app; } }