carnet route

This commit is contained in:
alma 2025-04-20 16:04:22 +02:00
parent 605a2863f2
commit 670fe46a1e

View File

@ -236,6 +236,8 @@ async function getWebDAVCredentials(nextcloudUrl: string, username: string, admi
async function getFolderStructure(nextcloudUrl: string, username: string, password: string): Promise<string[]> {
try {
const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(username)}/Private/`;
console.log('Fetching folders from:', webdavUrl);
const foldersResponse = await fetch(webdavUrl, {
method: 'PROPFIND',
headers: {
@ -246,18 +248,28 @@ async function getFolderStructure(nextcloudUrl: string, username: string, passwo
body: '<?xml version="1.0" encoding="UTF-8"?><d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/><d:displayname/></d:prop></d:propfind>',
});
console.log('Folders response status:', foldersResponse.status);
if (foldersResponse.status === 429) {
// Rate limited, wait and retry
const retryAfter = foldersResponse.headers.get('Retry-After');
console.log('Rate limited, retrying after:', retryAfter);
await sleep((retryAfter ? parseInt(retryAfter) : 5) * 1000);
return getFolderStructure(nextcloudUrl, username, password);
}
if (!foldersResponse.ok) {
console.error('Failed to fetch folders:', {
status: foldersResponse.status,
statusText: foldersResponse.statusText,
url: webdavUrl
});
throw new Error(`Failed to fetch folders: ${foldersResponse.status} ${foldersResponse.statusText}`);
}
const folderData = await foldersResponse.text();
console.log('Received folder data:', folderData);
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(folderData, 'text/xml');
const responses = Array.from(xmlDoc.getElementsByTagName('d:response'));
@ -278,6 +290,7 @@ async function getFolderStructure(nextcloudUrl: string, username: string, passwo
}
}
console.log('Extracted folders:', folders);
return folders;
} catch (error) {
console.error('Error getting folder structure:', error);