By arnaudq on Jan 18, 2010
The iCalendar standard defines the notion of organizer and attendees (users, groups, resources,...) for scheduling purpose. Those are identified by "calendar user addresses" which in practice are generally mailto: URIs:
ORGANIZER;CN=Ciy:mailto:firstname.lastname@example.org ATTENDEE;CN=Ciny;PARTSTAT=ACCEPTED:mailto:email@example.com ATTENDEE;CN=Arnaud;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:firstname.lastname@example.org
This property can then be used in different ways, depending on the context:
- When creating a meeting invitation, it can be used to set the ORGANIZER property value.
- When fetching events from the server, it can be used to determine whether the owner of the calendar is the organizer or an attendee of the meeting by comparing the addresses returned in the calendar-user-address-set with the ORGANIZER and ATTENDEE values.
Client applications need to take into account a few points when doing this comparison though:
First of all, the calendar-user-address-set property is multivalued: a user may have both mailto:email@example.com and mailto:firstname.lastname@example.org defined as valid calendar addresses. So CUAs need to look for both values when comparing with the ORGANIZER/ATTENDEE values.
Then, when using mailto: URIs, there is no clear definition of how two such URIs should be compared for equality (as far as I know). For example, if one follows the SMTP definition, the local part of an email address is case sensitive. In the context of a calendar client though, I think it makes sense to:
- try to preserve the original case when storing calendar addresses.
- but do case insensitive comparison wherever a comparison is required.