carnet api
This commit is contained in:
parent
5950eafbe5
commit
45142b4eb7
@ -103,21 +103,25 @@ export async function GET() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Establish Nextcloud session with retries
|
// Get user's folders using WebDAV with Keycloak token
|
||||||
const nextcloudToken = await establishNextcloudSession(nextcloudUrl, session.accessToken);
|
|
||||||
|
|
||||||
// Get user's folders using WebDAV with Nextcloud token
|
|
||||||
const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(session.user.email)}/`;
|
const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(session.user.email)}/`;
|
||||||
console.log('Requesting WebDAV URL:', webdavUrl);
|
console.log('Requesting WebDAV URL:', webdavUrl);
|
||||||
|
|
||||||
const foldersResponse = await fetch(webdavUrl, {
|
const foldersResponse = await fetch(webdavUrl, {
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': `Bearer ${nextcloudToken}`,
|
'Authorization': `Bearer ${session.accessToken}`,
|
||||||
'Depth': '1',
|
'Depth': '1',
|
||||||
'Content-Type': 'application/xml',
|
'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) {
|
if (!foldersResponse.ok) {
|
||||||
const errorText = await foldersResponse.text();
|
const errorText = await foldersResponse.text();
|
||||||
console.error('Failed to fetch folders. Status:', foldersResponse.status);
|
console.error('Failed to fetch folders. Status:', foldersResponse.status);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user