From 7ff7586ce2dd66f116dbb1704872c0799ae4a35e Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Thu, 28 Aug 2025 17:53:14 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=E6=94=AF=E6=8C=81WebDAV=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functions/dav/[[path]].js | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/functions/dav/[[path]].js b/functions/dav/[[path]].js index 9f6d4584..60ab9527 100644 --- a/functions/dav/[[path]].js +++ b/functions/dav/[[path]].js @@ -207,30 +207,27 @@ async function handlePropfind(request, env) { async function fetchDirectoryContents(dir, env, request) { let allFiles = []; let allDirectories = []; - let start = 0; - const count = 100; + const count = -1; // Fetch all items - while (true) { - const listUrl = new URL(`/api/manage/list`, request.url); - listUrl.searchParams.set('dir', dir); - listUrl.searchParams.set('start', start); - listUrl.searchParams.set('count', count); + const listUrl = new URL(`/api/manage/list`, request.url); + listUrl.searchParams.set('dir', dir); + listUrl.searchParams.set('count', count); - const response = await fetch(listUrl.toString(), { headers: await getApiHeaders(env) }); - if (!response.ok) { - const errorText = await response.text(); - throw new Error(`API fetch error: Status ${response.status} - ${errorText}`); - } - const result = await response.json(); - if (result.error) { - throw new Error(`API error: ${result.error} - ${result.message}`); - } - - if (result.files && result.files.length > 0) allFiles = allFiles.concat(result.files); - if (result.directories && result.directories.length > 0) allDirectories = allDirectories.concat(result.directories); - if (!result.files || result.files.length < count) break; - start += count; + const response = await fetch(listUrl.toString(), { headers: await getApiHeaders(env) }); + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`API fetch error: Status ${response.status} - ${errorText}`); } + + const result = await response.json(); + if (result.error) { + throw new Error(`API error: ${result.error} - ${result.message}`); + } + + if (result.files && result.files.length > 0) allFiles = allFiles.concat(result.files); + if (result.directories && result.directories.length > 0) allDirectories = allDirectories.concat(result.directories); + + return { files: allFiles, directories: [...new Set(allDirectories)] }; }