Как сделать многопоточное удаление CalDav для iCloud?

У нас есть интеграция PHP с календарем iCloud, которая использует пакетные методы CRUD, как описано здесь: https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/calendarserver-bulk-change.txt

Похоже, Apple обновила свои серверы, потому что с прошлой недели внезапно перестала работать интеграция. Мы могли исправить различные изменения, такие как создание календарей и событий. Но <MM:delete/> пока не работает, хотя я использую точные требуемые спецификации.

Вот тело:

$body = <<<CALENDAR
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MM:multiput xmlns:D="DAV:"xmlns:MM="http://me.com/_namespace/"xmlns:C="urn:ietf:params:xml:ns:caldav">
<MM:resource>
<D:href>/12345678/calendars/calendarname/1234.ics</D:href>
<MM:delete/>
</MM:resource>
</MM:multiput>
CALENDAR;

Запрос Guzzle выглядит так:

$response = $client->request('POST', 'https://pXX-caldav.icloud.com/{$iCloudUserId}/calendars/{$calendarName}/', [
'auth' => [
'user@example.com',
'third-party-pass',
],
'headers' => [
'Content-Type' => 'application/xml; charset="utf-8',
],
'body' => $body,
]);

Ответ, который я получаю, пуст, он не возвращает 200 OK множественных ответов, как это было раньше. И в iCloud тоже ничего не происходит. Это выглядит так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:multistatus
xmlns:ns6="http://me.com/_namespace/"xmlns:ns5="http://calendarserver.org/ns/"xmlns:ns2="DAV:"xmlns:ns4="urn:ietf:params:xml:ns:caldav"xmlns:ns3="http://apple.com/ns/ical/"/>

Странно то, что обычный DELETE для одного события работает. Но тогда нам пришлось бы запускать много запросов к серверу.

Как мне сделать правильное многопоточное удаление для iCloud сейчас?

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector