From ee15c140499ca222bd1f5d08526de9f251c89374 Mon Sep 17 00:00:00 2001 From: butterfly Date: Fri, 12 Apr 2024 13:40:37 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20fix=20webdav=20=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/webdav/[...path]/route.ts | 21 +++++++++++++++------ app/store/sync.ts | 1 + app/utils/cloud/webdav.ts | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/app/api/webdav/[...path]/route.ts b/app/api/webdav/[...path]/route.ts index f64a9ef1354..b0083fd692d 100644 --- a/app/api/webdav/[...path]/route.ts +++ b/app/api/webdav/[...path]/route.ts @@ -42,7 +42,7 @@ async function handle( } const endpointPath = params.path.join("/"); - const targetPath = `${endpoint}/${endpointPath}`; + const targetPath = `${endpoint}${endpointPath}`; // only allow MKCOL, GET, PUT if (req.method !== "MKCOL" && req.method !== "GET" && req.method !== "PUT") { @@ -96,7 +96,7 @@ async function handle( ); } - const targetUrl = `${endpoint}/${endpointPath}`; + const targetUrl = targetPath; const method = req.method; const shouldNotHaveBody = ["get", "head"].includes( @@ -114,13 +114,22 @@ async function handle( duplex: "half", }; - const fetchResult = await fetch(targetUrl, fetchOptions); - console.log("[Any Proxy]", targetUrl, { - status: fetchResult.status, - statusText: fetchResult.statusText, + method: req.method, + params: req.body, }); + let fetchResult; + + try { + fetchResult = await fetch(targetUrl, fetchOptions); + } finally { + console.log("[Any Proxy]", targetUrl, { + status: fetchResult?.status, + statusText: fetchResult?.statusText, + }); + } + return fetchResult; } diff --git a/app/store/sync.ts b/app/store/sync.ts index 674ff674420..8ee6c1819f4 100644 --- a/app/store/sync.ts +++ b/app/store/sync.ts @@ -104,6 +104,7 @@ export const useSyncStore = createPersistStore( setLocalAppState(localState); } catch (e) { console.log("[Sync] failed to get remote state", e); + throw e; } await client.set(config.username, JSON.stringify(localState)); diff --git a/app/utils/cloud/webdav.ts b/app/utils/cloud/webdav.ts index e01c193fea2..71d452b4af1 100644 --- a/app/utils/cloud/webdav.ts +++ b/app/utils/cloud/webdav.ts @@ -76,7 +76,7 @@ export function createWebDavClient(store: SyncStore) { let url; if (proxyUrl.length > 0 || proxyUrl === "/") { - let u = new URL(proxyUrl + "/api/webdav/" + path); + let u = new URL(proxyUrl + "api/webdav/" + path); // add query params u.searchParams.append("endpoint", config.endpoint); url = u.toString(); From b72d7fbeda8fa9cb8f020b1dea6188075a92a3bf Mon Sep 17 00:00:00 2001 From: butterfly Date: Fri, 12 Apr 2024 13:46:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20fix=20webdav=20=E9=80=BB=E8=BE=912?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/webdav/[...path]/route.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/api/webdav/[...path]/route.ts b/app/api/webdav/[...path]/route.ts index b0083fd692d..3dd9ca3cda8 100644 --- a/app/api/webdav/[...path]/route.ts +++ b/app/api/webdav/[...path]/route.ts @@ -114,20 +114,22 @@ async function handle( duplex: "half", }; - console.log("[Any Proxy]", targetUrl, { - method: req.method, - params: req.body, - }); - let fetchResult; try { fetchResult = await fetch(targetUrl, fetchOptions); } finally { - console.log("[Any Proxy]", targetUrl, { - status: fetchResult?.status, - statusText: fetchResult?.statusText, - }); + console.log( + "[Any Proxy]", + targetUrl, + { + method: req.method, + }, + { + status: fetchResult?.status, + statusText: fetchResult?.statusText, + }, + ); } return fetchResult; From 55d70143018d6b285c1d7ae57fd16ceb27f815a2 Mon Sep 17 00:00:00 2001 From: butterfly Date: Fri, 12 Apr 2024 14:02:05 +0800 Subject: [PATCH 3/3] feat: fix the logtics of client joining webdav url --- app/utils/cloud/webdav.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/utils/cloud/webdav.ts b/app/utils/cloud/webdav.ts index 71d452b4af1..f7d48dd0393 100644 --- a/app/utils/cloud/webdav.ts +++ b/app/utils/cloud/webdav.ts @@ -63,9 +63,9 @@ export function createWebDavClient(store: SyncStore) { }; }, path(path: string, proxyUrl: string = "") { - if (!path.endsWith("/")) { - path += "/"; - } + // if (!path.endsWith("/")) { + // path += "/"; + // } if (path.startsWith("/")) { path = path.slice(1); }