Как взаимодействовать с сервером CalDAV из Ruby?
Мне нужно создавать события на сервере календаря с использованием CalDAV из приложения Ruby (если быть точным, Rails). Я просмотрел несколько разных библиотек и немного погуглил.
Я посмотрел на ri-cal ( http://ri-cal.rubyforge.org/rdoc/), но не был уверен, поддерживает ли он отправку данных на сервер или мне пришлось делать это самому,
это выглядело многообещающе http://www.local-guru.net/blog/pages/rubycaldav, но там написано, что это альфа-программа, мне нужно что-то стабильное.
Каков наилучший способ сделать это? Есть ли какая-либо библиотека, которая делает это уже? Нужно ли мне формировать свои собственные HTTP-запросы?
Любые советы по этому вопросу приветствуются
4 ответа
Я закончил тем, что использовал библиотеку в http://www.local-guru.net/blog/pages/rubycaldav
Мне пришлось адаптировать его для работы с SSL, правильно использовать библиотеку UUID, правильно форматировать даты и работать с событиями полного дня. Так как мне нужно было только создавать и уничтожать события, это все, что я обновил. Я планирую сделать больше, когда у меня будет время.
Мой обновленный код можно найти здесь https://github.com/loosecannon93/ruby-caldav.
У меня была проблема с неправильным форматированием дат и отсутствием UUID.
caldavtest.rb
файл на GitHub - это то, что я использовал для работы
Дополнительное осложнение, с которым я столкнулся, заключалось в том, что у Zimbra (сервера) есть 2 пути, один для файлов ICS, которые доступны только для чтения. /home/user@host/Calender
и один для CalDAV /dav/user@host/Calendar
Я надеюсь, что кто-то может найти помощь с этим решением.
Тем не менее, в Ruby существенно отсутствует реализация cladav. Есть библиотеки ICS, которые формируют объекты, но есть только чистый Net::HTTP для взаимодействия с сервером. Местный гуру - единственный рубин, который я нашел, который работает в обоих направлениях, но ему нужна помощь с небольшими проблемами.
Я исправил некоторые из них, но не для всего проекта, мне просто нужно было заставить его работать. Но если кто-то хотел бы внести свой вклад, я бы хотел помочь.
Одно из моих любимых мест для проверки возможных вариантов - Ruby Toolbox. Это было бы одно из первых мест, которые я бы проверил.
Я также проверил бы github, который дал этот результат, который может быть вашим лучшим вариантом и именно то, что вы ищете.
Что касается ответов на другие ваши вопросы, я бы, наверное, бросил свой вопрос, посмотрев и этот пост, и этот код.
Итак, длинный ответ сильно сокращен, да, есть библиотеки, которые уже выполняют то, что вы хотите сделать, но если бы это был я, я бы выбрал свое собственное решение для чего-то такого конкретного.
Вы размещаете свои календари в Google? если вы, то посмотрите на: https://github.com/northworld/google_calendar
Мы использовали caldav4j, так как наше приложение было развернуто в JRuby. Не знаю, будет ли это вариант для вас.