mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { Handlers } from "$fresh/server.ts";
|
|
import { get_task_manager } from "../../../../server.ts";
|
|
import {
|
|
gen_data,
|
|
gen_error,
|
|
JSONResult,
|
|
return_data,
|
|
return_error,
|
|
} from "../../../../server/utils.ts";
|
|
import { GMeta, User, UserPermission } from "../../../../db.ts";
|
|
import { isNumNaN, parseBigInt } from "../../../../utils.ts";
|
|
|
|
export const handler: Handlers = {
|
|
GET(_req, ctx) {
|
|
const u = <User | undefined> ctx.state.user;
|
|
if (
|
|
u && !u.is_admin &&
|
|
!(Number(u.permissions) & UserPermission.ReadGallery ||
|
|
Number(u.permissions) & UserPermission.ManageTasks)
|
|
) {
|
|
return return_error(403, "Permission denied.");
|
|
}
|
|
const gid = decodeURIComponent(ctx.params.gids);
|
|
const gids = new Set(
|
|
gid.split(",").map((v) => parseBigInt(v)).filter((v) =>
|
|
!isNumNaN(v)
|
|
).map((v) => BigInt(v)),
|
|
);
|
|
const m = get_task_manager();
|
|
const re: Record<string, JSONResult<GMeta>> = {};
|
|
for (const gid of gids) {
|
|
const meta = m.db.get_gmeta_by_gid(gid);
|
|
if (meta) {
|
|
re[gid.toString()] = gen_data(meta);
|
|
} else {
|
|
re[gid.toString()] = gen_error(404, "Not found");
|
|
}
|
|
}
|
|
return return_data(re);
|
|
},
|
|
};
|