Class ::caldav::CalDAV

::caldav::CalDAV[i] create ... \
           [ -url (default "/caldav/") ]

Defined in

Class Relations

  • class: ::xotcl::Class[i]
  • superclass: ::xo::ProtocolHandler[i]

Methods (to be applied on instances)

  • GET (scripted, public)

     <instance of caldav::CalDAV[i]> GET

    GET calendar content in ical syntax. The method can either return an individual calendar item based on a cal_uid or a full calendar (may be an aggregated calendar) depending on the syntax of the URL. - individual cal_items (must end with .ics) /caldav/calendar/12872/12907.ics - complete calendar /caldav/calendar /caldav/calendar?calendar_ids=12872 /caldav/calendar/12872 where the "12872" is a calendar_id and "12907" is the UID of a calendar item.

    Testcases:
    GET
  • PROPFIND (scripted, public)

     <instance of caldav::CalDAV[i]> PROPFIND

    read and answer PROPFIND requests RFC 2518, section 8.1 https://tools.ietf.org/html/rfc4918#page-35

    Testcases:
    PROPFIND_ios, PROPFIND_android, PROPFIND_thunderbird, Thunderbird_subscribe, macOS_subscribe
  • PROPPATCH (scripted)

     <instance of caldav::CalDAV[i]> PROPPATCH

    Testcases:
    Thunderbird_subscribe, caldav, macOS_subscribe
  • PUT (scripted, public)

     <instance of caldav::CalDAV[i]> PUT

    UPDATE (SAVE?) a single calendar item denoted by a uid of a calendar item.

    Testcases:
    Thunderbird_add_event, macOS_add_location, macOS_add_event
  • REPORT (scripted, public)

     <instance of caldav::CalDAV[i]> REPORT

    CalDAV REPORT Method, see RFC 3253, section 3.6

    Testcases:
    REPORT_ios, Thunderbird_subscribe, Thunderbird_add_event, macOS_subscribe
  • calcCtag (scripted, public)

     <instance of caldav::CalDAV[i]> calcCtag user_id

    Generate a ctag (collection entity tag). The calendar ctag is like a resource etag; it changes when anything in the (joint) calendar has changed. This implementation returns a md5 value from the sum of the cal_item_ids, which changes when an item is deleted or a new community is joined, and the latest modification date of the cal_item_ids.

    Parameters:
    user_id (required)

    Testcases:
    macOS_subscribe
  • calendar-multiget (scripted, public)

     <instance of caldav::CalDAV[i]> calendar-multiget prop

    calendar-multiget REPORT is used to retrieve specific calendar object resources from within a collection, if the Request- URI is a collection, or to retrieve a specific calendar object resource, if the Request-URI is a calendar object resource. This report is similar to the CALDAV:calendar-query REPORT (see Section 7.8), except that it takes a list of DAV:href elements, instead of a CALDAV:filter element, to determine which calendar object resources to return. https://icalendar.org/CalDAV-Access-RFC-4791/7-9-caldav-calendar-multiget-report.html

    Parameters:
    prop (required)

    Testcases:
    REPORT_ios
  • calendar-query (scripted, public)

     <instance of caldav::CalDAV[i]> calendar-query root

    Client wants the complete calendar Open: restrict to types

    Parameters:
    root (required)

    Testcases:
    REPORT_ios
  • generateResponse (scripted, public)

     <instance of caldav::CalDAV[i]> generateResponse \
        -queryType queryType  [ -user_id user_id ] \
        [ -calendar_id calendar_id ] [ -cal_item cal_item ] node

    Return a <response> ... </response> entry for the URL specified in the ${:url} and for the query attributes specified in the tdom node. The attributes user_id, calendar_id, or cal_item have to be set according to the queryType.

    Switches:
    -queryType (required)
    is an abstraction of the query url and can be "calendar", "resource", "top", or "principal"
    -user_id (optional)
    -calendar_id (optional)
    -cal_item (optional)
    Parameters:
    node (required)

    Testcases:
    PROPFIND_ios, PROPFIND_android, Thunderbird_subscribe, macOS_subscribe
  • property=cs-getctag (scripted)

     <instance of caldav::CalDAV[i]> property=cs-getctag

    Testcases:
    PROPFIND_ios, caldav, PROPFIND_android, PROPFIND_thunderbird
  • returnXMLelement (scripted, public)

     <instance of caldav::CalDAV[i]> returnXMLelement resource node

    Return a pair of values indicating success and the value to be returned. While the property=* methods above return just values, this method wraps it into XML elements for returning it.

    Parameters:
    resource (required)
    node (required)

    Testcases:
    PROPFIND_ios, PROPFIND_android, Thunderbird_subscribe, macOS_subscribe
  • sync-collection (scripted, public)

     <instance of caldav::CalDAV[i]> sync-collection root extraXMLvar

    sync

    Parameters:
    root (required)
    extraXMLvar (required)

    Testcases:
    REPORT_ios