CreateCalendar Method

Creates a new calendar collection resource.

Syntax

public void CreateCalendar(string resourceURI);
Public Sub CreateCalendar(ByVal ResourceURI As String)

Remarks

The CreateCalendar method creates a new calendar collection resource. A server MAY restrict calendar collection creation to particular collections. Creating calendar collections is not supported by all CalDAV servers. Some calendar stores only support one calendar per user (or principal), and those are typically pre-created for each account.

The following properties are used to create a new calendar collection resource:

To successfully create a calendar, the ResourceURI cannot already exist, and must point to a valid location where a new calendar can be created. The DAV:bind privilege MUST be granted to the current user on the parent collection of the specified ResourceURI.

The following example shows how to create a simple new calendar collection resource with Yahoo Calendar.

  
  CalDAVS1.DisplayName = "Testing Create Calendar method";
  CalDAVS1.Description = "Test Calendar";
  CalDAVS1.CreateCalendar("https://caldav.calendar.yahoo.com/dav/userid/Calendar/TestCal1");

Note that Google does not support creating a new calendar through CalDAV. It must be created through the Google calendar web interface.

There is no standard format for resource URIs. Google for instance, uses "https://www.google.com/calendar/dav/" plus your email address to access the default calendar. So "https://www.google.com/calendar/dav/username@gmail.com/" is the base URI for the default calendar. If you have multiple calendars, replace the email address portion above with the Id of the calendar, plus "@group.calendar.google.com/". For instance: "https://www.google.com/calendar/dav/ev3nkr4ua83jej7q32oumn5eeo@group.calendar.google.com/". For Google, calendar events are stored in the "/events/" path. To retrieve a report on a calendar, you'd add "/events/" to one of the above paths. For example:

  CalDAV.GetCalendarReport("https://www.google.com/calendar/dav/username@gmail.com/events/");
Leaving the "/events/" out of the URI will result in an HTTP protocol error: 405 Method not allowed.

To add or retrieve an event, add the UID of the event you're creating or retrieving plus ".ics" to the path. Note that when putting an event with the PutCalendarEvent method, if the resourceURI and the UID do not match Google will create the event using the UID stored in the UID property. The actual location of will be newly added event will be returned in a "Location" header. This is the resource URI you must use to retrieve the event with GetCalendarEvent. For example:

  CalDAV.UID = "1234567890";
  CalDAV.PutCalendarEvent("https://www.google.com/calendar/dav/username@gmail.com/events/1234567890.ics");

Yahoo uses a different format for CalDAV access. Yahoo's ResourceURIs always start with "https://caldav.calendar.yahoo.com/dav/" plus your user name, plus "/Calendar/" plus the name of your calendar. For instance: "https://caldav.calendar.yahoo.com/dav/username/Calendar/Your_Name" for the default calendar. (Yahoo uses your name to create the default calendar). When using the CreateCalendar event to create a new calendar, replace "Your_Name" in the URI with the desired name of your new calendar. Event resources are located directly under the "/Calendar/Calendar_Name/" path. Like Google, the UID and filename portion of the resource URI must match, but Yahoo will actually return an HTTP protocol error if they differ. The examples below show a few possible transactions:

  CalDAVS1.User = "username";
  CalDAVS1.Password = "password";
  
  CalDAV.DisplayName = "My Hockey Calendar";
  CalDAV.CreateCalendar("https://caldav.calendar.yahoo.com/dav/username/Calendar/Hockey_Calendar/");
  
  CalDAV.StartDate = "20100401T040000";
  CalDAV.EndDate = "20100401T060000";
  CalDAV.UID = "qwerty1234567";
  CalDAV.Summary = "First Practice";
  CalDAV.Location = "Rink on 1st and main";
  CalDAV.EventType = vEvent;
  CalDAV.PutCalendarEvent("https://caldav.calendar.yahoo.com/dav/username/Calendar/Hockey_Calendar/qwerty1234567.ics");
  
  CalDAV.GetCalendarReport("https://caldav.calendar.yahoo.com/dav/username/Calendar/Hockey_Calendar/");

Copyright (c) 2022 /n software inc. - All rights reserved.
IPWorks 2020 .NET Edition - Version 20.0 [Build 8307]