CardDavUtilsTest.ktCardDavUtils: generación de URL principal, normalización de URI (eliminando prefijos de CardDAV) y extracción de ID de contacto desde rutas de archivos VCF y foto. Estas son ayudantes de enrutamiento centrales para la implementación del servidor CardDAV.CardDavUtils es una clase de utilidad que proporciona métodos auxiliares estáticos para la implementación del protocolo CardDAV. Esta prueba cubre tres funciones clave de manipulación de URL/ruta esenciales para el direccionamiento de recursos CardDAV.
PFUserDO().also { it.username = "joe" })Convierte una ruta de URL de recurso en la URL principal correspondiente. En WebDAV/CardDAV, cada usuario tiene un recurso principal que representa su identidad. Este método asigna las URL de colección de usuarios a las URL principales:
/carddav/users/... → /carddav/principals/users/joe//users/... → /principals/users/joe/El método elimina los sufijos de URL (el ... representa segmentos de ruta finales) y reescribe users como principals/users/{username}. Esto está definido en RFC 3744 (Control de acceso WebDAV) y RFC 6352 (CardDAV).
Elimina el prefijo CardDAV de las URI, normalizándolas a su tipo de recurso base:
/carddav/users/ → users/users/ → users/principals/ → principalsExtrae el ID numérico de contacto de ProjectForge de varios patrones de ruta de archivo:
/carddav/users/joe/ProjectForge-123.vcf → 123/carddav/photos/contact-123.jpg → 123/carddav/photos/contact-123.png → 123ProjectForge-{id} y contact-{id}, lo que permite al servidor mapear las URL de recursos CardDAV de vuelta a los IDs de la base de datos de ProjectForge.
La prueba usa el patrón de función de alcance apply de Kotlin: PFUserDO().also { it.username = "joe" }. Esto crea un PFUserDO parcialmente inicializado con solo el nombre de usuario establecido, suficiente para los métodos de generación de URL que solo necesitan la propiedad del nombre de usuario.
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024 -> 2025. cc9abacea Servidor CardDAV: WIP: manejo de imágenes. c4062ed97 WIP: Carddav 40e554cbe WIP: Carddav