curl — создание событий календаря в NextCloud с использованием переполнения стека

Я пытаюсь создать событие календаря в Nextcloud с помощью PHP и cURL. После запуска кода из командной строки я получаю следующую ошибку из Nextcloud 12:

PUT is not allowed on non-files.

Вот полный код, который я использую следующие это руководство

<?php
$url = 'https://cloud.org/remote.php/dav/calendars/mycalendars/activity/';
$headers = array('Content-Type: text/calendar', 'charset=utf-8');
$userpwd = 'gerald:123';
$description = 'new event description';
$summary = 'new event';
$tstart = gmdate("Ymd\THis\Z", strtotime("-2 days"));
$tend = gmdate("Ymd\THis\Z", strtotime("-2 days"));
$tstamp = gmdate("Ymd\THis\Z");
$uid = 'event-123';

$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;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
//curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

//Execute the request.
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

Означает ли это, что CalDAV в Nextcloud не поддерживает PUT? Так как же календарные приложения, такие как Thunderbird Lightning, создают события в Nextcloud?

В следующем облаке Документация WebDAV Я не могу найти ничего о реализации CalDAV.

1

Решение

Если вы используете HTTP PUT запрос, намерение состоит в том, что вы замещать ресурс в URI, на который вы ссылаетесь. Итак, ваш пример HTTP-запроса говорит мне, что вы замена:

https://cloud.org/remote.php/dav/calendars/mycalendars/activity

Это верно? Возможно нет! Вы, вероятно, хотите создать новый ресурс календаря в этой коллекции. Так что выберите новый URL для вашего ресурса, который еще не существует:

https://cloud.org/remote.php/dav/calendars/mycalendars/activity/foo-bar-baz.ics
3

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

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

По вопросам рекламы [email protected]