Skip to content

Commit 7022fc4

Browse files
committed
xLink- Validate maxItems query parameter using Joi in people routes, replacing manual parsing logic
1 parent dba0e3c commit 7022fc4

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

src/routes/people.routes.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,14 @@ router.get("/friends", jwtMiddleware, asyncHandler(async (req, res) => {
4343
const {xuid} = req.user;
4444
const xboxliveToken = req.headers["x-xbl-token"];
4545
if (!xboxliveToken) throw badRequest("Missing x-xbl-token header");
46-
const maxItems = Math.max(1, Math.min(parseInt(req.query.maxItems || "200", 10), 2000));
46+
const schema = Joi.object({
47+
maxItems: Joi.number().integer().min(1).max(2000).default(200)
48+
});
49+
const {value, error} = schema.validate(req.query);
50+
if (error) throw badRequest(error.message);
51+
4752
const locale = req.headers["accept-language"];
48-
const data = await getPeopleSocial(xuid, xboxliveToken, maxItems, locale);
53+
const data = await getPeopleSocial(xuid, xboxliveToken, value.maxItems, locale);
4954

5055
const list = (data?.people || data?.People || []);
5156
const people = list.filter(p => (p?.isFollowingCaller === true) && (p?.isFollowedByCaller === true));
@@ -82,9 +87,14 @@ router.get("/followers", jwtMiddleware, asyncHandler(async (req, res) => {
8287
const {xuid} = req.user;
8388
const xboxliveToken = req.headers["x-xbl-token"];
8489
if (!xboxliveToken) throw badRequest("Missing x-xbl-token header");
85-
const maxItems = Math.max(1, Math.min(parseInt(req.query.maxItems || "200", 10), 2000));
90+
const schema = Joi.object({
91+
maxItems: Joi.number().integer().min(1).max(2000).default(200)
92+
});
93+
const {value, error} = schema.validate(req.query);
94+
if (error) throw badRequest(error.message);
95+
8696
const locale = req.headers["accept-language"];
87-
const data = await getPeopleFollowers(xuid, xboxliveToken, maxItems, locale);
97+
const data = await getPeopleFollowers(xuid, xboxliveToken, value.maxItems, locale);
8898
const people = (data?.people || data?.People || []);
8999
res.json({count: people.length, people});
90100
}));

0 commit comments

Comments
 (0)