54 lines
1.7 KiB
TypeScript

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;
}
}