Lesen von Apple / iCloud-Kalenderdaten mit PHP / CalDAV

Ich versuche, Frei / Gebucht-Zeit schnell zu finden, indem ich die Kalenderereignisse für einen iCloud-Kalender über CalDAV abrufe. Ich kann die verfügbaren Kalender bekommen und laut DokumentationHier oder mit demDAViCal-Client-Bibliothek Das Abrufen der Kalenderinformationen für einen bestimmten Datumsbereich sollte so einfach wie das Senden dieser REPORT-XML-Anforderung an eine Kalender-URL sein (d. h.https://caldav.icloud.com/..userid../calendars/work/):

<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop>
    <d:getetag />
    <c:calendar-data />
</d:prop>
<c:filter>
    <c:comp-filter name="VCALENDAR">
       <C:comp-filter name="VEVENT">
            <C:time-range start="20131115T000000Z" end="20131201T000000Z"/>
          </C:comp-filter>
</c:comp-filter>
</c:filter>
</c:calendar-query>

das ist im wesentlichen was dieGetEvents() Funktion funktioniert in der DAViCal-Bibliothek. Ich erhalte jedoch nur die URL für jeden Kalendereintrag in der Antwort und nicht die Kalenderdaten selbst:

<?xml version='1.0' encoding='UTF-8'?><multistatus xmlns='DAV:'>
  <response>
<href>/..userid../calendars/work/8D2D90EB-BD23-4137-AD22-70D971C587F2.ics</href>
<propstat>
  <prop>
    <getetag>"C=7734@U=b09ce345-d654-491e-bb4a-55358e7019d9"</getetag>
    <getcontenttype>text/calendar</getcontenttype>
  </prop>
  <status>HTTP/1.1 200 OK</status>
</propstat>
</response>
 <response>
<href>/..userid../calendars/work/AA2385AB-EA58-4625-AF87-6D4FB9405686.ics</href>
<propstat>
  <prop>
    <getetag>"C=7733@U=b09ce345-d654-491e-bb4a-55358e7019d9"</getetag>
    <getcontenttype>text/calendar</getcontenttype>
  </prop>
  <status>HTTP/1.1 200 OK</status>
</propstat>
</response>
...
</multistatus>

Ich kann natürlich eine GET-Anfrage für jedes einzelne Kalenderelement durchführen, aber dies ist offensichtlich ziemlich langsam. Gibt es einen Trick, um die Kalenderdaten in einer Anfrage herunterzuladen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage