Ищу клиентскую библиотеку для протокола CalDAV
От: vaa  
Дата: 25.04.22 08:14
Оценка:
Ищу клиентскую библиотеку для протокола CalDAV

UPDATE:
итак, интересовали либы для работы с яндексом и майлру.
что удивительно, доступ к ресурсам то ли не стандартизирован, то ли я не умею готовить
по яндексу путем проб и ошибок удалось выяснить, что
список календарей доступен по гэт:
https://caldav.yandex.ru/calendars/user@yandex.ru/
адреса при каледнарей при этом
такие
https://caldav.yandex.ru/calendars/user@yandex.ru/events-18486467/
т.е. всегда events-number
есть еще events-default
по нему соответственно гет-запросом урлы всех событий календаря
Создать календарь получилось только по урлу https://caldav.yandex.ru/calendars/user@yandex.ru/me
любое другое значение приводит к ошибке
т.е. узнать урл(генерируется сервером) созданного календаря получается только через запрос календарей и поиску по св-ву(например, displayname).
например вот этот клиент https://github.com/andyedinborough/CalDav
сумел создать календарь, но не может получить список календарей.
работать с событиями получилось через https://github.com/goodwinuser/CalDavYandexCalendar.

с майлру хуже.
начать с того что инструкция устарела, пришлось откатится к старому интерфейсу т.к. в новом посмотреть урл календаря не получается.
дальше больше thunderbird не может подключиться к календарю хотя все делаю по ману (введенные учетные данные не приняты, чтобы это не означало).

тем не менее переход https://calendar.mail.ru/principals/mail.ru/user/calendars/26f59ead-42e7-437c-8e8f-efa06fedeea5/
запросил базовую авторизацию и успещно прошел. результат: 500 Internal Server Error.

почему с каждым сервером такие нюансы честно говоря непонятно. начать от авторизации(в яндексе без домена, в майлру с доменом).
и непонятно почему майлру падает сразу на OPTIONS запросе? не реализовано?
какой-то жуткий квест. и это ведущие айти гиганты эрэфии!?...
в том же гугле и рест-апи и caldav причем все задокументировано.

Вообщем майлру все еще под вопросом.
UPDATE: выяснилось что на майлру обязательно требуется использовать пароль приложения. хотя в справке сказано использовать пароль от почты.
В целом майлру более соотвествует протоколу т.к. позволяет создавать календари с нужным url, т.е. сразу с uid, в отличии от знаменитого шмандекса где нужно догадаться что только он может присвоить айди календарю.

Резюме: для сетевых вещей проще написать свой код, а вот для сериализации вероятно лучше всего подходит iCal.Net. ну она и по популярности основная.
Как-то так:
    HttpRequestMessage message = new HttpRequestMessage(new HttpMethod("PUT"), url)
    {
        Content = new StringContent(iCalNetSerilization, Encoding.UTF8, "text/calendar")
    };
    message.Headers.Add("If-None-Match", "*");
    message.Headers.Authorization = new AuthenticationHeaderValue("Basic", login);
    using var response = await client.SendAsync(message, HttpCompletionOption.ResponseContentRead, CancellationToken.None);
    var content = await response.Content.ReadAsStringAsync();
    var status = response.StatusCode;
☭ ✊ В мире нет ничего, кроме движущейся материи.
Отредактировано 28.04.2022 1:56 Разраб . Предыдущая версия . Еще …
Отредактировано 27.04.2022 6:35 Разраб . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.