diff --git a/src/api/routes/download.ts b/src/api/routes/download.ts
index 85fb41be..d5eb6cb4 100644
--- a/src/api/routes/download.ts
+++ b/src/api/routes/download.ts
@@ -22,6 +22,9 @@ import { Request, Response, Router } from "express";
const router = Router();
+const PLATFORMS = ["linux", "windows", "darwin"];
+const ARCHS = ["x86_64", "i686", "aarch64", "armv7"];
+
router.get(
"/",
route({
@@ -31,22 +34,53 @@ router.get(
body: "APIErrorResponse",
},
},
+ query: {
+ platform: {
+ type: "string",
+ required: true,
+ description: "The platform to get the manifest for",
+ },
+ arch: {
+ type: "string",
+ required: true,
+ description: "The architecture to get the manifest for",
+ },
+ channel: {
+ type: "string",
+ required: true,
+ description: "The release channel to get the manifest for",
+ },
+ },
}),
async (req: Request, res: Response) => {
- const { platform } = req.query;
+ const { platform, arch, channel } = req.query as Record<string, string>;
- if (!platform)
+ if (PLATFORMS.indexOf(platform) == -1)
throw FieldErrors({
platform: {
- code: "BASE_TYPE_REQUIRED",
- message: req.t("common:field.BASE_TYPE_REQUIRED"),
+ message: `Value must be one of (${PLATFORMS.map(
+ (x) => `'${x}'`,
+ ).join(", ")}).`,
+ code: "BASE_TYPE_CHOICES",
+ },
+ });
+
+ if (ARCHS.indexOf(arch) == -1)
+ throw FieldErrors({
+ arch: {
+ message: `Value must be one of (${ARCHS.map(
+ (x) => `'${x}'`,
+ ).join(", ")}).`,
+ code: "BASE_TYPE_CHOICES",
},
});
const release = await Release.findOneOrFail({
where: {
enabled: true,
- platform: platform as string,
+ platform: platform,
+ arch: arch,
+ channel: channel,
},
order: { pub_date: "DESC" },
});
|