Как узнать, изменился ли VAlarm для мероприятия в CalDav? - PullRequest
1 голос
/ 21 апреля 2020

Во время игры с Календарем Google и CalDav я понял, что если для определенного события вы измените уведомление (Тревога), ETag события не будет изменить.

Теперь сравнение ETags необходимо, чтобы выяснить, когда изменяется данное событие (в CalDav ).


Запрос, который я использую для определения ETag,

<?xml version=\"1.0\" encoding=\"utf-8\"?><d:propfind xmlns:d=\"DAV:\" xmlns:cs=\"http://calendarserver.org/ns/\"><d:prop><d:getetag /></d:prop></d:propfind>

, который будет возвращать что-то вроде

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:caldav="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:ical="http://apple.com/ns/ical/">

  <D:response xmlns:carddav="urn:ietf:params:xml:ns:carddav" xmlns:cm="http://cal.me.com/_namespace/" xmlns:md="urn:mobileme:davservices">
    <D:href>/caldav/v2/myemail@gmail.com/events/</D:href>
    <D:propstat>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>

  <D:response xmlns:carddav="urn:ietf:params:xml:ns:carddav" xmlns:cm="http://cal.me.com/_namespace/" xmlns:md="urn:mobileme:davservices">
    <D:href>/caldav/v2/myemail%40gmail.com/events/xqrjsgs1gj35cpub2nnumntm5j%40google.com.ics</D:href>
    <D:propstat>
      <D:status>HTTP/1.1 200 OK</D:status>
      <D:prop>
        <D:getetag>"63723144835"</D:getetag>
      </D:prop>
    </D:propstat>
  </D:response>

</D:multistatus>

Теперь, после того, как вы go и измените уведомление об этом событии в Календаре Google, вы продолжаете получать тот же ETag:

<D:getetag>"63723144835"</D:getetag>

Есть ли что-то еще, что я мог бы искать, чтобы узнать, когда уведомление / Тревога изменяется в мероприятие? или я что-то не так делаю?

1 Ответ

1 голос
/ 22 апреля 2020

Это определенно звучит как ошибка / нарушение протокола на стороне реализации Google CalDAV:

  1. CalDAV указывает, что серверы должны использовать сильные теги: https://tools.ietf.org/html/rfc4791#section -5.3.4
  2. Сильные etags в значительной степени соответствуют битовому биту: https://tools.ietf.org/html/rfc2616#section -13.3.3
  3. Даже если были веские причины для возврата слабого etag, что вы get back (например, «63723144835») не соответствует слабому синтаксису etag. Должно выглядеть как "W / 63723144835" (см. https://tools.ietf.org/html/rfc2616#section -3.11 )

Учитывая все вышесказанное, вам действительно следует рассмотреть возможность использования WebDAV Syn c ( https://tools.ietf.org/html/rfc6578) для отслеживания изменений в заданной коллекции календарей. Я был бы очень удивлен, если бы сервер календаря Google выявлял ту же проблему при использовании syn c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...