mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
Add new API
This commit is contained in:
@@ -19,6 +19,7 @@ import * as $api_filemeta_token_ from "./routes/api/filemeta/[token].ts";
|
||||
import * as $api_files_token_ from "./routes/api/files/[token].ts";
|
||||
import * as $api_gallery_gid_ from "./routes/api/gallery/[gid].ts";
|
||||
import * as $api_gallery_list from "./routes/api/gallery/list.ts";
|
||||
import * as $api_gallery_meta_gids_ from "./routes/api/gallery/meta/[gids].ts";
|
||||
import * as $api_health_check from "./routes/api/health_check.ts";
|
||||
import * as $api_status from "./routes/api/status.ts";
|
||||
import * as $api_tag_id_ from "./routes/api/tag/[id].ts";
|
||||
@@ -62,6 +63,7 @@ const manifest = {
|
||||
"./routes/api/files/[token].ts": $api_files_token_,
|
||||
"./routes/api/gallery/[gid].ts": $api_gallery_gid_,
|
||||
"./routes/api/gallery/list.ts": $api_gallery_list,
|
||||
"./routes/api/gallery/meta/[gids].ts": $api_gallery_meta_gids_,
|
||||
"./routes/api/health_check.ts": $api_health_check,
|
||||
"./routes/api/status.ts": $api_status,
|
||||
"./routes/api/tag/[id].ts": $api_tag_id_,
|
||||
|
||||
39
routes/api/gallery/meta/[gids].ts
Normal file
39
routes/api/gallery/meta/[gids].ts
Normal file
@@ -0,0 +1,39 @@
|
||||
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";
|
||||
|
||||
export const handler: Handlers = {
|
||||
GET(_req, ctx) {
|
||||
const u = <User | undefined> ctx.state.user;
|
||||
if (
|
||||
u && !u.is_admin &&
|
||||
!(u.permissions & UserPermission.ReadGallery ||
|
||||
u.permissions & UserPermission.ManageTasks)
|
||||
) {
|
||||
return return_error(403, "Permission denied.");
|
||||
}
|
||||
const gids = new Set(
|
||||
ctx.params.gids.split(",").map((v) => parseInt(v)).filter((v) =>
|
||||
!isNaN(v)
|
||||
),
|
||||
);
|
||||
const m = get_task_manager();
|
||||
const re: Record<number, JSONResult<GMeta>> = {};
|
||||
for (const gid of gids) {
|
||||
const meta = m.db.get_gmeta_by_gid(gid);
|
||||
if (meta) {
|
||||
re[gid] = gen_data(meta);
|
||||
} else {
|
||||
re[gid] = gen_error(404, "Not found");
|
||||
}
|
||||
}
|
||||
return return_data(re);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user