From 627b38d85df7d4c0098d2d4571288861e4899c07 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sun, 25 Jun 2023 16:40:12 +0800 Subject: [PATCH] Add ?current=1 support for /api/config --- routes/api/config.ts | 18 +++++++++++------- routes/api/deploy_id.ts | 5 ++--- server/utils.ts | 7 +++++++ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/routes/api/config.ts b/routes/api/config.ts index 30a3917..a8179ba 100644 --- a/routes/api/config.ts +++ b/routes/api/config.ts @@ -1,6 +1,8 @@ import { Handlers } from "$fresh/server.ts"; import { ConfigType, load_settings, save_settings } from "../../config.ts"; import { get_cfg_path, get_task_manager } from "../../server.ts"; +import { parse_bool } from "../../server/parse_form.ts"; +import { return_json } from "../../server/utils.ts"; const UNSAFE_TYPE: (keyof ConfigType)[] = [ "base", @@ -14,12 +16,16 @@ const UNSAFE_TYPE: (keyof ConfigType)[] = [ const UNSAFE_TYPE2 = UNSAFE_TYPE as string[]; export const handler: Handlers = { - async GET(_req, _ctx) { + async GET(req, _ctx) { + const u = new URL(req.url); + const current = await parse_bool(u.searchParams.get("current"), false); + if (current) { + const t = get_task_manager(); + return return_json(t.cfg.to_json()); + } const path = get_cfg_path(); const cfg = await load_settings(path); - return new Response(JSON.stringify(cfg.to_json()), { - headers: { "Content-Type": "application/json" }, - }); + return return_json(cfg.to_json()); }, async POST(req, _ctx) { const content_type = req.headers.get("Content-Type"); @@ -39,9 +45,7 @@ export const handler: Handlers = { } }); await save_settings(path, cfg, m.force_aborts); - return new Response(JSON.stringify({ is_unsafe }), { - headers: { "Content-Type": "application/json" }, - }); + return return_json({ is_unsafe }); } else { return new Response("Bad Request", { status: 400 }); } diff --git a/routes/api/deploy_id.ts b/routes/api/deploy_id.ts index 2a71664..9020c6d 100644 --- a/routes/api/deploy_id.ts +++ b/routes/api/deploy_id.ts @@ -1,10 +1,9 @@ import { Handlers } from "$fresh/server.ts"; +import { return_json } from "../../server/utils.ts"; export const handler: Handlers = { GET(_req, _ctx) { const data = { id: Deno.env.get("DENO_DEPLOYMENT_ID") }; - return new Response(JSON.stringify(data), { - headers: { "Content-Type": "application/json" }, - }); + return return_json(data); }, }; diff --git a/server/utils.ts b/server/utils.ts index 8f2f517..e028c99 100644 --- a/server/utils.ts +++ b/server/utils.ts @@ -33,3 +33,10 @@ export function return_error( export function return_data(data: T, status = 200) { return gen_response({ ok: true, status: 0, data }, status); } + +export function return_json(data: T, status = 200) { + return new Response(JSON.stringify(data), { + status, + headers: { "Content-Type": "application/json" }, + }); +}