caldav::CalDAV instproc REPORT (public)

 <instance of caldav::CalDAV[i]> 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 delete
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: