%3 ::xo::dav ::xo::dav ::xo::ProtocolHandler ::xo::ProtocolHandler GET OPTIONS PROPFIND PUT get_package_id handle_request http_date initialize log multiStatus multiStatusError multiStatusResponse preauth register set_user_id tcl_time_to_http_date tcl_time_to_iso8601 unknown ::xo::dav->::xo::ProtocolHandler ::caldav::CalDAV ::caldav::CalDAV DELETE GET OPTIONS PROPFIND PROPPATCH PUT REPORT aggregatedCalendarName calcCtag calcSyncToken calendar-multiget calendar-query calendarName calendar_ids debug generateResponse getETagByUID get_uid_from_href getcontent item_update parseRequest property=c-calendar-data property=c-calendar-description property=c-calendar-home-set property=c-calendar-timezone property=c-calendar-user-address-set property=c-supported-calendar-component-set property=cs-getctag property=d-current-user-principal property=d-current-user-privilege-set property=d-displayname property=d-getcontenttype property=d-getetag property=d-owner property=d-principal-URL property=d-principal-address property=d-principal-collection-set property=d-resourcetype property=d-supported-report-set property=d-sync-token property=ical-calendar-color property=ical-calendar-order request_error response returnXMLelement sync-collection unknown ::caldav::CalDAV->::xo::ProtocolHandler ::xotcl::Object ::xotcl::Object → getExitHandler → setExitHandler → unsetExitHandler __object_configureparameter __timediff abstract ad_doc ad_forward ad_proc asHTML check class db_0or1row db_1row debug destroy_on_cleanup ds extractConfigureArg filter filtersearch forward hasclass init invar isclass ismetaclass ismixin isobject istype log method mixin mset msg parametercmd proc procsearch qn self serialize set_instance_vars_defaults unknown vwait www-show-object ::xo::ProtocolHandler->::xotcl::Object

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)

  • DELETE (scripted)

  • 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
  • OPTIONS (scripted)

  • 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
  • aggregatedCalendarName (scripted)

  • 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
  • calcSyncToken (scripted)

  • 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
  • calendarName (scripted)

  • calendar_ids (scripted)

  • debug (scripted)

  • 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
  • getETagByUID (scripted)

  • get_uid_from_href (scripted)

  • getcontent (scripted)

  • item_update (scripted)

  • parseRequest (scripted)

  • property=c-calendar-data (scripted)

  • property=c-calendar-description (scripted)

  • property=c-calendar-home-set (scripted)

  • property=c-calendar-timezone (scripted)

  • property=c-calendar-user-address-set (scripted)

  • property=c-supported-calendar-component-set (scripted)

  • property=cs-getctag (scripted)

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

    Testcases:
    PROPFIND_ios, caldav, PROPFIND_android, PROPFIND_thunderbird
  • property=d-current-user-principal (scripted)

  • property=d-current-user-privilege-set (scripted)

  • property=d-displayname (scripted)

  • property=d-getcontenttype (scripted)

  • property=d-getetag (scripted)

  • property=d-owner (scripted)

  • property=d-principal-URL (scripted)

  • property=d-principal-address (scripted)

  • property=d-principal-collection-set (scripted)

  • property=d-resourcetype (scripted)

  • property=d-supported-report-set (scripted)

  • property=d-sync-token (scripted)

  • property=ical-calendar-color (scripted)

  • property=ical-calendar-order (scripted)

  • request_error (scripted)

  • response (scripted)

  • 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
  • unknown (scripted)

  • url (setter)

Variables

::caldav::CalDAV set __default_metaclass ::xotcl::Class
::caldav::CalDAV set __default_superclass ::xotcl::Object