CardDavUtilsTest.ktCardDavUtils: генерацию principal URL, нормализацию URI (удаление префиксов CardDAV) и извлечение ID контакта из путей к VCF и фотофайлам. Это основные вспомогательные функции маршрутизации для реализации CardDAV-сервера.
CardDavUtils — это утилитный класс, предоставляющий статические вспомогательные методы для реализации протокола CardDAV. Данный тест покрывает три ключевые функции манипуляции URL/путями, необходимые для адресации ресурсов CardDAV.
PFUserDO().also { it.username = "joe" })Преобразует путь URL ресурса в соответствующий principal URL. В WebDAV/CardDAV каждый пользователь имеет principal ресурс, представляющий его личность. Этот метод сопоставляет URL коллекций пользователей с principal URL:
/carddav/users/... → /carddav/principals/users/joe//users/... → /principals/users/joe/Метод удаляет суффиксы URL (символы ... обозначают конечные сегменты пути) и перезаписывает users на principals/users/{username}. Это определено в RFC 3744 (Управление доступом WebDAV) и RFC 6352 (CardDAV).
Удаляет префикс CardDAV из URI, нормализуя их до базового типа ресурса:
/carddav/users/ → users/users/ → users/principals/ → principalsЭтот метод используется внутри диспетчера CardDAV для определения того, какой обработчик должен обработать запрос после того, как фильтр определит его как CardDAV-трафик.
Извлекает числовой ID контакта ProjectForge из различных шаблонов путей к файлам:
/carddav/users/joe/ProjectForge-123.vcf → 123/carddav/photos/contact-123.jpg → 123/carddav/photos/contact-123.png → 123Метод использует регулярные выражения для сопоставления с шаблонами ProjectForge-{id} и contact-{id}, что позволяет серверу сопоставлять URL ресурсов CardDAV с ID базы данных ProjectForge.
В тесте используется функция области видимости Kotlin apply: PFUserDO().also { it.username = "joe" }. Это создает частично инициализированный PFUserDO только с установленным именем пользователя — достаточно для методов генерации URL, которым требуется только свойство username.
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024 -> 2025. cc9abacea CardDav-сервер: WIP: обработка изображений. c4062ed97 WIP: Carddav 40e554cbe WIP: Carddav