CardDavUtilsTest.ktCardDavUtils: Generierung von Principal-URLs, URI-Normalisierung (Entfernen von CardDAV-Präfixen) und Extraktion von Kontakt-IDs aus VCF- und Fotodateipfaden. Dies sind zentrale Routing-Helfer für die CardDAV-Serverimplementierung.CardDavUtils ist eine Hilfsklasse, die statische Helfermethoden für die CardDAV-Protokollimplementierung bereitstellt. Dieser Test deckt drei wichtige URL-/Pfadmanipulationsfunktionen ab, die für die CardDAV-Ressourcenadressierung wesentlich sind.
PFUserDO().also { it.username = "joe" })Wandelt einen Ressourcen-URL-Pfad in die entsprechende Principal-URL um. In WebDAV/CardDAV hat jeder Benutzer eine Principal-Ressource, die seine Identität repräsentiert. Diese Methode bildet Benutzersammlungs-URLs auf Principal-URLs ab:
/carddav/users/... → /carddav/principals/users/joe//users/... → /principals/users/joe/Die Methode entfernt URL-Suffixe (das ... repräsentiert nachfolgende Pfadsegmente) und schreibt users in principals/users/{username} um. Dies ist in RFC 3744 (WebDAV Access Control) und RFC 6352 (CardDAV) definiert.
Entfernt das CardDAV-Präfix von URIs und normalisiert sie auf ihren Basis-Ressourcentyp:
/carddav/users/ → users/users/ → users/principals/ → principalsExtrahiert die numerische ProjectForge-Kontakt-ID aus verschiedenen Dateipfadmustern:
/carddav/users/joe/ProjectForge-123.vcf → 123/carddav/photos/contact-123.jpg → 123/carddav/photos/contact-123.png → 123ProjectForge-{id} und contact-{id}, sodass der Server CardDAV-Ressourcen-URLs zurück auf ProjectForge-Datenbank-IDs abbilden kann.
Der Test verwendet das Kotlin-apply-Scope-Funktionsmuster: PFUserDO().also { it.username = "joe" }. Dies erzeugt ein teilweise initialisiertes PFUserDO mit nur gesetztem Benutzernamen – ausreichend für die URL-Generierungsmethoden, die nur die Benutzernamenseigenschaft benötigen.
868d6abb7 2025 -> 2026 63081666f Quellcodedatei-Header: 2024 -> 2025. cc9abacea CardDav-Server: WIP: Bildverarbeitung. c4062ed97 WIP: Carddav 40e554cbe WIP: Carddav