通过cUrl下载并操作整个/范围的OwnCloud CalDAV

时间:2017-05-03 05:44:09

标签: bash curl owncloud caldav

我需要使用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

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

1 个答案:

答案 0 :(得分: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嵌入查询。