caldav::CalDAV instproc REPORT (public)
<instance of caldav::CalDAV> REPORT
Defined in /var/www/openacs.org/packages/caldav/tcl/caldav-procs.tcl
CalDAV REPORT Method, see RFC 3253, section 3.6
- Testcases:
- REPORT_ios, Thunderbird_subscribe, Thunderbird_add_event, macOS_subscribe
Source code: set content [:getcontent] set doc [:parseRequest $content] if {$doc eq ""} { return [:request_error "empty reports are not allowed"] } # # Currently, three reports are supported # # - calendar-multiget # - calendar-query # - sync-collection # $doc documentElement root set responses_xml "" # TODO: we assume, we are working on the aggregated calendar :calendar_ids "" if {[$root selectNodes -namespaces {c urn:ietf:params:xml:ns:caldav} "//c:calendar-multiget"] ne ""} { set ics_set [:calendar-multiget [$root firstChild]] } elseif {[$root selectNodes -namespaces {c urn:ietf:params:xml:ns:caldav} "//c:calendar-query"] ne ""} { set ics_set [:calendar-query $root] } elseif {[$root selectNodes -namespaces {d DAV:} "//d:sync-collection"] ne ""} { set ics_set [:sync-collection $root responses_xml] } else { #unknown type requested, aborting $doc delete return [:request_error "request type unknown [$root localName]"] } set props [$root selectNodes -namespaces {d DAV:} "d:prop"] foreach ics $ics_set { append responses_xml [:generateResponse -queryType resource -cal_item $ics $props] } append xml {<?xml version="1.0" encoding="utf-8"?>} \n {<d:multistatus xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns">} \n $responses_xml \n </d:multistatus> :response 207 text/xml $xml $doc deleteXQL Not present: Generic, PostgreSQL, Oracle