CarddavTestClient.ktmain()-Funktion und einer HTTP-Client-Klasse. Wird für manuelle Tests und das Debuggen des CardDAV-Servers verwendet. Unterstützt OPTIONS/PROPFIND/GET/REPORT-Anfragen, Sync-Token-Sammlung, VCard-Abruf mit PHOTO-Analyse und den Batch-Export aller Kontakte. Enthält umfangreiche auskommentierte Testsequenzen, die die iterative Entwicklung der CardDAV-Protokollunterstützung zeigen.Dies ist ein Entwicklungs-Debugging-Werkzeug, kein Komponententest. Es hat einen main()-Einstiegspunkt und fungiert als eigenständiger CardDAV-Client zum Testen der Serverimplementierung. Die Datei enthält umfangreichen auskommentierten Code, der die Entwicklung der CardDAV-Protokolltests zeigt.
| Import | Zweck |
|---|---|
org.apache.hc.client5.http.* | Apache HttpClient 5 für die HTTP-Kommunikation (HttpGet, CloseableHttpClient, HttpClients, ClassicHttpResponse, ContentType, HttpEntity, HttpClientResponseHandler, StringEntity, ClassicRequestBuilder, HttpCoreContext) |
org.projectforge.common.extensions.abbreviate | Kotlin-Erweiterungsfunktion zum Kürzen langer Zeichenketten in der Protokollausgabe |
java.util.Base64 | JDK Base64-Kodierer für den HTTP-Basisauthentifizierungs-Header |
baseUrl: String — Basis-URL des Servers (Standard: http://localhost:8080/carddav)username: String — CardDAV-Benutzername für die Basisauthentifizierungpassword: String — CardDAV-Passwort (DAV-Token)lastSyncToken: String? — Optionales Sync-Token für inkrementelle SynctestsEinfache Datenklasse, die content: String, status: Int und headers: String aus HTTP-Antworten enthält.
Verwendet die HTTP-Basisauthentifizierung mit dem Header Authorization: Basic {base64(benutzername:passwort)}, der einmalig bei der Initialisierung erstellt wird.
Ein funktionaler HttpClientResponseHandler, der die Antwort-Entität als UTF-8-Text liest und den Statuscode sowie die Header extrahiert.
Führt einen CardDAV-Protokollablauf aus: OPTIONS → GET (VCard) → GET (Foto). Der Großteil des ursprünglichen Testcodes (PROPFIND, REPORT, Sync-Collection) ist auskommentiert, wobei XML-Anfragekörperbeispiele als Referenz erhalten bleiben.
Ruft alle VCards vom Server mithilfe einer CardDAV addressbook-query REPORT-Anfrage ab, speichert jede VCard unter /tmp/carddav-vcards/ und analysiert PHOTO-Einträge. Meldet Statistiken zu:
Diese Methode war maßgeblich am Debuggen der CardDAV-Fotobehandlung (URL- vs. eingebetteter Modus) beteiligt.
Erstellt und führt HTTP-Anfragen mit konfigurierbarer Methode, Pfad, Körper, Authentifizierung und Protokollierung aus. Verwendet ClassicRequestBuilder von Apache HttpClient 5.
Analysiert VCard-Daten, um den Fotokodierungsmodus zu bestimmen:
PHOTO;VALUE=URI:https://... — Foto wird über URL bereitgestelltPHOTO;ENCODING=b;TYPE=JPEG:base64daten... oder data:image/jpeg;base64,...Verwendung: CardDavTestClient <benutzername> <dav-token> [--fetch-all] --fetch-all: Alle VCards vom Server abrufen und unter /tmp/carddav-vcards/ speichern
Positionsargumente: Benutzername, DAV-Token, optionale Basis-URL, optionales Sync-Token.
Anfrage mit Methode=OPTIONS für Milton (uri=/users/benutzername/, session-id=null) Basisauthentifizierung fehlgeschlagen, Header 'authorization' nicht gefunden. PROPFIND-Aufruf erkannt: /users/benutzername/ PROPFIND für Milton (uri=/users/benutzername/addressBooks/default/ REPORT für Milton (uri=/users/benutzername/addressBooks/default/Dies zeigt, dass der CardDAV-Server ursprünglich auf dem Milton WebDAV-Framework basierte und die aktuelle Implementierung dieses Protokoll nativ neu implementiert.
868d6abb7 2025 -> 2026 bbf6b792c VCard-Upload: spezielle Behandlung von Formularfeldern. f2ceb72f1 CardDav: Foto-URLs relativ. 63081666f Quelltextdatei-Header: 2024 -> 2025. 943947aaa Adressen: Unterstützung von GIF und JPEG (auch für CardDAV-Server). fc6301b43 WIP: CardDavServer. c4062ed97 WIP: Carddav 40e554cbe WIP: Carddav