r1 - 29 Jun 2006 - 11:05:47 - EdBindlYou are here: OSAF >  Journal Web  >  ContributorNotes > EdBindlNotes > HighLevelAPIforTicketsInCalDAV

Introduction


Tickets are a way to transfer read and write privileges to other users. Any user that knows a ticket's ID can use it. They can be limited in time valid, number of uses, and may also specify which privileges the ticket grants. NOTE: Cosmo does not support number of uses, it is always defaulted to infinity. See CosmoTickets for more information.

Tickets can be used in 2 ways:

   GET /MyCalendar.ics HTTP/1.1
   Host: www.mysweeturl.com
   Ticket: AJFHS847573

High Level API


This wiki page covers the High Level API for tickets. To see a lower level overview please see TicketsInCalDav4JTutorial . Note: See CalDAV4jTutorial for information on how to further use CalDAV4j.

CalDAVCalendarCollection

CalDAVCalendarCollection is the class that contains all the high level methods. To use it you first must create a valid instance. You must have created a HostConfiguration and CalDAV4JMethodFactory. See CalDAV4jTutorial
   CalDAVCalendarCollection calendarCollection = new CalDAVCalendarCollection(
            "/", hostConfiguration, methodFactory,
             CalDAVConstants.PROC_ID_DEFAULT);

Making Tickets

Tickets are made using createTicket. The user must specify the resource's URI to make the ticket on and which privileges to set. The user may also specify the time and the number of visits the ticket is valid for. If you do not wish to specify the time or visits pass a null to createTicket.

To make a ticket on http://www.mysweeturl.com/MyCalendar.ics, with Read and Write Privileges, 5 uses and a 3600 second timeout: For purpose of this demonstration we will not go into HttpClient?. Again please see the CalDAV4jTutorial

   HttpClient httpClient = createHttpClient();

   // Create the Ticket
   String ticketID = calendarCollection.createTicket(httpClient,
         "MyCalendar.ics", 5, 3600,
         true, true);

The string returned will be the ID of the created ticket.

Using Tickets

Once you have the tickets ID you can begin using the ticket. This is an example of getting your calendar:
   httpClient.setTicket(ticketID);
   Calendar calendar = calendarCollection.getCalendarByPath(httpClient,
            "MyCalendar.ics");

Note: The default way to use the ticket is in the request header and not in the URI. In order to change this, before the getCalendarByPath method is called:

   // Default is HttpClient.TICKET_LOCATION.HEADERS
   http.setTicketLocation(HttpClient.TICKET_LOCATION.QUERY_PARAM);

Deleting Tickets

Now that you have used the ticket, you can Delete it:

   calendarCollection.deleteTicket(httpClient, "MyCalendar.ics", ticketID);

Querying Tickets

If you want to query all the valid tickets on a resource you can use getTickets. Note: any tickets the user does not have access to will not be returned.

   List<String> ticketIDs = calendarCollection.getTickets(httpClient,
            "MyCalendar.ics");

-- EdBindl - 29 Jun 2006

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.