Wednesday, February 20, 2008

Reusable Calendar System

The goal is to implement a calendar system that can be reused by web applications.

Feature and Capability List

  1. REST access (adding and retrieving events)

  2. Export to iCal, csv and text file

  3. Should handle (initially the following kinds of events)
    • Event with no timespan.

    • Event with timespan.

    • Repeating event.

  4. Provide a notification system to the application using the system.

Initially we will try to use google calendar API. This will provide us with proven platform and a working calendar system.

Google Calendar API

Google calendar already handle all the initial requirements all that is left is to understand how to use the Google Calendar so we can have our reusable and reliable calendar system.

Google calendar API already uses REST access. They also uses their own GData protocol. Learning Google data API protocol is a good addition since it is also used by "All" Google apps.

Overview of the Google Calendar API

GData uses either of two standard XML-based syndication formats: Atom or RSS. RSS has been in the internet for a longer time and Atom is more recent but provide more features.

Atoms provides Atom Publishing Protocol(APP), an HTTP-based protocol for publishing and editing web resources. It provides the create, edit, delete resource command using POST, PUT, or DELETE respectively. This is the same access as WebDAV and the newer protocol the CalDAV.

In RSS you cannot provide a query to server to get a response containing list of matching results. GData uses the standard extension mechanism of Atom to allow queries.

Read a more thorough overview of the GData protocol here