Эх сурвалжийг харах

Merge pull request #4507 from ChatGPTNextWeb/chore-fix

feat: fix codes of joining webdav url in client & webdav proxy
DeanYao 1 жил өмнө
parent
commit
af3ebacee6

+ 18 - 7
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,12 +114,23 @@ async function handle(
     duplex: "half",
   };
 
-  const fetchResult = await fetch(targetUrl, fetchOptions);
+  let fetchResult;
 
-  console.log("[Any Proxy]", targetUrl, {
-    status: fetchResult.status,
-    statusText: fetchResult.statusText,
-  });
+  try {
+    fetchResult = await fetch(targetUrl, fetchOptions);
+  } finally {
+    console.log(
+      "[Any Proxy]",
+      targetUrl,
+      {
+        method: req.method,
+      },
+      {
+        status: fetchResult?.status,
+        statusText: fetchResult?.statusText,
+      },
+    );
+  }
 
   return fetchResult;
 }

+ 1 - 0
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));

+ 4 - 4
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);
       }
@@ -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();