【问题标题】:Download and manipulate entire/range of OwnCloud CalDAV via cUrl通过 cUrl 下载和操作整个/范围的 OwnCloud CalDAV
【发布时间】:2017-05-03 05:44:09
【问题描述】:

我需要使用 curl (bash) 与 OwnCloud 实例通信。

我知道如何下载存储在日历中的 .ics 文件列表:

curl -k --user "${login}:${password}" -X PROPFIND Source: "https://owncloud.jujens.eu/remote.php/caldav/calendars/jujens/defaultcalendar"

来源:(Use a webdav service with curl)

但是:如何在不打开每个文件的情况下下载文件的内容? 是否可以只下载某个范围内的日历条目?

【问题讨论】:

    标签: bash curl owncloud caldav


    【解决方案1】:

    如何在不打开每个文件的情况下下载文件内容?

    首先:单独下载文件有什么问题? (通过 GET 到给定的 URL)除非您处理大量数据,如果您并行发出 GET,这些数据应该没问题,实际上可以更快。

    如果服务器支持(大多数支持),您可以发出CalDAV multiget REPORT,RFC 4791 7.9。此处也有描述:Building a CalDAV client,示例:

    REPORT /calendars/johndoe/home/ HTTP/1.1
    Depth: 1
    Prefer: return-minimal
    Content-Type: application/xml; charset=utf-8
    Accept: application/xml
    
    <c:calendar-multiget xmlns="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
      <prop>
        <getetag />
        <c:calendar-data />
      </prop>
      <href>/calendars/johndoe/home/132456762153245.ics</href>
      <href>/calendars/johndoe/home/fancy-caldav-client-1234253678.ics</href>
    </c:calendar-multiget>
    

    是否可以只下载某个范围内的日历条目?

    是的,您还可以使用CalDAV calendar-query REPORT 下载给定时间范围的数据。示例:

    REPORT /calendars/johndoe/home/ HTTP/1.1
    Depth: 1
    Prefer: return-minimal
    Content-Type: application/xml; charset=utf-8
    Accept: application/xml
    
    <calendar-query xmlns:D="DAV:" xmlns="urn:ietf:params:xml:ns:caldav">
      <D:prop>
        <D:getetag />
        <calendar-data />
      </D:prop>
      <filter>
        <comp-filter name="VCALENDAR">
          <comp-filter name="VEVENT">
            <time-range start="20060104T000000Z"
                        end="20060105T000000Z"/>
          </comp-filter>
        </comp-filter>
      </filter>
    </calendar-query >
    

    实际支持的日历过滤器因服务器而异。

    要使用 curl 发布此类报告,请使用 -X REPORT 并使用 -d 嵌入查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2021-06-18
      • 2012-01-12
      相关资源
      最近更新 更多