2017-05-03 6 views
0

Ich muss mit einer OwnCloud-Instanz mit curl (bash) kommunizieren.Download und manipulieren gesamte/Bereich von OwnCloud CalDAV über cUrl

Ich weiß, wie Sie die Liste der ics-Dateien herunterladen, im Kalender gespeichert:

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

Quelle: (Use a webdav service with curl)

Aber: Wie lade den Inhalt der Dateien ohne jede Öffnung ein? Ist es nur möglich, die Kalendereinträge innerhalb eines Bereichs herunterzuladen?

Antwort

1

Wie können Sie den Inhalt der Dateien herunterladen, ohne jeden zu öffnen?

Vor allem: Was ist das Problem beim Herunterladen der Dateien einzeln? (über ein GET auf die URL gegeben) Es sei denn, Sie arbeiten mit riesigen Datenmengen, die gerade gut und eigentlich schneller sein könnten, wenn Sie die GETs parallel ausgeben.

Wenn der Server es unterstützt (die meisten tun), können Sie eine CalDAV multiget REPORT, RFC 4791 7.9 ausgeben. Auch hier beschrieben: Building a CalDAV client, Beispiel:

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> 

ist möglich, es nur die Kalendereinträge in einem Bereich zum Download?

Ja, Sie können auch Daten mit dem Zeitbereich CalDAV calendar-query REPORT herunterladen. Beispiel:

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 > 

Welche Kalenderfilter tatsächlich unterstützt werden, variiert zwischen verschiedenen Servern.

Verwenden Sie -X REPORT, um solche Berichte mithilfe von curl zu erstellen, und betten Sie die Abfrage unter Verwendung von -d ein.