Как именно сервер CalDAV рекламирует поддержку задач?
После подключения к серверу CalDAV вы можете запросить, какие сервисы он поддерживает. Например, после того как Lightning подключится к серверу CalDAV, он позволит вам создавать объекты Task только в том случае, если этот сервер объявляет о поддержке Task.
К сожалению, некоторые серверы (например, AppSuite, Yahoo) поддерживают Задачи, но, по-видимому, неправильно сообщают об этом факте, и поэтому строгие клиенты PIM (например, Lightning) не будут обсуждать Задачи с ними.
Как (точно) CalDAV должен это сделать?
Я прочитал https://wiki.wocommunity.org/display/~probert/CalDAV+and+CardDAV+handshake котором объясняется рукопожатие и подключение CalDAV, а также указывается список функций DAV, возвращаемый вызовом OPTIONS после подключения. Наш сервер CalDAV возвращает следующий список:
1, 2, 3, access-control, calendar-access, addressbook, extended-mkcol, calendar-auto-schedule, calendar-schedule, calendarserver-sharing, calendarserver-principal-search, calendarserver-principal-property-search, calendarserver-private-comments, extended-mkcol, calendar-managed-attachments
Однако я нигде не могу найти исчерпывающий список стандартных имен функций, а также не могу определить, какое имя ожидается для поддержки Задач.
Может кто-нибудь пролить некоторый свет на это?
1 ответ
Возможности проводятся в supported-calendar-component-set
атрибут любого данного календаря. Если этот атрибут не установлен, то предполагается, что он поддерживает все.
Чтобы получить набор компонентов, используйте это (с правильным URL календаря и аутентификацией):
PROPFIND https://myserver/caldav/url/12345
<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<C:supported-calendar-component-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>
</A:prop>
</A:propfind>
это возвращается
<D:multistatus>
<D:response>
<D:href>/caldav/3382/</D:href>
<D:propstat>
<D:prop>
<supported-calendar-component-set>
<CAL:comp name="VEVENT"/>
</supported-calendar-component-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
В разделе поддерживаемого набора компонентов календаря найдите VEVENT (поддерживает события календаря), VTASK (поддерживает задачи), VJOURNAL и т. Д. И т. Д. Таким образом, в приведенном выше примере события календаря поддерживаются, но не задачи.