Я реализовал Caldav API для добавления, обновления, удаления событий в календарях icloud, и все работает как положено. Когда дело доходит до добавления, обновления, удаления нескольких событий за один вызов API, добавление работает без особых проблем. Но я не уверен, как можно редактировать и удалять несколько событий за один вызов API.
Код ниже даст представление о том, как удалить одно событие
public void DeleteEvent(CalendarToken authToken, string eventId, Action<APIResponse> callback)
{
var appleToken = GetAppleAuthToken(authToken);
string url = @"https://" + appleToken.AppleCalendarDomainUrl + "/" + appleToken.AppleUserID + "/calendars/home/" + eventId + "_event.ics";
string response = SendRequest(appleToken, url, string.Empty, "DELETE", "application/xml; charset=utf-8", "0");
}
private string SendRequest(AppleCalendarToken appleToken, string destinationUrl, string requestData, string methodType, string contentType, string depthValue)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(requestData);
request.Credentials = GetCredentials(appleToken, destinationUrl);
request.PreAuthenticate = true;
request.ContentType = contentType; //"application/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = methodType;
request.Headers.Add("Depth", depthValue);
request.Accept = "*/*";
request.UserAgent = "cURL based CalDAV client";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
if ((int)response.StatusCode == 207 || (int)response.StatusCode == 201)
{
Stream responseStream = response.GetResponseStream();
return new StreamReader(responseStream).ReadToEnd();
}
}
catch
{
throw;
}
return string.Empty;
}
На скриншоте ниже показано, как добавить несколько событий в один вызов API.
Я ищу изменить / удалить более одного события в одном вызове API.
Любая помощь будет оценена. Заранее спасибо.