mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-01-31 15:37:09 +01:00
* feat: game specialisation, auto-guess extensions * fix: enforce specialisation specific schema at API level * fix: lint * feat: partial work on depot endpoints * feat: bump torrential * feat: dummy version creation for depot uploads * fix: lint * fix: types * fix: lint * feat: depot version import * fix: lint * fix: remove any type * fix: lint * fix: push update interval * fix: cpu usage calculation * feat: delta version support * feat: style tweaks for selectlaunch.vue * fix: lint
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { ArkErrors, type } from "arktype";
|
|
import aclManager from "~/server/internal/acls";
|
|
import libraryManager from "~/server/internal/library";
|
|
|
|
const Query = type({
|
|
id: "string",
|
|
type: "'depot' | 'local'",
|
|
version: "string",
|
|
});
|
|
|
|
export default defineEventHandler(async (h3) => {
|
|
const allowed = await aclManager.allowSystemACL(h3, ["import:version:read"]);
|
|
if (!allowed) throw createError({ statusCode: 403 });
|
|
|
|
const query = Query(getQuery(h3));
|
|
if (query instanceof ArkErrors)
|
|
throw createError({
|
|
statusCode: 400,
|
|
message: query.summary,
|
|
});
|
|
|
|
try {
|
|
const preload = await libraryManager.fetchUnimportedVersionInformation(
|
|
query.id,
|
|
{
|
|
type: query.type,
|
|
identifier: query.version,
|
|
},
|
|
);
|
|
if (!preload)
|
|
throw createError({
|
|
statusCode: 400,
|
|
message: "Invalid game or version id/name",
|
|
});
|
|
|
|
return preload;
|
|
} catch (e) {
|
|
throw createError({
|
|
statusCode: 500,
|
|
message: `Failed to fetch preload information for ${query.id}: ${e}`,
|
|
});
|
|
}
|
|
});
|