Agenda refactor
This commit is contained in:
parent
b9f4076a7b
commit
9904370ac8
142
test-infomaniak-caldav.js
Normal file
142
test-infomaniak-caldav.js
Normal file
@ -0,0 +1,142 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Script de test pour la connexion CalDAV Infomaniak
|
||||
* Usage: node test-infomaniak-caldav.js <email> <password>
|
||||
*/
|
||||
|
||||
const { createClient } = require('webdav');
|
||||
|
||||
const email = process.argv[2] || 'a.tmiri@icmaae.foundation';
|
||||
const password = process.argv[3];
|
||||
|
||||
if (!password) {
|
||||
console.error('❌ Usage: node test-infomaniak-caldav.js <email> <password>');
|
||||
console.error('');
|
||||
console.error('Example:');
|
||||
console.error(' node test-infomaniak-caldav.js a.tmiri@icmaae.foundation "your-password"');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const baseUrl = 'https://sync.infomaniak.com/caldav';
|
||||
|
||||
console.log('🔍 Test CalDAV Infomaniak');
|
||||
console.log('Email:', email);
|
||||
console.log('URL:', baseUrl);
|
||||
console.log('Password length:', password.length);
|
||||
console.log('');
|
||||
|
||||
async function testCalDAV() {
|
||||
try {
|
||||
console.log('📡 Création du client CalDAV...');
|
||||
const client = createClient(baseUrl, {
|
||||
username: email,
|
||||
password: password,
|
||||
});
|
||||
|
||||
console.log('📡 Test PROPFIND sur la racine (/)...');
|
||||
const items = await client.getDirectoryContents('/');
|
||||
|
||||
console.log('✅ SUCCESS - Connexion réussie!');
|
||||
console.log('');
|
||||
console.log(`📅 ${items.length} élément(s) trouvé(s):`);
|
||||
console.log('');
|
||||
|
||||
const calendars = items.filter(item => item.type === 'directory' && item.filename !== '/');
|
||||
|
||||
if (calendars.length === 0) {
|
||||
console.log('⚠️ Aucun calendrier trouvé (seulement des fichiers)');
|
||||
} else {
|
||||
console.log('Calendriers:');
|
||||
for (let i = 0; i < calendars.length; i++) {
|
||||
const cal = calendars[i];
|
||||
console.log(` ${i + 1}. ${cal.basename || cal.filename}`);
|
||||
console.log(` Chemin: ${cal.filename}`);
|
||||
console.log(` Type: ${cal.type}`);
|
||||
|
||||
// Essayer de récupérer les propriétés du calendrier
|
||||
try {
|
||||
const props = await client.customRequest(cal.filename, {
|
||||
method: 'PROPFIND',
|
||||
headers: {
|
||||
Depth: '0',
|
||||
'Content-Type': 'application/xml',
|
||||
},
|
||||
data: `<?xml version="1.0" encoding="utf-8" ?>
|
||||
<d:propfind xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
|
||||
<d:prop>
|
||||
<d:displayname />
|
||||
<c:calendar-color />
|
||||
</d:prop>
|
||||
</d:propfind>`,
|
||||
});
|
||||
|
||||
// Parser le XML pour extraire le displayname
|
||||
const displayNameMatch = props.data.match(/<d:displayname[^>]*>([^<]+)<\/d:displayname>/i);
|
||||
const colorMatch = props.data.match(/<c:calendar-color[^>]*>([^<]+)<\/c:calendar-color>/i);
|
||||
|
||||
if (displayNameMatch) {
|
||||
console.log(` Nom: ${displayNameMatch[1]}`);
|
||||
}
|
||||
if (colorMatch) {
|
||||
console.log(` Couleur: ${colorMatch[1]}`);
|
||||
}
|
||||
} catch (propError) {
|
||||
console.log(` ⚠️ Impossible de récupérer les propriétés: ${propError.message}`);
|
||||
}
|
||||
console.log('');
|
||||
}
|
||||
}
|
||||
|
||||
console.log('==========================================');
|
||||
console.log('✅ La connexion CalDAV fonctionne correctement');
|
||||
console.log(' Si le code Node.js échoue, le problème est dans la bibliothèque webdav');
|
||||
console.log(' ou dans la configuration du client.');
|
||||
console.log('==========================================');
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ ERREUR');
|
||||
console.error('');
|
||||
console.error('Type:', error.constructor.name);
|
||||
console.error('Message:', error.message);
|
||||
|
||||
if (error.status === 401 || error.response?.status === 401) {
|
||||
console.error('');
|
||||
console.error('🔐 Erreur 401 - Non autorisé');
|
||||
console.error('');
|
||||
console.error('Causes possibles:');
|
||||
console.error(' 1. Mot de passe incorrect');
|
||||
console.error(' 2. 2FA activé - utilisez un mot de passe d\'application');
|
||||
console.error(' 3. Compte suspendu ou désactivé');
|
||||
console.error(' 4. Email incorrect');
|
||||
console.error('');
|
||||
console.error('Pour générer un mot de passe d\'application Infomaniak:');
|
||||
console.error(' 1. Connectez-vous à https://config.infomaniak.com');
|
||||
console.error(' 2. Allez dans "Mon profil" > "Mots de passe d\'application"');
|
||||
console.error(' 3. Générez un nouveau mot de passe pour "CalDAV"');
|
||||
console.error(' 4. Utilisez ce mot de passe dans votre compte email');
|
||||
} else {
|
||||
console.error('');
|
||||
console.error('Détails de l\'erreur:');
|
||||
if (error.status) {
|
||||
console.error(' Status:', error.status);
|
||||
}
|
||||
if (error.statusText) {
|
||||
console.error(' Status Text:', error.statusText);
|
||||
}
|
||||
if (error.response) {
|
||||
console.error(' Response Status:', error.response.status);
|
||||
console.error(' Response Status Text:', error.response.statusText);
|
||||
}
|
||||
if (error.stack) {
|
||||
console.error('');
|
||||
console.error('Stack trace:');
|
||||
console.error(error.stack.split('\n').slice(0, 5).join('\n'));
|
||||
}
|
||||
}
|
||||
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
testCalDAV();
|
||||
Loading…
Reference in New Issue
Block a user