Календарь iCloud Запрос на удаление события не работает с caldav

Я использую библиотеку caldav-client-v2.php для чтения событий календаря из календарей iCloud,

Функция GetEvents() возвращает массив данных календаря, содержащий ics url и etag, которые передаются в < strong>DoDELETERequest(href,etag) для удаления события, это работает для календаря owncloud, но когда я пытаюсь сделать это для iCloud, это не удаляет событие и возвращает ошибку «Неправильный тег объекта ' тег примерно такой: FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685

я попытался передать 5c162550-1ccc-4821-80d6-e2fab587c348 в функцию, но получаю ту же ошибку. сервер caldav возвращает неправильный etag или как я могу заставить его работать?


person rashidnk    schedule 12.05.2016    source источник


Ответы (1)


ETag определяется как строка в кавычках, см. RFC 7232, раздел 2.3. В нем говорится:

ETag       = entity-tag

entity-tag = [ weak ] opaque-tag
weak       = %x57.2F ; "W/", case-sensitive
opaque-tag = DQUOTE *etagc DQUOTE
etagc      = %x21 / %x23-7E / obs-text
           ; VCHAR except double quotes, plus obs-text

Таким же образом вы должны были получать ETag от сервера. Убедитесь, что вы отправляете ETag точно так же, как получили его. В частности, не удаляйте кавычки.

Поэтому попробуйте вместо этого передать "FT=-@RU=5c162550-1ccc-4821-80d6-e2fab587c348@S=1685".

person Marten    schedule 12.05.2016
comment
Да, сэр, это правда, библиотека удаляла кавычки etag с помощью preg_replace, - person rashidnk; 13.05.2016