diff --git a/app/api/nextcloud/status/route.ts b/app/api/nextcloud/status/route.ts index 8b008847..e963f892 100644 --- a/app/api/nextcloud/status/route.ts +++ b/app/api/nextcloud/status/route.ts @@ -236,6 +236,8 @@ async function getWebDAVCredentials(nextcloudUrl: string, username: string, admi async function getFolderStructure(nextcloudUrl: string, username: string, password: string): Promise { 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: '', }); + 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);