如何确定CalDav中某个事件的VAlarm是否更改?

问题描述 投票:1回答:1

同时使用Google CalendarCalDav时,我意识到,如果您为给定事件修改了通知(警报),则该事件的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/[email protected]/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>

现在,在Google日历中修改该事件的通知后,您仍然会获得相同的ETag:

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

为了寻找事件中的通知/警报何时发生变化,我还会寻找其他东西吗?还是我做错了什么?

google-calendar-api caldav google-calendar-reminders
1个回答
1
投票

这听起来完全像是Google CalDAV实施方面的错误/协议冲突:

  1. CalDAV指定服务器应使用强标签:https://tools.ietf.org/html/rfc4791#section-5.3.4
  2. 强大的标记几乎与逐位比较相对应:https://tools.ietf.org/html/rfc2616#section-13.3.3
  3. 即使有充分的理由返回弱的etag,返回的内容(例如“ 63723144835”)也不对应弱的etag语法。应该看起来像“ W / 63723144835”(请参阅​​https://tools.ietf.org/html/rfc2616#section-3.11

话虽这么说,您应该真正考虑使用WebDAV Sync(https://tools.ietf.org/html/rfc6578)监视给定日历集合中的更改。如果Google Calendar Server在使用同步功能时出现相同的问题,我将感到非常惊讶。

© www.soinside.com 2019 - 2024. All rights reserved.