Here is the complete HTML translated into French, with the language set to `fr`, the FR link marked as active, and the title updated with `[FR]`. ```html #1865 : CarddavTestClient [FR]
EN · DE · RU · FR · ES

#1865 : CarddavTestClient.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CarddavTestClient.kt Utilitaire de test / outil de développement — package org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CarddavTestClient.kt 468 lignes · 372 code · 60 commentaires · 36 vides
Client de test CardDAV autonome avec une fonction main() et une classe client HTTP. Utilisé pour les tests manuels et le débogage du serveur CardDAV. Prend en charge les requêtes OPTIONS/PROPFIND/GET/REPORT, la collecte de jetons de synchronisation, la récupération de VCard avec analyse PHOTO et l'exportation par lots de tous les contacts. Inclut de nombreuses séquences de test commentées montrant le développement itératif du support du protocole CardDAV.

Architecture

Il s'agit d'un outil de débogage de développement, pas d'un test unitaire. Il possède un point d'entrée main() et agit comme un client CardDAV autonome pour tester l'implémentation du serveur. Le fichier contient beaucoup de code commenté montrant l'évolution des tests du protocole CardDAV.

Importations et dépendances

Structure de la classe : CardDavTestClient

Paramètres du constructeur

Classe interne : ResponseData

Classe de données simple contenant content: String, status: Int et headers: String provenant des réponses HTTP.

Authentification

Utilise l'authentification HTTP Basic avec l'en-tête Authorization: Basic {base64(utilisateur:motdepasse)}, construit une fois à l'initialisation.

Gestionnaire de réponse

Un HttpClientResponseHandler fonctionnel qui lit l'entité de réponse sous forme de texte UTF-8 et extrait le code de statut et les en-têtes.

Méthodes clés

run() — Séquence de test par défaut

Exécute un flux de protocole CardDAV : OPTIONS → GET (VCard) → GET (photo). La plupart du code de test original (PROPFIND, REPORT, sync-collection) est commenté, avec des exemples de corps de requête XML conservés pour référence.

fetchAllVCards() — Exportation par lots de VCards

Récupère toutes les VCards du serveur en utilisant une requête REPORT CardDAV addressbook-query, sauvegarde chaque VCard dans /tmp/carddav-vcards/ et analyse les entrées PHOTO. Rapporte des statistiques sur :

Cette méthode a été déterminante pour déboguer la gestion des photos CardDAV (modes URL vs intégré).

sendRequest() — Requête HTTP générique

Construit et exécute des requêtes HTTP avec une méthode, un chemin, un corps, une authentification et une journalisation configurables. Utilise ClassicRequestBuilder d'Apache HttpClient 5.

analyzePhoto(vcard) — Analyseur de propriété PHOTO

Analyse les données VCard pour déterminer le mode d'encodage de la photo :

Gère le repliement des lignes VCard (lignes de continuation commençant par un espace).

Fonction principale — Interface en ligne de commande

Utilisation : CardDavTestClient <nom_utilisateur> <jeton-dav> [--fetch-all]
  --fetch-all : Récupère toutes les VCards du serveur et les sauvegarde dans /tmp/carddav-vcards/

Arguments positionnels : nom d'utilisateur, jeton DAV, URL de base optionnelle, jeton de synchronisation optionnel.

Le fichier contient des données de référence commentées montrant les réponses réelles du serveur CardDAV :
Requête avec méthode=OPTIONS pour Milton (uri=/users/username/, session-id=null)
Échec de l'authentification de base, en-tête 'authorization' non trouvé.
Appel PROPFIND détecté : /users/username/
PROPFIND pour Milton (uri=/users/username/addressBooks/default/
REPORT pour Milton (uri=/users/username/addressBooks/default/
Cela révèle que le serveur CardDAV a été initialement construit sur le framework WebDAV Milton, et que l'implémentation actuelle réimplémente ce protocole de manière native.
Le fichier sert à la fois de client de test et de documentation vivante de l'implémentation du protocole CardDAV. Les corps de requêtes PROPFIND/REPORT commentés sont du XML CardDAV valide qui documente le comportement attendu du serveur.

Historique Git

868d6abb7 2025 -> 2026
bbf6b792c Téléchargement VCard : traitement spécial du champ de formulaire.
f2ceb72f1 CardDav : URLs de photos relatives.
63081666f En-têtes des fichiers sources : 2024 -> 2025.
943947aaa Adresses : prise en charge de gif et jpeg (également pour le serveur carddav).
fc6301b43 WIP : CardDavServer.
c4062ed97 WIP : Carddav
40e554cbe WIP : Carddav
ImportationObjectif
org.apache.hc.client5.http.*Apache HttpClient 5 pour la communication HTTP (HttpGet, CloseableHttpClient, HttpClients, ClassicHttpResponse, ContentType, HttpEntity, HttpClientResponseHandler, StringEntity, ClassicRequestBuilder, HttpCoreContext)
org.projectforge.common.extensions.abbreviateFonction d'extension Kotlin pour tronquer les longues chaînes dans la sortie des logs
java.util.Base64Encodeur Base64 JDK pour l'en-tête d'authentification HTTP Basic