Как опубликовать календарь с помощью webCal

Мое приложение генерирует сложный календарь во время выполнения, поэтому у любого пользователя есть задачи на определенную дату/время, и каждая задача имеет описание + некоторые свойства.

Меня попросили «опубликовать» этот календарь как webCal. Я ничего не знаю о webcal, в любом случае мне интересно, пробовал ли кто-нибудь из вас уже это и может написать свои комментарии или предложения.

Один вопрос "как идентифицировать пользователя"? Поскольку у меня многопользовательский календарь, как мне опубликовать отдельные календари для каждого пользователя?

Я думаю, что это своего рода сервисное приложение Delphi, которое работает непрерывно, публикуя календарь.


person LaBracca    schedule 16.07.2012    source источник
comment
Где ваше приложение будет публиковать эти календари? Должен ли он быть доступен онлайн или только в сети?   -  person Martijn    schedule 16.07.2012
comment
онлайн, в идеале с некоторой защитой (авторизация пользователя)   -  person LaBracca    schedule 19.07.2012


Ответы (1)


Это зависит от того, нужен ли вашим пользователям доступ на запись к своему календарю.

Однажды я написал простую (командную строку) утилиту, которая экспортирует один файл календаря (.ics). В случае изменения он загружает экспортированный файл .ics на веб-сервер, где его могут использовать клиенты календаря (например, Google Calendar, iCalendar, Sunbird, Outlook). Публикацию для разных пользователей можно легко выполнить, загрузив файл .ics в отдельную папку для каждого пользователя.

Затем я запланировал регулярный запуск этой утилиты. Конечно, вы могли бы сделать так, чтобы ваша служба Delphi делала это регулярно.

Многие клиенты календаря понимают http:// URL-адреса, а также webdav:// URL-адреса. Аутентификацию можно организовать с помощью одной из обычных схем аутентификации HTTP. Конечно, вы захотите использовать SSL для защиты вещей.

Единственным ограничением этого подхода является то, что результирующий календарь фактически доступен только для чтения.

Если вы хотите предоставить доступ для записи, вам понадобится настоящий веб-сервер. Настоящая реализация webcal будет означать поддержку протокола webdav (который сам по себе является расширением протокола HTTP). ) на сервере и получать изменения из службы Delphi. Либо это, либо написание сервера WebDav/CalDav в Delphi (например, используя компонент Indy TIdWebdav путем расширения компонента TIdHTTPServer, поскольку Indy не поддерживает компонент TIdWebdavServer).

Вам придется самостоятельно обрабатывать все специфичные для webdav команды (используя событие OnCommandOther) в соответствии с спецификациями WebDAV. Этот вопрос о написании сервера WebDAV может дать некоторые указатели...

В качестве альтернативы вы можете использовать сторонний сервер webdav и получать любые изменения из службы Delphi.

person Martijn    schedule 16.07.2012
comment
Спасибо за ответ, поэтому я должен написать веб-сервер, поддерживающий протокол wbdav. Вы использовали Инди? Можете ли вы опубликовать образец программы? Мне был бы интересен сервер, который публикует, и клиент, который взаимодействует с сервером. Google возвращает много вопросов без ответов, это будет первый пример! - person LaBracca; 19.07.2012
comment
@ user193655: Нет, я только экспортировал файл календаря (только для чтения) и загрузил его с помощью FTP; поэтому мне не нужно было писать сервер Webdav. - person Martijn; 19.07.2012
comment
Спасибо, не могли бы вы лучше объяснить мне, где вы обновились? А как вы публикуете? вы используете существующий сервер? У меня нет знаний об этом, но после вашего комментария я чувствую, что мое решение совсем рядом. У меня есть файл ical, но как его опубликовать на ftp? Не могли бы вы написать для чайников пошаговое описание того, как перейти от файла iCal к работающему серверу webdav? - person LaBracca; 20.07.2012