iCloud CalDAV a través de PHP

Estoy tratando de programar una interacción CalDAV básica para usar con los calendarios iCloud de Apple de una cuenta determinada. En este momento, estoy recibiendo la respuesta que se muestra a continuación:

Precondition Failed
Requested resource has a matching ETag.

El código que estoy usando originalmente fue tomado dehttp://trentrichardson.com/2012/06/22/put-caldav-events-to-calendar-in-php/ y adaptada a la siguiente:

<?php

$account = array(
    'server'=> 'p05',
    'id'    => '######',
    'user'  => 'a****[email protected]',
    'pass'  => '*****'
);


$url = 'https://'.$account['server'].'-caldav.icloud.com/'.$account['id'].'/calendars/work/';
$userpwd = $account['user'] .":". $account['pass'];
$description = 'Test event description';
$summary = 'Test event';
$tstart = gmdate("Ymd\THis\Z", strtotime("-2 days"));
$tend = gmdate("Ymd\THis\Z", strtotime("-2 days"));
$tstamp = gmdate("Ymd\THis\Z");

$body = <<<__EOD
BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:$tstamp
DTSTART:$tstart
DTEND:$tend
UID:$uid
DESCRIPTION:$description
LOCATION:Office
SUMMARY:$summary
END:VEVENT
END:VCALENDAR
__EOD;

$headers = array(
    'Content-Type: text/calendar; charset=utf-8',
    'If-None-Match: *', //Possibly this line causing a problem - unsure of what it does?
    'Content-Length: '.strlen($body),
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
$res = curl_exec($ch);
curl_close($ch);

print_r($res);

?>

Puede obtener su ID de usuario de este script:https://github.com/muhlba91/icloud/blob/master/PHP/icloud.php

¿Alguien tiene alguna idea de lo que significa la respuesta o cómo resolverla? Me doy cuenta de que el guión es muy básico, pero me gustaría que algo funcionara antes de ordenarlo en una clase.

Gracias de antemano poralguna consejos / ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta