From 4456db11cf27b4628a9aeac1a455878e75b3a6b1 Mon Sep 17 00:00:00 2001 From: fyears <1142836+fyears@users.noreply.github.com> Date: Wed, 20 Mar 2024 01:42:02 +0800 Subject: [PATCH] try to make webdav header happy --- src/remoteForWebdav.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/remoteForWebdav.ts b/src/remoteForWebdav.ts index 8df877d..2c26824 100644 --- a/src/remoteForWebdav.ts +++ b/src/remoteForWebdav.ts @@ -26,17 +26,26 @@ function onlyAscii(str: string) { return !/[^\u0000-\u00ff]/g.test(str); } +/** + * https://stackoverflow.com/questions/12539574/ + * @param obj + * @returns + */ +function objKeyToLower(obj: Record) { + return Object.fromEntries( + Object.entries(obj).map(([k, v]) => [k.toLowerCase(), v]) + ); +} + // @ts-ignore import { getPatcher } from "webdav/dist/web/index.js"; if (VALID_REQURL) { getPatcher().patch( "request", async (options: RequestOptionsWithState): Promise => { - const transformedHeaders = { ...options.headers }; + const transformedHeaders = objKeyToLower({ ...options.headers }); delete transformedHeaders["host"]; - delete transformedHeaders["Host"]; delete transformedHeaders["content-length"]; - delete transformedHeaders["Content-Length"]; const r = await requestUrl({ url: options.url, @@ -51,16 +60,14 @@ if (VALID_REQURL) { if (options.headers !== undefined) { contentType = contentType || - options.headers["Content-Type"] || - options.headers["content-type"] || - options.headers["Accept"] || - options.headers["accept"]; + transformedHeaders["content-type"] || + transformedHeaders["accept"]; } - if (contentType !== undefined) { contentType = contentType.toLowerCase(); } - const rspHeaders = { ...r.headers }; + + const rspHeaders = objKeyToLower({ ...r.headers }); console.log("rspHeaders"); console.log(rspHeaders); for (let key in rspHeaders) {