diff --git a/app/api/nextcloud/status/route.ts b/app/api/nextcloud/status/route.ts index a8df89af..2f38d13f 100644 --- a/app/api/nextcloud/status/route.ts +++ b/app/api/nextcloud/status/route.ts @@ -103,21 +103,25 @@ export async function GET() { } try { - // Establish Nextcloud session with retries - const nextcloudToken = await establishNextcloudSession(nextcloudUrl, session.accessToken); - - // Get user's folders using WebDAV with Nextcloud token + // Get user's folders using WebDAV with Keycloak token const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(session.user.email)}/`; console.log('Requesting WebDAV URL:', webdavUrl); const foldersResponse = await fetch(webdavUrl, { headers: { - 'Authorization': `Bearer ${nextcloudToken}`, + 'Authorization': `Bearer ${session.accessToken}`, 'Depth': '1', 'Content-Type': 'application/xml', }, }); + if (foldersResponse.status === 429) { + // Rate limited, wait and retry + const retryAfter = foldersResponse.headers.get('Retry-After'); + await sleep((retryAfter ? parseInt(retryAfter) : 5) * 1000); + return GET(); // Retry the entire request + } + if (!foldersResponse.ok) { const errorText = await foldersResponse.text(); console.error('Failed to fetch folders. Status:', foldersResponse.status);