mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-07-03 20:01:24 +08:00
Add server timing support
This commit is contained in:
@@ -39,6 +39,7 @@ export type ConfigType = {
|
||||
check_file_hash: boolean;
|
||||
import_method: ImportMethod;
|
||||
max_import_img_count: number;
|
||||
enable_server_timing: boolean;
|
||||
};
|
||||
|
||||
export enum ThumbnailMethod {
|
||||
@@ -239,6 +240,9 @@ export class Config {
|
||||
get max_import_img_count() {
|
||||
return this._return_number("max_import_img_count") || 3;
|
||||
}
|
||||
get enable_server_timing() {
|
||||
return this._return_bool("enable_server_timing") ?? false;
|
||||
}
|
||||
to_json(): ConfigType {
|
||||
return {
|
||||
cookies: typeof this.cookies === "string",
|
||||
@@ -277,6 +281,7 @@ export class Config {
|
||||
check_file_hash: this.check_file_hash,
|
||||
import_method: this.import_method,
|
||||
max_import_img_count: this.max_import_img_count,
|
||||
enable_server_timing: this.enable_server_timing,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ const STATIC_FILES = ["/common.css", "/scrollBar.css", "/sw.js", "/sw.js.map"];
|
||||
|
||||
export async function handler(req: Request, ctx: FreshContext) {
|
||||
const url = new URL(req.url);
|
||||
const m = get_task_manager();
|
||||
const enable_server_timing = m.cfg.enable_server_timing;
|
||||
const start = enable_server_timing ? Date.now() : 0;
|
||||
if (url.pathname == "/sw.js") {
|
||||
build_sw();
|
||||
}
|
||||
@@ -31,7 +34,6 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
return get_file_response(file, opts);
|
||||
}
|
||||
if (url.pathname == "/flutter" || url.pathname.startsWith("/flutter/")) {
|
||||
const m = get_task_manager();
|
||||
let flutter_base = import.meta.resolve("../static/flutter").slice(7);
|
||||
if (Deno.build.os === "windows") {
|
||||
flutter_base = flutter_base.slice(1);
|
||||
@@ -66,7 +68,6 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
return await get_file_response(p, opts);
|
||||
}
|
||||
if (url.pathname.startsWith("/canvaskit/")) {
|
||||
const m = get_task_manager();
|
||||
let flutter_base = import.meta.resolve("../static/flutter").slice(7);
|
||||
if (Deno.build.os === "windows") {
|
||||
flutter_base = flutter_base.slice(1);
|
||||
@@ -89,5 +90,16 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
return await get_file_response(p, opts);
|
||||
}
|
||||
const res = await ctx.next();
|
||||
if (enable_server_timing) {
|
||||
if (res.status === 101) return res;
|
||||
const headers = new Headers(res.headers);
|
||||
const now = Date.now();
|
||||
headers.append("Server-Timing", `total;dur=${now - start}`);
|
||||
return new Response(res.body, {
|
||||
status: res.status,
|
||||
headers: headers,
|
||||
statusText: res.statusText,
|
||||
});
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -59,6 +59,8 @@ function handle_auth(req: Request, ctx: FreshContext) {
|
||||
|
||||
export async function handler(req: Request, ctx: FreshContext) {
|
||||
const m = get_task_manager();
|
||||
const enable_server_timing = m.cfg.enable_server_timing;
|
||||
const start = enable_server_timing ? Date.now() : 0;
|
||||
if (!(handle_auth(req, ctx))) {
|
||||
const headers: HeadersInit = {};
|
||||
const origin = req.headers.get("origin");
|
||||
@@ -67,6 +69,10 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
headers["Access-Control-Allow-Origin"] = origin;
|
||||
if (c) headers["Access-Control-Allow-Credentials"] = "true";
|
||||
}
|
||||
if (enable_server_timing) {
|
||||
const end = Date.now();
|
||||
headers["Server-Timing"] = `api;dur=${end - start}`;
|
||||
}
|
||||
return return_error(401, "Unauthorized", 401, headers);
|
||||
}
|
||||
const res = await ctx.next();
|
||||
@@ -86,6 +92,10 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
if (c) headers.set("Access-Control-Allow-Credentials", "true");
|
||||
headers.set("Access-Control-Allow-Private-Network", "true");
|
||||
}
|
||||
if (enable_server_timing) {
|
||||
const end = Date.now();
|
||||
headers.append("Server-Timing", `api;dur=${end - start}`);
|
||||
}
|
||||
return new Response(null, { status: 204, headers });
|
||||
} else {
|
||||
if (res.status === 101) return res;
|
||||
@@ -118,6 +128,10 @@ export async function handler(req: Request, ctx: FreshContext) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (enable_server_timing) {
|
||||
const end = Date.now();
|
||||
headers.append("Server-Timing", `api;dur=${end - start}`);
|
||||
}
|
||||
return new Response(res.body, {
|
||||
status: res.status,
|
||||
headers: headers,
|
||||
|
||||
@@ -12,6 +12,9 @@ export const handler: Handlers = {
|
||||
}
|
||||
const tokens = ctx.params.token.split(",");
|
||||
const m = get_task_manager();
|
||||
const enable_server_timing = m.cfg.enable_server_timing;
|
||||
const start = enable_server_timing ? Date.now() : 0;
|
||||
const headers: HeadersInit = {};
|
||||
const data: EhFiles = {};
|
||||
for (const token of tokens) {
|
||||
data[token] = m.db.get_files(token).map((d) => {
|
||||
@@ -22,6 +25,10 @@ export const handler: Handlers = {
|
||||
return d;
|
||||
});
|
||||
}
|
||||
return return_data(data);
|
||||
if (enable_server_timing) {
|
||||
const end = Date.now();
|
||||
headers["Server-Timing"] = `db;dur=${end - start}`;
|
||||
}
|
||||
return return_data(data, 200, headers);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user