Czytanie danych z kalendarza Apple / iCloud przy użyciu PHP / CalDAV

Próbuję szybko znaleźć wolny / zajęty czas, pobierając wydarzenia kalendarza dla kalendarza iCloud za pośrednictwem CalDAV. Jestem w stanie uzyskać dostępne kalendarze i zgodnie z dokumentacjątutaj lub za pomocąBiblioteka klienta DAViCal pobranie informacji z kalendarza dla danego zakresu dat powinno być tak proste, jak wysłanie tego żądania raportu xml na adres URL kalendarza (tj.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>

co jest zasadniczo tym, czymGetEvents() funkcja działa w bibliotece DAViCal. Jednak otrzymuję adres URL każdego wpisu kalendarza w odpowiedzi, a nie same dane kalendarza:

<?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>

Mogę oczywiście wykonać żądanie GET dla każdego pojedynczego elementu kalendarza, ale oczywiście jest to dość powolne. Czy istnieje sztuczka polegająca na pobraniu danych kalendarza w jednym żądaniu?

questionAnswers(2)

yourAnswerToTheQuestion