mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-09-20 06:09:32 +00:00
Merge branch 'master' of git://repo.or.cz/davical into sched
This commit is contained in:
commit
c62af7c7a4
@ -110,7 +110,6 @@ switch ( $request->method ) {
|
|||||||
case 'HEAD': include('caldav-GET.php'); break;
|
case 'HEAD': include('caldav-GET.php'); break;
|
||||||
case 'PROPPATCH': include('caldav-PROPPATCH.php'); break;
|
case 'PROPPATCH': include('caldav-PROPPATCH.php'); break;
|
||||||
case 'PUT':
|
case 'PUT':
|
||||||
$request->CoerceContentType();
|
|
||||||
switch( $request->content_type ) {
|
switch( $request->content_type ) {
|
||||||
case 'text/calendar':
|
case 'text/calendar':
|
||||||
include('caldav-PUT-vcalendar.php');
|
include('caldav-PUT-vcalendar.php');
|
||||||
|
|||||||
@ -14,7 +14,7 @@ $session = new PublicSession();
|
|||||||
|
|
||||||
param_to_global('action','{[a-z_-]+}');
|
param_to_global('action','{[a-z_-]+}');
|
||||||
param_to_global('format','{[a-z]+/[a-zA-Z0-9.+_-]+}');
|
param_to_global('format','{[a-z]+/[a-zA-Z0-9.+_-]+}');
|
||||||
param_to_global('changesince');
|
param_to_global('changedsince','{.*}','changesince');
|
||||||
param_to_global('start');
|
param_to_global('start');
|
||||||
param_to_global('end');
|
param_to_global('end');
|
||||||
param_to_global('lang');
|
param_to_global('lang');
|
||||||
@ -26,7 +26,7 @@ $request = new CalDAVRequest();
|
|||||||
|
|
||||||
$code_file = sprintf( 'tz/%s.php', $action );
|
$code_file = sprintf( 'tz/%s.php', $action );
|
||||||
if ( ! @include_once( $code_file ) ) {
|
if ( ! @include_once( $code_file ) ) {
|
||||||
$request->PreconditionFailed(400, "supported-action", 'The action "'.$_GET['action'].'" is not understood.' );
|
$request->PreconditionFailed(400, "supported-action", 'The action "'.$action.'" is not understood.', 'urn:ietf:params:xml:ns:timezone-service' );
|
||||||
}
|
}
|
||||||
|
|
||||||
$request->DoResponse( 500, translate("The application failed to understand that request.") );
|
$request->DoResponse( 500, translate("The application failed to understand that request.") );
|
||||||
|
|||||||
@ -17,11 +17,16 @@ if ( ! isset ( $request ) ) {
|
|||||||
switch ( $request->path ) {
|
switch ( $request->path ) {
|
||||||
case '/.well-known/caldav':
|
case '/.well-known/caldav':
|
||||||
case '/.well-known/carddav':
|
case '/.well-known/carddav':
|
||||||
header('Location: ' . ConstructURL('/',true) );
|
header('Location: ' . $c->protocol_server_port . ConstructURL('/',true) );
|
||||||
$request->DoResponse(301); // Moved permanently
|
$request->DoResponse(301); // Moved permanently
|
||||||
// does not return.
|
// does not return.
|
||||||
case '/.well-known/timezone':
|
case '/.well-known/timezone':
|
||||||
header('Location: ' . ConstructURL('/tz.php',true) );
|
$parameters = '';
|
||||||
|
foreach( $_GET as $k => $v ) {
|
||||||
|
$parameters .= ($parameters == '' ? '?' : '&' );
|
||||||
|
$parameters .= $k.'='.rawurlencode($v);
|
||||||
|
}
|
||||||
|
header('Location: ' . $c->protocol_server_port . str_replace('/caldav.php', '', ConstructURL('/tz.php',true)).$parameters );
|
||||||
$request->DoResponse(301); // Moved permanently
|
$request->DoResponse(301); // Moved permanently
|
||||||
// does not return.
|
// does not return.
|
||||||
}
|
}
|
||||||
|
|||||||
@ -115,7 +115,33 @@ class CalDAVRequest
|
|||||||
if ( !isset($this->options['allow_by_email']) ) $this->options['allow_by_email'] = false;
|
if ( !isset($this->options['allow_by_email']) ) $this->options['allow_by_email'] = false;
|
||||||
|
|
||||||
if ( !isset($c->raw_post) ) $c->raw_post = file_get_contents( 'php://input');
|
if ( !isset($c->raw_post) ) $c->raw_post = file_get_contents( 'php://input');
|
||||||
$this->raw_post = $c->raw_post;
|
if ( isset($_SERVER['HTTP_CONTENT_ENCODING']) ) {
|
||||||
|
@dbg_error_log('caldav', 'Content-Encoding: %s', $_SERVER['HTTP_CONTENT_ENCODING'] );
|
||||||
|
switch( $_SERVER['HTTP_CONTENT_ENCODING'] ) {
|
||||||
|
case 'gzip':
|
||||||
|
$this->raw_post = gzdecode($c->raw_post);
|
||||||
|
break;
|
||||||
|
case 'deflate':
|
||||||
|
$this->raw_post = gzinflate($c->raw_post);
|
||||||
|
break;
|
||||||
|
case 'compress':
|
||||||
|
$this->raw_post = gzuncompress($c->raw_post);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if ( ! ini_get('open_basedir') && (isset($c->dbg['ALL']) || isset($c->dbg['caldav'])) ) {
|
||||||
|
$fh = fopen('/tmp/raw_post','w');
|
||||||
|
if ( $fh ) {
|
||||||
|
fwrite($fh,$request->raw_post);
|
||||||
|
fclose($fh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->PreconditionFailed(402, 'content-encoding', 'This server does not presently support content encoded with "%s"', $_SERVER['HTTP_CONTENT_ENCODING']);
|
||||||
|
}
|
||||||
|
$c->raw_post = $this->raw_post;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->raw_post = $c->raw_post;
|
||||||
|
}
|
||||||
|
|
||||||
if ( isset($debugging) && isset($_GET['method']) ) {
|
if ( isset($debugging) && isset($_GET['method']) ) {
|
||||||
$_SERVER['REQUEST_METHOD'] = $_GET['method'];
|
$_SERVER['REQUEST_METHOD'] = $_GET['method'];
|
||||||
@ -136,14 +162,12 @@ class CalDAVRequest
|
|||||||
$this->content_type = 'text/xml';
|
$this->content_type = 'text/xml';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( $this->method == 'PUT' || $this->method == 'POST' ) {
|
||||||
|
$this->CoerceContentType();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$this->user_agent = ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Probably Mulberry"));
|
$this->user_agent = ((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Probably Mulberry"));
|
||||||
|
|
||||||
if ( isset($_SERVER['HTTP_CONTENT_ENCODING']) ) {
|
|
||||||
@dbg_error_log('caldav', 'Content-Encoding: %s', $_SERVER['HTTP_CONTENT_ENCODING']);
|
|
||||||
$this->PreconditionFailed(402, 'content-encoding', 'This server does not presently support encoded content.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A variety of requests may set the "Depth" header to control recursion
|
* A variety of requests may set the "Depth" header to control recursion
|
||||||
*/
|
*/
|
||||||
@ -819,7 +843,11 @@ EOSQL;
|
|||||||
if ( isset($this->content_type) ) {
|
if ( isset($this->content_type) ) {
|
||||||
$type = explode( '/', $this->content_type, 2);
|
$type = explode( '/', $this->content_type, 2);
|
||||||
/** @todo: Perhaps we should look at the target collection type, also. */
|
/** @todo: Perhaps we should look at the target collection type, also. */
|
||||||
if ( $type[0] == 'text' ) return;
|
if ( $type[0] == 'text' ) {
|
||||||
|
if ( !empty($type[2]) && ($type[2] == 'vcard' || $type[2] == 'calendar' || $type[2] == 'x-vcard') ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Null (or peculiar) content-type supplied so we have to try and work it out... */
|
/** Null (or peculiar) content-type supplied so we have to try and work it out... */
|
||||||
@ -845,7 +873,7 @@ EOSQL;
|
|||||||
dbg_error_log( 'LOG NOTICE', 'Unusual content-type of "%s" and first word of content is "%s"',
|
dbg_error_log( 'LOG NOTICE', 'Unusual content-type of "%s" and first word of content is "%s"',
|
||||||
(isset($this->content_type)?$this->content_type:'(null)'), $first_word );
|
(isset($this->content_type)?$this->content_type:'(null)'), $first_word );
|
||||||
}
|
}
|
||||||
$this->content_type = 'text/plain';
|
if ( empty($this->content_type) ) $this->content_type = 'text/plain';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1091,11 +1119,11 @@ EOSQL;
|
|||||||
* @param string $precondition The namespaced precondition tag.
|
* @param string $precondition The namespaced precondition tag.
|
||||||
* @param string $explanation An optional text explanation for the failure.
|
* @param string $explanation An optional text explanation for the failure.
|
||||||
*/
|
*/
|
||||||
function PreconditionFailed( $status, $precondition, $explanation = '') {
|
function PreconditionFailed( $status, $precondition, $explanation = '', $xmlns='DAV:') {
|
||||||
$xmldoc = sprintf('<?xml version="1.0" encoding="utf-8" ?>
|
$xmldoc = sprintf('<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<error xmlns="DAV:">
|
<error xmlns="%s">
|
||||||
<%s/>%s
|
<%s/>%s
|
||||||
</error>', str_replace('DAV::', '', $precondition), $explanation );
|
</error>', $xmlns, str_replace($xmlns.':', '', $precondition), $explanation );
|
||||||
|
|
||||||
$this->DoResponse( $status, $xmldoc, 'text/xml; charset="utf-8"' );
|
$this->DoResponse( $status, $xmldoc, 'text/xml; charset="utf-8"' );
|
||||||
exit(0); // Unecessary, but might clarify things
|
exit(0); // Unecessary, but might clarify things
|
||||||
|
|||||||
153
inc/RRule-v2.php
153
inc/RRule-v2.php
@ -513,6 +513,56 @@ class RepeatRuleDateTime extends DateTime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class is used to hold a pair of dates defining a range. The range may be open-ended by including
|
||||||
|
* a null for one end or the other, or both.
|
||||||
|
*
|
||||||
|
* @author Andrew McMillan <andrew@mcmillan.net.nz>
|
||||||
|
*/
|
||||||
|
class RepeatRuleDateRange {
|
||||||
|
public $from;
|
||||||
|
public $until;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new RepeatRuleDateRange which will be the range between $date1 and $date2. The earliest of the two
|
||||||
|
* dates will be used as the start of the period, the latest as the end. If one of the dates is null then the order
|
||||||
|
* of the parameters is significant, with the null treated as -infinity if it is first, or +infinity if it is second.
|
||||||
|
* If both parameters are null then the range is from -infinity to +infinity.
|
||||||
|
*
|
||||||
|
* @param RepeatRuleDateTime $date1
|
||||||
|
* @param RepeatRuleDateTime $date2
|
||||||
|
*/
|
||||||
|
function __construct( $date1, $date2 ) {
|
||||||
|
if ( $date1 != null && $date2 != null && $date1 > $date2 ) {
|
||||||
|
$this->from = $date2;
|
||||||
|
$this->until = $date1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->from = $date1;
|
||||||
|
$this->until = $date2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assess whether this range overlaps the supplied range. null values are treated as infinity.
|
||||||
|
* @param RepeatRuleDateRange $other
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
function overlaps( RepeatRuleDateRange $other ) {
|
||||||
|
if ( ($this->until == null && $this->from == null) || ($other->until == null && $other->from == null ) ) return true;
|
||||||
|
if ( $this->until == null && $other->until == null ) return true;
|
||||||
|
if ( $this->from == null && $other->from == null ) return true;
|
||||||
|
|
||||||
|
if ( $this->until == null ) return ($other->until > $this->from);
|
||||||
|
if ( $this->from == null ) return ($other->from < $this->until);
|
||||||
|
if ( $other->until == null ) return ($this->until > $other->from);
|
||||||
|
if ( $other->from == null ) return ($thi->from < $other->until);
|
||||||
|
|
||||||
|
return !( $this->until < $other->from || $this->from > $other->until );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is an implementation of RRULE parsing and expansion, as per RFC5545. It should be reasonably
|
* This class is an implementation of RRULE parsing and expansion, as per RFC5545. It should be reasonably
|
||||||
* complete, except that it does not handle changing the WKST - there may be a few errors in unusual rules
|
* complete, except that it does not handle changing the WKST - there may be a few errors in unusual rules
|
||||||
@ -594,6 +644,15 @@ class RepeatRule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this repeat rule has an UNTIL= or COUNT= then we can know it will end. Eventually.
|
||||||
|
* @return boolean Whether or not one of these properties is present.
|
||||||
|
*/
|
||||||
|
public function hasLimitedOccurrences() {
|
||||||
|
return ( isset($this->count) || isset($this->until) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function set_timezone( $tzstring ) {
|
public function set_timezone( $tzstring ) {
|
||||||
$this->base->setTimezone(new DateTimeZone($tzstring));
|
$this->base->setTimezone(new DateTimeZone($tzstring));
|
||||||
}
|
}
|
||||||
@ -606,7 +665,7 @@ class RepeatRule {
|
|||||||
$this->finished = false;
|
$this->finished = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function rewind() {
|
public function rewind() {
|
||||||
$this->position = -1;
|
$this->position = -1;
|
||||||
}
|
}
|
||||||
@ -1019,6 +1078,7 @@ class RepeatRule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
require_once("vComponent.php");
|
require_once("vComponent.php");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1104,11 +1164,13 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
|
|||||||
global $c;
|
global $c;
|
||||||
$components = $vResource->GetComponents();
|
$components = $vResource->GetComponents();
|
||||||
|
|
||||||
if ( !isset($range_start) ) { $range_start = new RepeatRuleDateTime(); $range_start->modify('-6 weeks'); }
|
if ( empty($range_start) ) { $range_start = new RepeatRuleDateTime(); $range_start->modify('-6 weeks'); }
|
||||||
if ( !isset($range_end) ) { $range_end = clone($range_start); $range_end->modify('+6 months'); }
|
if ( empty($range_end) ) {
|
||||||
|
$range_end = clone($range_start);
|
||||||
|
$range_end->modify('+6 months');
|
||||||
|
}
|
||||||
|
|
||||||
$new_components = array();
|
$new_components = array();
|
||||||
$result_limit = 1000;
|
|
||||||
$instances = array();
|
$instances = array();
|
||||||
$expand = false;
|
$expand = false;
|
||||||
$dtstart = null;
|
$dtstart = null;
|
||||||
@ -1304,3 +1366,86 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
|
|||||||
|
|
||||||
return $vResource;
|
return $vResource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a RepeatRuleDateRange from the earliest start to the latest end of the event.
|
||||||
|
*
|
||||||
|
* @todo: This should probably be made part of the VCalendar object when we move the RRule.php into AWL.
|
||||||
|
*
|
||||||
|
* @param object $vResource A vComponent which is a VCALENDAR containing components needing expansion
|
||||||
|
* @return RepeatRuleDateRange Representing the range of time covered by the event.
|
||||||
|
*/
|
||||||
|
function getVCalendarRange( $vResource ) {
|
||||||
|
global $c;
|
||||||
|
$components = $vResource->GetComponents();
|
||||||
|
|
||||||
|
$dtstart = null;
|
||||||
|
$duration = null;
|
||||||
|
$earliest_start = null;
|
||||||
|
$latest_end = null;
|
||||||
|
$has_repeats = false;
|
||||||
|
foreach( $components AS $k => $comp ) {
|
||||||
|
$dtstart_prop = $comp->GetProperty('DTSTART');
|
||||||
|
$dtend_prop = $comp->GetProperty('DTEND');
|
||||||
|
$due_prop = $comp->GetProperty('DUE');
|
||||||
|
|
||||||
|
if ( isset($dtstart_prop) )
|
||||||
|
$dtstart = new RepeatRuleDateTime( $dtstart_prop );
|
||||||
|
else if ( isset($due_prop) )
|
||||||
|
$dtstart = new RepeatRuleDateTime( $due_prop );
|
||||||
|
else if ( isset($dtend_prop) )
|
||||||
|
$dtstart = new RepeatRuleDateTime( $dtend_prop );
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
|
||||||
|
$duration_prop = $comp->GetProperty('DURATION');
|
||||||
|
if ( empty($dtend_prop) ) {
|
||||||
|
if ( empty($duration_prop) ) {
|
||||||
|
$duration = new Rfc5545Duration(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$duration = new Rfc5545Duration($duration_prop->Value());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$dtend = new RepeatRuleDateTime( $dtend_prop );
|
||||||
|
$duration = new Rfc5545Duration($dtend->epoch() - $dtstart->epoch());
|
||||||
|
}
|
||||||
|
|
||||||
|
$rrule = $comp->GetProperty('RRULE');
|
||||||
|
$limited_occurrences = true;
|
||||||
|
if ( isset($rrule) ) {
|
||||||
|
$rule = new RepeatRule($dtstart, $rrule);
|
||||||
|
$limited_occurrences = $rule->hasLimitedOccurrences();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $limited_occurrences ) {
|
||||||
|
$instances = array();
|
||||||
|
$instances[$dtstart->FloatOrUTC()] = $dtstart;
|
||||||
|
if ( !isset($range_end) ) {
|
||||||
|
$range_end = new RepeatRuleDateTime();
|
||||||
|
$range_end->modify('+150 years');
|
||||||
|
}
|
||||||
|
$instances += rrule_expand($dtstart, 'RRULE', $comp, $range_end);
|
||||||
|
$instances += rdate_expand($dtstart, 'RDATE', $comp, $range_end);
|
||||||
|
foreach ( rdate_expand($dtstart, 'EXDATE', $comp, $range_end) AS $k => $v ) {
|
||||||
|
unset($instances[$k]);
|
||||||
|
}
|
||||||
|
$instances = array_keys($instances);
|
||||||
|
asort($instances);
|
||||||
|
$first = new RepeatRuleDateTime($instances[0]);
|
||||||
|
$last = new RepeatRuleDateTime($instances[count($instances)-1]);
|
||||||
|
$last->modify($duration);
|
||||||
|
if ( empty($earliest_start) || $first < $earliest_start ) $earliest_start = $first;
|
||||||
|
if ( empty($latest_end) || $last > $latest_end ) $latest_end = $last;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if ( empty($earliest_start) || $dtstart < $earliest_start ) $earliest_start = $dtstart;
|
||||||
|
$latest_end = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new RepeatRuleDateRange($earliest_start, $latest_end );
|
||||||
|
}
|
||||||
|
|||||||
@ -105,6 +105,9 @@ $lock_opener = $request->FailIfLocked();
|
|||||||
|
|
||||||
if ( $request->method == "LOCK" ) {
|
if ( $request->method == "LOCK" ) {
|
||||||
dbg_error_log( "LOCK", "Attempting to lock resource '%s'", $request->path);
|
dbg_error_log( "LOCK", "Attempting to lock resource '%s'", $request->path);
|
||||||
|
$lock_timeout = (empty($request->timeout) ? 30 : intval($request->timeout) );
|
||||||
|
if ( $lock_timeout < 1 ) $lock_timeout = 30;
|
||||||
|
else if ( $lock_timeout > 300 ) $lock_timeout = 300;
|
||||||
if ( ($lock_token = $request->IsLocked()) ) { // NOTE Assignment in if() is expected here.
|
if ( ($lock_token = $request->IsLocked()) ) { // NOTE Assignment in if() is expected here.
|
||||||
$sql = 'UPDATE locks SET start = current_timestamp WHERE opaquelocktoken = :lock_token';
|
$sql = 'UPDATE locks SET start = current_timestamp WHERE opaquelocktoken = :lock_token';
|
||||||
$params = array( ':lock_token' => $lock_token);
|
$params = array( ':lock_token' => $lock_token);
|
||||||
@ -123,7 +126,7 @@ if ( $request->method == "LOCK" ) {
|
|||||||
':scope' => $lockinfo['scope'],
|
':scope' => $lockinfo['scope'],
|
||||||
':request_depth' => $request->depth,
|
':request_depth' => $request->depth,
|
||||||
':owner' => $lockinfo['owner'],
|
':owner' => $lockinfo['owner'],
|
||||||
':timeout' => $request->timeout.' seconds'
|
':timeout' => $lock_timeout.' seconds'
|
||||||
);
|
);
|
||||||
header( "Lock-Token: <opaquelocktoken:$lock_token>" );
|
header( "Lock-Token: <opaquelocktoken:$lock_token>" );
|
||||||
}
|
}
|
||||||
@ -136,7 +139,7 @@ if ( $request->method == "LOCK" ) {
|
|||||||
new XMLElement( 'lockscope', new XMLElement( $lock_row->scope )),
|
new XMLElement( 'lockscope', new XMLElement( $lock_row->scope )),
|
||||||
new XMLElement( 'depth', $request->GetDepthName() ),
|
new XMLElement( 'depth', $request->GetDepthName() ),
|
||||||
new XMLElement( 'owner', new XMLElement( 'href', $lock_row->owner )),
|
new XMLElement( 'owner', new XMLElement( 'href', $lock_row->owner )),
|
||||||
new XMLElement( 'timeout', 'Second-'.$request->timeout),
|
new XMLElement( 'timeout', 'Second-'.$lock_timeout),
|
||||||
new XMLElement( 'locktoken', new XMLElement( 'href', 'opaquelocktoken:'.$lock_token ))
|
new XMLElement( 'locktoken', new XMLElement( 'href', 'opaquelocktoken:'.$lock_token ))
|
||||||
);
|
);
|
||||||
$response = new XMLElement("lockdiscovery", new XMLElement( "activelock", $activelock), array("xmlns" => "DAV:") );
|
$response = new XMLElement("lockdiscovery", new XMLElement( "activelock", $activelock), array("xmlns" => "DAV:") );
|
||||||
|
|||||||
@ -198,7 +198,7 @@ function get_collection_contents( $depth, $collection, $parent_path = null ) {
|
|||||||
|
|
||||||
$sql = 'SELECT collection.*, principal.*, calendar_item.*, caldav_data.*, ';
|
$sql = 'SELECT collection.*, principal.*, calendar_item.*, caldav_data.*, ';
|
||||||
$sql .= "to_char(coalesce(calendar_item.created, caldav_data.created) at time zone 'GMT',$date_format) AS created, ";
|
$sql .= "to_char(coalesce(calendar_item.created, caldav_data.created) at time zone 'GMT',$date_format) AS created, ";
|
||||||
$sql .= "to_char(last_modified at time zone 'GMT',$date_format) AS modified, ";
|
$sql .= "to_char(coalesce(calendar_item.last_modified, caldav_data.modified) at time zone 'GMT',$date_format) AS modified, ";
|
||||||
$sql .= 'summary AS dav_displayname ';
|
$sql .= 'summary AS dav_displayname ';
|
||||||
$sql .= 'FROM caldav_data LEFT JOIN calendar_item USING( dav_id, user_no, dav_name, collection_id) ';
|
$sql .= 'FROM caldav_data LEFT JOIN calendar_item USING( dav_id, user_no, dav_name, collection_id) ';
|
||||||
$sql .= 'LEFT JOIN collection USING(collection_id,user_no) LEFT JOIN principal USING(user_no) ';
|
$sql .= 'LEFT JOIN collection USING(collection_id,user_no) LEFT JOIN principal USING(user_no) ';
|
||||||
|
|||||||
@ -566,7 +566,11 @@ EOSQL;
|
|||||||
if ( $qry->Exec('PUT',__LINE__,__FILE__) && $qry->rows() == 0 ) {
|
if ( $qry->Exec('PUT',__LINE__,__FILE__) && $qry->rows() == 0 ) {
|
||||||
$params[':olson_name'] = $olson;
|
$params[':olson_name'] = $olson;
|
||||||
$params[':vtimezone'] = (isset($tz) ? $tz->Render() : null );
|
$params[':vtimezone'] = (isset($tz) ? $tz->Render() : null );
|
||||||
$qry->QDo('INSERT INTO timezones (tzid, olson_name, active, vtimezone) VALUES(:tzid,:olson_name,false,:vtimezone)', $params );
|
$params[':last_modified'] = (isset($tz) ? $tz->GetPValue('LAST-MODIFIED') : null );
|
||||||
|
if ( empty($params[':last_modified']) ) {
|
||||||
|
$params[':last_modified'] = gmdate('Ymd\THis\Z');
|
||||||
|
}
|
||||||
|
$qry->QDo('INSERT INTO timezones (tzid, olson_name, active, vtimezone, last_modified) VALUES(:tzid,:olson_name,false,:vtimezone,:last_modified)', $params );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -39,7 +39,7 @@ else {
|
|||||||
if ( ! isset($c->readonly_webdav_collections) || $c->readonly_webdav_collections ) {
|
if ( ! isset($c->readonly_webdav_collections) || $c->readonly_webdav_collections ) {
|
||||||
$request->PreconditionFailed(405,'method-not-allowed',translate('You may not PUT to a collection URL'));
|
$request->PreconditionFailed(405,'method-not-allowed',translate('You may not PUT to a collection URL'));
|
||||||
}
|
}
|
||||||
$request->DoResponse(403,translate('PUT on a collection is only allowed for text/calendar content against a calendar collection'));
|
$request->DoResponse(403,translate('PUT on a collection is only allowed for text/vcard content against an addressbook collection'));
|
||||||
}
|
}
|
||||||
$dest->NeedPrivilege('DAV::write-content');
|
$dest->NeedPrivilege('DAV::write-content');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,9 +87,9 @@ function apply_filter( $filters, $item ) {
|
|||||||
* Process a filter fragment returning an SQL fragment
|
* Process a filter fragment returning an SQL fragment
|
||||||
*/
|
*/
|
||||||
$need_post_filter = false;
|
$need_post_filter = false;
|
||||||
$need_range_filter = false;
|
$range_filter = null;
|
||||||
function SqlFilterFragment( $filter, $components, $property = null, $parameter = null ) {
|
function SqlFilterFragment( $filter, $components, $property = null, $parameter = null ) {
|
||||||
global $need_post_filter, $need_range_filter, $target_collection;
|
global $need_post_filter, $range_filter, $target_collection;
|
||||||
$sql = "";
|
$sql = "";
|
||||||
$params = array();
|
$params = array();
|
||||||
if ( !is_array($filter) ) {
|
if ( !is_array($filter) ) {
|
||||||
@ -135,34 +135,33 @@ function SqlFilterFragment( $filter, $components, $property = null, $parameter =
|
|||||||
|
|
||||||
case 'urn:ietf:params:xml:ns:caldav:time-range':
|
case 'urn:ietf:params:xml:ns:caldav:time-range':
|
||||||
/**
|
/**
|
||||||
* @todo We should probably allow time range queries against other properties, since eventually some client may want to do this.
|
* @todo We should probably allow time range queries against other properties, since
|
||||||
|
* eventually some client may want to do this.
|
||||||
*/
|
*/
|
||||||
$start_column = ($components[sizeof($components)-1] == 'VTODO' ? "due" : 'dtend'); // The column we compare against the START attribute
|
$start_column = ($components[sizeof($components)-1] == 'VTODO' ? "due" : 'dtend'); // The column we compare against the START attribute
|
||||||
$finish_column = 'dtstart'; // The column we compare against the END attribute
|
$finish_column = 'dtstart'; // The column we compare against the END attribute
|
||||||
$start = $v->GetAttribute("start");
|
$start = $v->GetAttribute("start");
|
||||||
$finish = $v->GetAttribute("end");
|
$finish = $v->GetAttribute("end");
|
||||||
// if ( isset($start) || isset($finish) ) {
|
|
||||||
// $sql .= ' AND (rrule_event_overlaps( dtstart, dtend, rrule, :time_range_start, :time_range_end ) OR event_has_exceptions(caldav_data.caldav_data) ) ';
|
|
||||||
// $params[':time_range_start'] = $start;
|
|
||||||
// $params[':time_range_end'] = $finish;
|
|
||||||
// }
|
|
||||||
$start_sql = $finish_sql = '';
|
$start_sql = $finish_sql = '';
|
||||||
if ( isset($start) ) {
|
if ( isset($start) ) {
|
||||||
$params[':time_range_start'] = $start;
|
$params[':time_range_start'] = $start;
|
||||||
$start_sql .= ' ((dtend IS NULL AND dtstart > :time_range_start) OR dtend > :time_range_start) ';
|
$start_sql .= ' (('.$start_column.' IS NULL AND '.$finish_column.' > :time_range_start) OR '.$start_column.' > :time_range_start) ';
|
||||||
}
|
}
|
||||||
if ( isset($finish) ) {
|
if ( isset($finish) ) {
|
||||||
$params[':time_range_end'] = $finish;
|
$params[':time_range_end'] = $finish;
|
||||||
$finish_sql = ' dtstart < :time_range_end ';
|
$finish_sql = ' '.$finish_column.' < :time_range_end ';
|
||||||
}
|
}
|
||||||
if ( isset($start) || isset($finish) ) {
|
if ( isset($start) || isset($finish) ) {
|
||||||
$sql .= ' AND (rrule IS NOT NULL OR dtstart IS NULL OR (';
|
$sql .= ' AND (rrule IS NOT NULL OR '.$finish_column.' IS NULL OR (';
|
||||||
if ( isset($start) ) $sql .= $start_sql;
|
if ( isset($start) ) $sql .= $start_sql;
|
||||||
if ( isset($start) && isset($finish) ) $sql .= ' AND ';
|
if ( isset($start) && isset($finish) ) $sql .= ' AND ';
|
||||||
if ( isset($finish) ) $sql .= $finish_sql;
|
if ( isset($finish) ) $sql .= $finish_sql;
|
||||||
$sql .= '))';
|
$sql .= '))';
|
||||||
}
|
}
|
||||||
$need_range_filter = array(new RepeatRuleDateTime($start),new RepeatRuleDateTime($finish));
|
@dbg_error_log('calquery', 'filter-sql: %s', $sql);
|
||||||
|
@dbg_error_log('calquery', 'time-range-start: %s, time-range-end: %s, ', $params[':time_range_start'], $params[':time_range_end']);
|
||||||
|
$range_filter = new RepeatRuleDateRange((empty($start) ? null : new RepeatRuleDateTime($start)),
|
||||||
|
(empty($finish)? null : new RepeatRuleDateTime($finish)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'urn:ietf:params:xml:ns:caldav:text-match':
|
case 'urn:ietf:params:xml:ns:caldav:text-match':
|
||||||
@ -346,10 +345,12 @@ if ( $qry->Exec("calquery",__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
|||||||
if ( $expanded->ComponentCount() == 0 ) continue;
|
if ( $expanded->ComponentCount() == 0 ) continue;
|
||||||
if ( $need_expansion ) $calendar_object->caldav_data = $expanded->Render();
|
if ( $need_expansion ) $calendar_object->caldav_data = $expanded->Render();
|
||||||
}
|
}
|
||||||
else if ( $need_range_filter ) {
|
else if ( isset($range_filter) ) {
|
||||||
$vResource = new vComponent($calendar_object->caldav_data);
|
$vResource = new vComponent($calendar_object->caldav_data);
|
||||||
$expanded = expand_event_instances($vResource, $need_range_filter[0], $need_range_filter[1]);
|
$expanded = getVCalendarRange($vResource);
|
||||||
if ( $expanded->ComponentCount() == 0 ) continue;
|
dbg_error_log('calquery', 'Expanded to %s:%s which might overlap %s:%s',
|
||||||
|
$expanded->from, $expanded->until, $range_filter->from, $range_filter->until );
|
||||||
|
if ( !$expanded->overlaps($range_filter) ) continue;
|
||||||
}
|
}
|
||||||
$responses[] = calendar_to_xml( $properties, $calendar_object );
|
$responses[] = calendar_to_xml( $properties, $calendar_object );
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,21 +14,21 @@ require_once('RRule-v2.php');
|
|||||||
|
|
||||||
if ( empty($format) ) $format = 'text/calendar';
|
if ( empty($format) ) $format = 'text/calendar';
|
||||||
if ( $format != 'text/calendar' ) {
|
if ( $format != 'text/calendar' ) {
|
||||||
$request->PreconditionFailed(403, 'supported-format', 'This server currently only supports text/calendar format.');
|
$request->PreconditionFailed(403, 'supported-format', 'This server currently only supports text/calendar format.', 'urn:ietf:params:xml:ns:timezone-service' );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( empty($start) ) $start = sprintf( '%04d-01-01', date('Y'));
|
if ( empty($start) ) $start = sprintf( '%04d-01-01', date('Y'));
|
||||||
if ( empty($end) ) $end = sprintf( '%04d-12-31', date('Y') + 10);
|
if ( empty($end) ) $end = sprintf( '%04d-12-31', date('Y') + 10);
|
||||||
|
|
||||||
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
||||||
$sql .= 'to_char(last_modified AT TIME ZONE \'UTC\',\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
$sql .= 'to_char(last_modified,\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
||||||
$sql .= 'FROM timezones WHERE tzid=:tzid';
|
$sql .= 'FROM timezones WHERE tzid=:tzid';
|
||||||
$params = array( ':tzid' => $tzid );
|
$params = array( ':tzid' => $tzid );
|
||||||
$qry = new AwlQuery($sql,$params);
|
$qry = new AwlQuery($sql,$params);
|
||||||
if ( !$qry->Exec() ) exit(1);
|
if ( !$qry->Exec() ) exit(1);
|
||||||
if ( $qry->rows() < 1 ) {
|
if ( $qry->rows() < 1 ) {
|
||||||
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
||||||
$sql .= 'to_char(last_modified AT TIME ZONE \'UTC\',\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
$sql .= 'to_char(last_modified,\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
||||||
$sql .= 'FROM timezones JOIN tz_aliases USING(our_tzno) WHERE tzalias=:tzid';
|
$sql .= 'FROM timezones JOIN tz_aliases USING(our_tzno) WHERE tzalias=:tzid';
|
||||||
if ( !$qry->Exec() ) exit(1);
|
if ( !$qry->Exec() ) exit(1);
|
||||||
if ( $qry->rows() < 1 ) $request->DoResponse(404);
|
if ( $qry->rows() < 1 ) $request->DoResponse(404);
|
||||||
@ -163,7 +163,14 @@ $vtz = new vCalendar($tz->vtimezone);
|
|||||||
|
|
||||||
$response = new XMLDocument(array("urn:ietf:params:xml:ns:timezone-service" => ""));
|
$response = new XMLDocument(array("urn:ietf:params:xml:ns:timezone-service" => ""));
|
||||||
$timezones = $response->NewXMLElement('urn:ietf:params:xml:ns:timezone-service:timezones');
|
$timezones = $response->NewXMLElement('urn:ietf:params:xml:ns:timezone-service:timezones');
|
||||||
$timezones->NewElement('dtstamp', gmdate('Y-m-d\TH:i:s\Z'));
|
$qry = new AwlQuery('SELECT to_char(max(last_modified),\'YYYY-MM-DD\"T\"HH24:MI:SS"Z"\') AS dtstamp FROM timezones');
|
||||||
|
if ( $qry->Exec('tz/list',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||||
|
$row = $qry->Fetch();
|
||||||
|
$timezones->NewElement('dtstamp', $row->dtstamp);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$timezones->NewElement('dtstamp', gmdate('Y-m-d\TH:i:s\Z'));
|
||||||
|
}
|
||||||
|
|
||||||
$from = new RepeatRuleDateTime($start);
|
$from = new RepeatRuleDateTime($start);
|
||||||
$until = new RepeatRuleDateTime($end);
|
$until = new RepeatRuleDateTime($end);
|
||||||
|
|||||||
@ -13,18 +13,18 @@ require_once('vCalendar.php');
|
|||||||
|
|
||||||
if ( empty($format) ) $format = 'text/calendar';
|
if ( empty($format) ) $format = 'text/calendar';
|
||||||
if ( $format != 'text/calendar' ) {
|
if ( $format != 'text/calendar' ) {
|
||||||
$request->PreconditionFailed(403, 'supported-format', 'This server currently only supports text/calendar format.');
|
$request->PreconditionFailed(403, 'supported-format', 'This server currently only supports text/calendar format.', 'urn:ietf:params:xml:ns:timezone-service');
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
||||||
$sql .= 'to_char(last_modified AT TIME ZONE \'UTC\',\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
$sql .= 'to_char(last_modified,\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
||||||
$sql .= 'FROM timezones WHERE tzid=:tzid';
|
$sql .= 'FROM timezones WHERE tzid=:tzid';
|
||||||
$params = array( ':tzid' => $tzid );
|
$params = array( ':tzid' => $tzid );
|
||||||
$qry = new AwlQuery($sql,$params);
|
$qry = new AwlQuery($sql,$params);
|
||||||
if ( !$qry->Exec() ) exit(1);
|
if ( !$qry->Exec() ) exit(1);
|
||||||
if ( $qry->rows() < 1 ) {
|
if ( $qry->rows() < 1 ) {
|
||||||
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
$sql = 'SELECT our_tzno, tzid, active, olson_name, vtimezone, etag, ';
|
||||||
$sql .= 'to_char(last_modified AT TIME ZONE \'UTC\',\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
$sql .= 'to_char(last_modified,\'Dy, DD Mon IYYY HH24:MI:SS "GMT"\') AS last_modified ';
|
||||||
$sql .= 'FROM timezones JOIN tz_aliases USING(our_tzno) WHERE tzalias=:tzid';
|
$sql .= 'FROM timezones JOIN tz_aliases USING(our_tzno) WHERE tzalias=:tzid';
|
||||||
if ( !$qry->Exec() ) exit(1);
|
if ( !$qry->Exec() ) exit(1);
|
||||||
if ( $qry->rows() < 1 ) $request->DoResponse(404);
|
if ( $qry->rows() < 1 ) $request->DoResponse(404);
|
||||||
@ -44,8 +44,9 @@ if ( $qry->QDo('SELECT * FROM tz_localnames WHERE our_tzno = :our_tzno', array('
|
|||||||
}
|
}
|
||||||
|
|
||||||
header( 'ETag: "'.$tz->etag.'"' );
|
header( 'ETag: "'.$tz->etag.'"' );
|
||||||
header( 'Last-Modified', $tz->last_modified );
|
header( 'Last-Modified: '. $tz->last_modified );
|
||||||
|
header( 'Content-Disposition: Attachment; Filename="'.str_replace('/','-',$tzid . '.ics"' ));
|
||||||
|
|
||||||
$request->DoResponse(200, $vtz->Render(), 'text/calendar');
|
$request->DoResponse(200, $vtz->Render(), 'text/calendar; charset=UTF-8');
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
@ -13,9 +13,16 @@ require_once('vComponent.php');
|
|||||||
|
|
||||||
$response = new XMLDocument( array("urn:ietf:params:xml:ns:timezone-service" => "") );
|
$response = new XMLDocument( array("urn:ietf:params:xml:ns:timezone-service" => "") );
|
||||||
$tzlist = $response->NewXMLElement('timezone-list');
|
$tzlist = $response->NewXMLElement('timezone-list');
|
||||||
$tzlist->NewElement('dtstamp', gmdate('Y-m-d\TH:i:s\Z'));
|
$qry = new AwlQuery('SELECT to_char(max(last_modified),\'YYYY-MM-DD\"T\"HH24:MI:SS"Z"\') AS dtstamp FROM timezones');
|
||||||
|
if ( $qry->Exec('tz/list',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||||
|
$row = $qry->Fetch();
|
||||||
|
$tzlist->NewElement('dtstamp', $row->dtstamp);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$tzlist->NewElement('dtstamp', gmdate('Y-m-d\TH:i:s\Z'));
|
||||||
|
}
|
||||||
|
|
||||||
$sql = 'SELECT our_tzno, tzid, active, to_char(last_modified AT TIME ZONE \'UTC\',\'YYYY-MM-DD\"T\"HH24:MI:SS"Z"\') AS last_modified, olson_name, vtimezone FROM timezones';
|
$sql = 'SELECT our_tzno, tzid, active, to_char(last_modified,\'YYYY-MM-DD\"T\"HH24:MI:SS"Z"\') AS last_modified, olson_name, vtimezone FROM timezones';
|
||||||
$params = array();
|
$params = array();
|
||||||
$where = '';
|
$where = '';
|
||||||
if ( $returnall !== true ) {
|
if ( $returnall !== true ) {
|
||||||
@ -23,9 +30,14 @@ if ( $returnall !== true ) {
|
|||||||
}
|
}
|
||||||
if ( !empty($changedsince) ) {
|
if ( !empty($changedsince) ) {
|
||||||
if ( !empty($where) ) $where .= ' AND ';
|
if ( !empty($where) ) $where .= ' AND ';
|
||||||
$where .= 'last_modified >= :changedsince';
|
$where .= 'last_modified > :changedsince';
|
||||||
$params[':changedsince'] = $changedsince;
|
$params[':changedsince'] = $changedsince;
|
||||||
}
|
}
|
||||||
|
if ( !empty($tzid) ) {
|
||||||
|
if ( !empty($where) ) $where .= ' AND ';
|
||||||
|
$where .= '(tzid = :tzid OR our_tzno IN (SELECT our_tzno FROM tz_aliases WHERE tzalias = :tzid))';
|
||||||
|
$params[':tzid'] = $tzid;
|
||||||
|
}
|
||||||
if ( !empty($where)) $sql .= ' WHERE '.$where;
|
if ( !empty($where)) $sql .= ' WHERE '.$where;
|
||||||
|
|
||||||
if ( !empty($c->strict_result_ordering) && $c->strict_result_ordering ) {
|
if ( !empty($c->strict_result_ordering) && $c->strict_result_ordering ) {
|
||||||
@ -67,7 +79,7 @@ if ( $qry->Exec('tz/list',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$elements[] = new XMLElement('local-name', $tz->tzid, array( 'lang' => $lang ) );
|
$elements[] = new XMLElement('local-name', $tz->tzid, ( empty($lang) ? null : array( 'lang' => $lang ) ) );
|
||||||
}
|
}
|
||||||
$tzlist->NewElement('summary', $elements);
|
$tzlist->NewElement('summary', $elements);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -159,7 +159,7 @@ if ( empty($c->tzsource) ) $c->tzsource = '../zonedb/vtimezones';
|
|||||||
if ( preg_match('{^http}', $c->tzsource ) ) {
|
if ( preg_match('{^http}', $c->tzsource ) ) {
|
||||||
|
|
||||||
$changesince = null;
|
$changesince = null;
|
||||||
$qry = new AwlQuery("SELECT tzid, to_char(last_modified,'YYYY-MM-DD\"T\"HH24:MI:SS') AS last_modified FROM timezones");
|
$qry = new AwlQuery("SELECT tzid, to_char(last_modified,'YYYY-MM-DD\"T\"HH24:MI:SS\"Z\"') AS last_modified FROM timezones");
|
||||||
$current_zones = array();
|
$current_zones = array();
|
||||||
if ( $qry->Exec('tz/updatecheck',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
if ( $qry->Exec('tz/updatecheck',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||||
while( $row = $qry->Fetch() )
|
while( $row = $qry->Fetch() )
|
||||||
|
|||||||
@ -7,7 +7,7 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
|
|||||||
@ -9,7 +9,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<error xmlns="DAV:">
|
<error xmlns="DAV:">
|
||||||
<can-overwrite/>A resource already exists at the destination.
|
<can-overwrite/>A resource already exists at the destination.
|
||||||
</error>
|
</error>
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
|
|||||||
@ -58,6 +58,24 @@
|
|||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user4/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<displayname>user4 addresses</displayname>
|
||||||
|
<resource-id>
|
||||||
|
<href>/caldav.php/.resources/63</href>
|
||||||
|
</resource-id>
|
||||||
|
<parent-set>
|
||||||
|
<parent>
|
||||||
|
<href>/caldav.php</href>
|
||||||
|
<segment>user4</segment>
|
||||||
|
</parent>
|
||||||
|
</parent-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user4/nz_holidays/</href>
|
<href>/caldav.php/user4/nz_holidays/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -100,7 +118,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>User 4 Outbox</displayname>
|
<displayname>User 4 Outbox</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1597</href>
|
<href>/caldav.php/.resources/1600</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@ -7,14 +7,14 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
ticket_id_length: >8<
|
ticket_id_length: >8<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/user1/<
|
dav_name: >/user4/user1/<
|
||||||
|
|||||||
@ -7,21 +7,21 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/user1/<
|
dav_name: >/user4/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/base/user1/<
|
dav_name: >/user4/base/user1/<
|
||||||
|
|||||||
@ -7,28 +7,28 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/user1/<
|
dav_name: >/user4/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/base/user1/<
|
dav_name: >/user4/base/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/base/<
|
parent_container: >/user4/base/<
|
||||||
|
|
||||||
bind_id: >1605<
|
bind_id: >1608<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/base/user2/<
|
dav_name: >/user4/base/user2/<
|
||||||
|
|||||||
@ -9,28 +9,28 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<error xmlns="DAV:">
|
<error xmlns="DAV:">
|
||||||
<can-overwrite/>A resource already exists at the destination.
|
<can-overwrite/>A resource already exists at the destination.
|
||||||
</error>
|
</error>
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/user1/<
|
dav_name: >/user4/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/base/user1/<
|
dav_name: >/user4/base/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/base/<
|
parent_container: >/user4/base/<
|
||||||
|
|
||||||
bind_id: >1605<
|
bind_id: >1608<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/base/user2/<
|
dav_name: >/user4/base/user2/<
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A normal collection</displayname>
|
<displayname>A normal collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1602</href>
|
<href>/caldav.php/.resources/1605</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
@ -90,7 +90,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A sub collection</displayname>
|
<displayname>A sub collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1603</href>
|
<href>/caldav.php/.resources/1606</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A normal collection</displayname>
|
<displayname>A normal collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1602</href>
|
<href>/caldav.php/.resources/1605</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@ -7,7 +7,7 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bind_owner: >1005<
|
bind_owner: >1005<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
@ -19,7 +19,7 @@ target_collection: >11<
|
|||||||
target_resource_i: >NULL<
|
target_resource_i: >NULL<
|
||||||
ticket_owner: >1003<
|
ticket_owner: >1003<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bind_owner: >1005<
|
bind_owner: >1005<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
@ -31,7 +31,7 @@ target_collection: >10<
|
|||||||
target_resource_i: >NULL<
|
target_resource_i: >NULL<
|
||||||
ticket_owner: >1002<
|
ticket_owner: >1002<
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bind_owner: >1005<
|
bind_owner: >1005<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
@ -43,7 +43,7 @@ target_collection: >10<
|
|||||||
target_resource_i: >NULL<
|
target_resource_i: >NULL<
|
||||||
ticket_owner: >1002<
|
ticket_owner: >1002<
|
||||||
|
|
||||||
bind_id: >1605<
|
bind_id: >1608<
|
||||||
bind_owner: >1005<
|
bind_owner: >1005<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
@ -55,7 +55,7 @@ target_collection: >11<
|
|||||||
target_resource_i: >NULL<
|
target_resource_i: >NULL<
|
||||||
ticket_owner: >1003<
|
ticket_owner: >1003<
|
||||||
|
|
||||||
bind_id: >1626<
|
bind_id: >1629<
|
||||||
bind_owner: >1<
|
bind_owner: >1<
|
||||||
bound_source_id: >12<
|
bound_source_id: >12<
|
||||||
dav_displayname: >user3 home<
|
dav_displayname: >user3 home<
|
||||||
|
|||||||
@ -6,14 +6,14 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/base/user1/<
|
dav_name: >/user4/base/user1/<
|
||||||
dav_owner_id: >1005<
|
dav_owner_id: >1005<
|
||||||
parent_container: >/user4/base/<
|
parent_container: >/user4/base/<
|
||||||
|
|
||||||
bind_id: >1605<
|
bind_id: >1608<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/base/user2/<
|
dav_name: >/user4/base/user2/<
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 21618
|
Content-Length: 22330
|
||||||
Etag: "ae93907cb03bc025b8e733eb61f3a09e"
|
Etag: "ae93907cb03bc025b8e733eb61f3a09e"
|
||||||
Content-Type: text/calendar; charset="utf-8"
|
Content-Type: text/calendar; charset="utf-8"
|
||||||
|
|
||||||
@ -108,13 +108,9 @@ END:VEVENT
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
DTSTAMP:20061101T073000Z
|
DTSTAMP:20061101T073000Z
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:20061
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:2006110
|
SUMMARY:A Changed Meeting
|
||||||
1T110000
|
|
||||||
SUMMARY:A Meeting
|
|
||||||
X-EVOLUTION-CALDAV-HREF:http://user1@mycaldav/caldav.php/user1/home/2006
|
|
||||||
1101T073004Z.ics
|
|
||||||
BEGIN:VALARM
|
BEGIN:VALARM
|
||||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
ACTION:DISPLAY
|
ACTION:DISPLAY
|
||||||
@ -313,6 +309,26 @@ DTSTAMP:20091006T225808Z
|
|||||||
SEQUENCE:1
|
SEQUENCE:1
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111004T153507Z
|
||||||
|
UID:0544-gzip-PUT
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:In Central Europe, 2pm, Oct 5th for 1 hour
|
||||||
|
DTSTART;TZID=Somewhere_in_Central_Europe:20111005T140000
|
||||||
|
DTEND;TZID=Somewhere_in_Central_Europe:20111005T150000
|
||||||
|
DTSTAMP:20111004T153507Z
|
||||||
|
SEQUENCE:1
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111004T153507Z
|
||||||
|
UID:0545-deflate-PUT
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:In Prague, 10am, Oct 7th for 1 hour
|
||||||
|
DTSTART;TZID=Prague_in_Central_Europe:20111007T100000
|
||||||
|
DURATION:PT1H
|
||||||
|
DTSTAMP:20111004T153507Z
|
||||||
|
SEQUENCE:1
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
DESCRIPTION:Have a party. All the best parties are monthly!
|
DESCRIPTION:Have a party. All the best parties are monthly!
|
||||||
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
||||||
DTSTAMP:20081024T220925Z
|
DTSTAMP:20081024T220925Z
|
||||||
@ -618,24 +634,6 @@ TZOFFSETTO:+1200
|
|||||||
END:STANDARD
|
END:STANDARD
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
TZNAME:NZST
|
|
||||||
DTSTART:19700315T030000
|
|
||||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=3SU;BYMONTH=3
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
TZNAME:NZDT
|
|
||||||
DTSTART:19701004T020000
|
|
||||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
|
||||||
END:DAYLIGHT
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:/mozilla.org/20050126_1/Pacific/Auckland
|
TZID:/mozilla.org/20050126_1/Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
X-LIC-LOCATION:Pacific/Auckland
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
@ -706,4 +704,40 @@ TZNAME:GMT+01:00
|
|||||||
TZOFFSETTO:+0100
|
TZOFFSETTO:+0100
|
||||||
END:STANDARD
|
END:STANDARD
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Somewhere_in_Central_Europe
|
||||||
|
X-MICROSOFT-CDO-TZID:4
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
DTSTART:19810329T020000
|
||||||
|
TZNAME:GMT+02:00
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
DTSTART:19961027T030000
|
||||||
|
TZNAME:GMT+01:00
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Prague_in_Central_Europe
|
||||||
|
X-MICROSOFT-CDO-TZID:4
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
DTSTART:19810329T020000
|
||||||
|
TZNAME:GMT+02:00
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
DTSTART:19961027T030000
|
||||||
|
TZNAME:GMT+01:00
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
|
|||||||
@ -7,36 +7,36 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
bind_id: >1599<
|
bind_id: >1602<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||||
dav_name: >/user4/user2/<
|
dav_name: >/user4/user2/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1600<
|
bind_id: >1603<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/user1/<
|
dav_name: >/user4/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/<
|
parent_container: >/user4/<
|
||||||
|
|
||||||
bind_id: >1604<
|
bind_id: >1607<
|
||||||
bound_source_id: >10<
|
bound_source_id: >10<
|
||||||
dav_displayname: >User 1's Calendaranza<
|
dav_displayname: >User 1's Calendaranza<
|
||||||
dav_name: >/user4/base/user1/<
|
dav_name: >/user4/base/user1/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/base/<
|
parent_container: >/user4/base/<
|
||||||
|
|
||||||
bind_id: >1605<
|
bind_id: >1608<
|
||||||
bound_source_id: >11<
|
bound_source_id: >11<
|
||||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||||
dav_name: >/user4/base/user2/<
|
dav_name: >/user4/base/user2/<
|
||||||
length: >8<
|
length: >8<
|
||||||
parent_container: >/user4/base/<
|
parent_container: >/user4/base/<
|
||||||
|
|
||||||
bind_id: >1627<
|
bind_id: >1630<
|
||||||
bound_source_id: >1602<
|
bound_source_id: >1605<
|
||||||
dav_displayname: >A normal collection<
|
dav_displayname: >A normal collection<
|
||||||
dav_name: >/user4/boundbase/<
|
dav_name: >/user4/boundbase/<
|
||||||
length: >NULL<
|
length: >NULL<
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A normal collection</displayname>
|
<displayname>A normal collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1602</href>
|
<href>/caldav.php/.resources/1605</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
@ -90,7 +90,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A sub collection</displayname>
|
<displayname>A sub collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1603</href>
|
<href>/caldav.php/.resources/1606</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
@ -112,7 +112,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>newcalendar</displayname>
|
<displayname>newcalendar</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1616</href>
|
<href>/caldav.php/.resources/1619</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A normal collection</displayname>
|
<displayname>A normal collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1602</href>
|
<href>/caldav.php/.resources/1605</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
@ -99,7 +99,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>A sub collection</displayname>
|
<displayname>A sub collection</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1603</href>
|
<href>/caldav.php/.resources/1606</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
@ -125,7 +125,7 @@
|
|||||||
<prop>
|
<prop>
|
||||||
<displayname>newcalendar</displayname>
|
<displayname>newcalendar</displayname>
|
||||||
<resource-id>
|
<resource-id>
|
||||||
<href>/caldav.php/.resources/1616</href>
|
<href>/caldav.php/.resources/1619</href>
|
||||||
</resource-id>
|
</resource-id>
|
||||||
<parent-set>
|
<parent-set>
|
||||||
<parent>
|
<parent>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
1598
|
1601
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
11
|
13
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 403 Forbidden
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 91
|
Content-Length: 92
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
PUT on a collection is only allowed for text/calendar content against a calendar collection
|
PUT on a collection is only allowed for text/vcard content against an addressbook collection
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
HTTP/1.1 301 Moved Permanently
|
HTTP/1.1 301 Moved Permanently
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
Location: /caldav.php/
|
Location: http://mycaldav/caldav.php/
|
||||||
Content-Length: 0
|
Content-Length: 0
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
HTTP/1.1 301 Moved Permanently
|
HTTP/1.1 301 Moved Permanently
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
Location: /caldav.php/
|
Location: http://mycaldav/caldav.php/
|
||||||
Content-Length: 0
|
Content-Length: 0
|
||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|||||||
33
testing/tests/carddav/2025-PROPFIND.result
Normal file
33
testing/tests/carddav/2025-PROPFIND.result
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
HTTP/1.1 207 Multi-Status
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
ETag: "c407a846b30b1e658173c72fab664629"
|
||||||
|
Content-Length: 636
|
||||||
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<multistatus xmlns="DAV:" xmlns:A="http://apache.org/dav/props/" xmlns:C="urn:ietf:params:xml:ns:carddav">
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user3/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getlastmodified>Sun, 15 Mar 1998 12:00:00 GMT</getlastmodified>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontentlength/>
|
||||||
|
<A:executable/>
|
||||||
|
<checked-in/>
|
||||||
|
<checked-out/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
</multistatus>
|
||||||
25
testing/tests/carddav/2025-PROPFIND.test
Normal file
25
testing/tests/carddav/2025-PROPFIND.test
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#
|
||||||
|
# PROPFIND on addressbook resource
|
||||||
|
#
|
||||||
|
TYPE=PROPFIND
|
||||||
|
URL=http://regression.host/caldav.php/user3/addresses/
|
||||||
|
HEADER=User-Agent: cadaver/0.23.3 neon/0.29.6
|
||||||
|
HEADER=Content-Type: application/xml
|
||||||
|
HEADER=Depth: 1
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
AUTH=user3:user3
|
||||||
|
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<propfind xmlns="DAV:"><prop>
|
||||||
|
<getcontentlength xmlns="DAV:"/>
|
||||||
|
<getlastmodified xmlns="DAV:"/>
|
||||||
|
<executable xmlns="http://apache.org/dav/props/"/>
|
||||||
|
<resourcetype xmlns="DAV:"/>
|
||||||
|
<checked-in xmlns="DAV:"/>
|
||||||
|
<checked-out xmlns="DAV:"/>
|
||||||
|
</prop></propfind>
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
1627
|
1630
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
11
|
13
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "f7655907e64525c7ecaa409f800e8f8b"
|
ETag: "6224e345c323da0dfc00689c21171119"
|
||||||
Content-Length: 1805
|
Content-Length: 2254
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="urn:ietf:params:xml:ns:carddav" xmlns:C2="http://calendarserver.org/ns/">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C1:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontentlength/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/calendar-proxy-read/</href>
|
<href>/caldav.php/user1/calendar-proxy-read/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -53,7 +72,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-read/>
|
<C2:calendar-proxy-read/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-write/>
|
<C2:calendar-proxy-write/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "297a698b8d8c51217f0de910462dc6d8"
|
ETag: "966d4f7d769690fca393be5ba814e8a2"
|
||||||
Content-Length: 2206
|
Content-Length: 2655
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="urn:ietf:params:xml:ns:carddav" xmlns:C2="http://calendarserver.org/ns/">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C1:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontentlength/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-read/>
|
<C2:calendar-proxy-read/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
@ -91,7 +110,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-write/>
|
<C2:calendar-proxy-write/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
@ -6,4 +6,46 @@ HEADER=If-None-Match: *
|
|||||||
HEADER=User-Agent: Evolution/1.8.1
|
HEADER=User-Agent: Evolution/1.8.1
|
||||||
HEADER=Content-Type: text/calendar
|
HEADER=Content-Type: text/calendar
|
||||||
HEAD
|
HEAD
|
||||||
DATA=20061101T073004Z.ics
|
|
||||||
|
BEGINDATA
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
BEGIN:VEVENT
|
||||||
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
|
DTSTAMP:20061101T073000Z
|
||||||
|
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
||||||
|
20061101T100000
|
||||||
|
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
||||||
|
20061101T110000
|
||||||
|
SUMMARY:A Meeting
|
||||||
|
X-EVOLUTION-CALDAV-HREF:http:
|
||||||
|
//user1@mycaldav/caldav.php/user1/home/20061101T073004Z.ics
|
||||||
|
BEGIN:VALARM
|
||||||
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
|
ACTION:DISPLAY
|
||||||
|
TRIGGER;VALUE=DURATION;RELATED=START:-PT15M
|
||||||
|
DESCRIPTION:A Meeting
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||||
|
X-LIC-LOCATION:Pacific/Auckland
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
TZNAME:NZST
|
||||||
|
DTSTART:19700315T030000
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=3SU;BYMONTH=3
|
||||||
|
END:STANDARD
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
TZNAME:NZDT
|
||||||
|
DTSTART:19701004T020000
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
||||||
|
END:DAYLIGHT
|
||||||
|
END:VTIMEZONE
|
||||||
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
|
|||||||
@ -2,12 +2,62 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook
|
||||||
ETag: "882eeadb4b2e998ed4358acda515e963"
|
ETag: "ab07e565993a377f23fc062109bbf013"
|
||||||
Content-Length: 1421
|
Content-Length: 2857
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/2178279a-aec2-471f-832d-1f6df6203f2f.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"509b0f0d8a3363379f9f5727f5dd74a0"</getetag>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//Mozilla Calendar//NONSGML Sunbird//EN
|
||||||
|
VERSION:2.0
|
||||||
|
BEGIN:VTODO
|
||||||
|
CREATED:20070805T200215Z
|
||||||
|
LAST-MODIFIED:20070805T201531Z
|
||||||
|
DTSTAMP:20070805T200215Z
|
||||||
|
UID:2178279a-aec2-471f-832d-1f6df6203f2f
|
||||||
|
SUMMARY:Incomplete\, uncancelled
|
||||||
|
X-MOZ-LOCATIONPATH:2178279a-aec2-471f-832d-1f6df6203f2f.ics
|
||||||
|
DESCRIPTION:This task is incomplete and has not been cancelled (has no
|
||||||
|
status at all)
|
||||||
|
END:VTODO
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/917b9e47-b748-4550-a566-657fbe672447.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"cb3d9dc3e8c157f53eba3ea0e1e0f146"</getetag>
|
||||||
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
|
PRODID:-//Mozilla Calendar//NONSGML Sunbird//EN
|
||||||
|
VERSION:2.0
|
||||||
|
BEGIN:VTODO
|
||||||
|
CREATED:20070805T201557Z
|
||||||
|
LAST-MODIFIED:20070805T201643Z
|
||||||
|
DTSTAMP:20070805T201557Z
|
||||||
|
UID:917b9e47-b748-4550-a566-657fbe672447
|
||||||
|
SUMMARY:50% Complete\, uncancelled
|
||||||
|
STATUS:IN-PROCESS
|
||||||
|
PERCENT-COMPLETE:50
|
||||||
|
X-MOZ-LOCATIONPATH:917b9e47-b748-4550-a566-657fbe672447.ics
|
||||||
|
DESCRIPTION:This task is in progress (50% complete) and has not been
|
||||||
|
cancelled.
|
||||||
|
END:VTODO
|
||||||
|
END:VCALENDAR
|
||||||
|
</C:calendar-data>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/home/e6eb5bc9-f7f9-4a0a-94e8-8e90eefc7d08.ics</href>
|
<href>/caldav.php/user1/home/e6eb5bc9-f7f9-4a0a-94e8-8e90eefc7d08.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -59,6 +109,16 @@ END:VCALENDAR
|
|||||||
</response>
|
</response>
|
||||||
</multistatus>
|
</multistatus>
|
||||||
|
|
||||||
|
dtstart: >NULL<
|
||||||
|
due: >NULL<
|
||||||
|
rrule: >NULL<
|
||||||
|
summary: >Incomplete, uncancelled<
|
||||||
|
|
||||||
|
dtstart: >NULL<
|
||||||
|
due: >NULL<
|
||||||
|
rrule: >NULL<
|
||||||
|
summary: >50% Complete, uncancelled<
|
||||||
|
|
||||||
dtstart: >2007-12-09 13:30:00+13<
|
dtstart: >2007-12-09 13:30:00+13<
|
||||||
due: >2007-12-09 13:30:00+13<
|
due: >2007-12-09 13:30:00+13<
|
||||||
rrule: >NULL<
|
rrule: >NULL<
|
||||||
|
|||||||
@ -35,9 +35,14 @@ SELECT dtstart, due,
|
|||||||
FROM calendar_item JOIN caldav_data USING (dav_id)
|
FROM calendar_item JOIN caldav_data USING (dav_id)
|
||||||
WHERE calendar_item.dav_name ~ '^/user1/home/'
|
WHERE calendar_item.dav_name ~ '^/user1/home/'
|
||||||
AND caldav_data.caldav_type = 'VTODO'
|
AND caldav_data.caldav_type = 'VTODO'
|
||||||
AND (rrule IS NOT NULL
|
AND (rrule IS NOT NULL OR dtstart IS NULL
|
||||||
OR (dtstart >= '20071101T110000Z' AND dtstart < '20080104T110000Z')
|
OR (
|
||||||
OR (due >= '20071101T110000Z' AND dtstart < '20080104T110000Z')
|
(
|
||||||
)
|
(due IS NULL AND dtstart > '20071101T110000Z')
|
||||||
|
OR due > '20071101T110000Z'
|
||||||
|
)
|
||||||
|
AND dtstart < '20080104T110000Z'
|
||||||
|
)
|
||||||
|
)
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "929672a83aec9ab7d7b4a85c61814772"
|
ETag: "fd17acf5fe9ad6e6612323ef680b3d10"
|
||||||
Content-Length: 2161
|
Content-Length: 2601
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="urn:ietf:params:xml:ns:carddav" xmlns:C2="http://calendarserver.org/ns/">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C1:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-read/>
|
<C2:calendar-proxy-read/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
@ -91,7 +110,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-write/>
|
<C2:calendar-proxy-write/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
29
testing/tests/regression-suite/0403-Cadaver-LOCK-1.result
Normal file
29
testing/tests/regression-suite/0403-Cadaver-LOCK-1.result
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||||
|
Content-Length: 412
|
||||||
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<prop xmlns="DAV:">
|
||||||
|
<lockdiscovery>
|
||||||
|
<activelock>
|
||||||
|
<locktype>
|
||||||
|
<write/>
|
||||||
|
</locktype>
|
||||||
|
<lockscope>
|
||||||
|
<exclusive/>
|
||||||
|
</lockscope>
|
||||||
|
<depth>0</depth>
|
||||||
|
<owner>
|
||||||
|
<href/>
|
||||||
|
</owner>
|
||||||
|
<timeout>Second-30</timeout>
|
||||||
|
<locktoken>
|
||||||
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
|
</locktoken>
|
||||||
|
</activelock>
|
||||||
|
</lockdiscovery>
|
||||||
|
</prop>
|
||||||
15
testing/tests/regression-suite/0403-Cadaver-LOCK-1.test
Normal file
15
testing/tests/regression-suite/0403-Cadaver-LOCK-1.test
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#
|
||||||
|
# Basic testing with Cadaver DAV client
|
||||||
|
#
|
||||||
|
TYPE=LOCK
|
||||||
|
URL=http://mycaldav/caldav.php/user1/home/20061101T073004Z.ics
|
||||||
|
HEADER=User-Agent: cadaver/0.23.3 neon/0.29.6
|
||||||
|
HEADER=Depth: 0
|
||||||
|
HEADER=Content-Type: application/xml
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
<lockinfo xmlns='DAV:'>
|
||||||
|
<lockscope><exclusive/></lockscope>
|
||||||
|
<locktype><write/></locktype></lockinfo>
|
||||||
|
ENDDATA
|
||||||
@ -1,3 +1,17 @@
|
|||||||
|
#
|
||||||
|
# Doing a PUT with cadaver
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/user1/home/20061101T073004Z.ics
|
||||||
|
|
||||||
|
GETSQL=locktoken
|
||||||
|
SELECT opaquelocktoken FROM locks WHERE dav_name = '/user1/home/20061101T073004Z.ics'
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
HEADER=User-Agent: cadaver/0.22.3 neon/0.25.5
|
||||||
|
HEADER=If: <http://dev.davical.org:1080/caldav.php/user1/home/20061101T073004Z.ics> (<opaquelocktoken:##locktoken##>)
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
BEGIN:VCALENDAR
|
BEGIN:VCALENDAR
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||||
@ -5,13 +19,9 @@ VERSION:2.0
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
DTSTAMP:20061101T073000Z
|
DTSTAMP:20061101T073000Z
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
20061101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
SUMMARY:A Changed Meeting
|
||||||
20061101T110000
|
|
||||||
SUMMARY:A Meeting
|
|
||||||
X-EVOLUTION-CALDAV-HREF:http:
|
|
||||||
//user1@mycaldav/caldav.php/user1/home/20061101T073004Z.ics
|
|
||||||
BEGIN:VALARM
|
BEGIN:VALARM
|
||||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
ACTION:DISPLAY
|
ACTION:DISPLAY
|
||||||
@ -20,8 +30,7 @@ DESCRIPTION:A Meeting
|
|||||||
END:VALARM
|
END:VALARM
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
TZOFFSETFROM:+1300
|
TZOFFSETFROM:+1300
|
||||||
TZOFFSETTO:+1200
|
TZOFFSETTO:+1200
|
||||||
@ -38,3 +47,4 @@ RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
|||||||
END:DAYLIGHT
|
END:DAYLIGHT
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
|
ENDDATA
|
||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "3d57f5e85f8e7d0fe3398eeace49ce1a"
|
ETag: "e3f59c55883b61b4390fd7ffbe74644b"
|
||||||
Content-Length: 3181
|
Content-Length: 3649
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/" xmlns:C1="http://calendarserver.org/ns/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/" xmlns:C1="urn:ietf:params:xml:ns:carddav" xmlns:C2="http://calendarserver.org/ns/">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -48,6 +48,26 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<displayname>user1 addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C1:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -115,7 +135,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<displayname>/user1/calendar-proxy-read/</displayname>
|
<displayname>/user1/calendar-proxy-read/</displayname>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-read/>
|
<C2:calendar-proxy-read/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
@ -135,7 +155,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<displayname>/user1/calendar-proxy-write/</displayname>
|
<displayname>/user1/calendar-proxy-write/</displayname>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-write/>
|
<C2:calendar-proxy-write/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "c30ae7a73f7f3c95895032994b51554d"
|
ETag: "e76f1252cff440810b604e3903cc364b"
|
||||||
Content-Length: 675
|
Content-Length: 675
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<displayname>user1 home</displayname>
|
<displayname>user1 home</displayname>
|
||||||
<C:getctag>"c4b202f2177d8839c95d715f26cf62da"</C:getctag>
|
<C:getctag>"86d97f6156e59bbf1b1514e804a6cc1c"</C:getctag>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar/>
|
<C1:calendar/>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "c0dc924dbe52600ea776c98136f289b0"
|
ETag: "198df454dbf27f8311378759dfeaee14"
|
||||||
Content-Length: 4155
|
Content-Length: 4155
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<resourcetype/>
|
<resourcetype/>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "b11fc11a4033759ef4a7694f058b95cc"
|
ETag: "8ae10873cb1929fd0e66571128cf01ea"
|
||||||
Content-Length: 3932
|
Content-Length: 4594
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/">
|
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user2/</href>
|
<href>/caldav.php/user2/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -58,6 +58,31 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user2/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:getctag>"7e58d63b60197ceb55a1c487989a3720"</C:getctag>
|
||||||
|
<displayname>user2 addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<C1:calendar-free-busy-set>
|
||||||
|
<href>/caldav.php/user2/home/</href>
|
||||||
|
</C1:calendar-free-busy-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C1:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
<A:calendar-order/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user2/.in/</href>
|
<href>/caldav.php/user2/.in/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "3ff13339128a73ed5d25308b678c3bc5"
|
ETag: "45a0a8b922545d0793e9b0b9d10726fe"
|
||||||
Content-Length: 4847
|
Content-Length: 6054
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav">
|
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/manager1/</href>
|
<href>/caldav.php/manager1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -82,6 +82,43 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/manager1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:getctag>"c240642ddef994358c96da82c0361a58"</C:getctag>
|
||||||
|
<displayname>manager1 addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<group-membership>
|
||||||
|
<href>/caldav.php/assistant1/</href>
|
||||||
|
<href>/caldav.php/teamclient1/</href>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
<href>/caldav.php/user1/calendar-proxy-read/</href>
|
||||||
|
<href>/caldav.php/assistant1/calendar-proxy-read/</href>
|
||||||
|
<href>/caldav.php/resource1/calendar-proxy-read/</href>
|
||||||
|
<href>/caldav.php/resource2/calendar-proxy-read/</href>
|
||||||
|
</group-membership>
|
||||||
|
<C:calendar-proxy-read-for>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
<href>/caldav.php/assistant1/</href>
|
||||||
|
<href>/caldav.php/resource1/</href>
|
||||||
|
<href>/caldav.php/resource2/</href>
|
||||||
|
</C:calendar-proxy-read-for>
|
||||||
|
<C:calendar-proxy-write-for/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C1:calendar-description/>
|
||||||
|
<group-member-set/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/manager1/calendar-proxy-read/</href>
|
<href>/caldav.php/manager1/calendar-proxy-read/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "e7cd1ee6cd4eb1e0e2aaa1d2b5a0bfb1"
|
ETag: "9e402a9adb641a6ce4891a105f7963bd"
|
||||||
Content-Length: 15648
|
Content-Length: 17404
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/">
|
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -161,6 +161,78 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:getctag>"24c9e15e52afc47c225b757e7bee1f9d"</C:getctag>
|
||||||
|
<displayname>user1 addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<C1:calendar-free-busy-set>
|
||||||
|
<href>/caldav.php/user1/home/</href>
|
||||||
|
<href>/caldav.php/user1/created/</href>
|
||||||
|
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||||
|
</C1:calendar-free-busy-set>
|
||||||
|
<C1:schedule-default-calendar-URL>
|
||||||
|
<href>/user1/home/</href>
|
||||||
|
</C1:schedule-default-calendar-URL>
|
||||||
|
<current-user-privilege-set>
|
||||||
|
<privilege>
|
||||||
|
<all/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unlock/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-current-user-privilege-set/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-properties/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-content/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<bind/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unbind/>
|
||||||
|
</privilege>
|
||||||
|
</current-user-privilege-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:xmpp-server/>
|
||||||
|
<C:xmpp-uri/>
|
||||||
|
<C1:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
<A:calendar-order/>
|
||||||
|
<C1:supported-calendar-component-set/>
|
||||||
|
<C1:schedule-calendar-transp/>
|
||||||
|
<quota-available-bytes/>
|
||||||
|
<quota-used-bytes/>
|
||||||
|
<C1:calendar-timezone/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "6466df744e5f263784fd0e85915683b6"
|
ETag: "c932a7b77636c45a6395fb906c9ff80c"
|
||||||
Content-Length: 4421
|
Content-Length: 4421
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<resourcetype/>
|
<resourcetype/>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
BIN
testing/tests/regression-suite/0544-gzip-PUT.data
Normal file
BIN
testing/tests/regression-suite/0544-gzip-PUT.data
Normal file
Binary file not shown.
@ -0,0 +1,8 @@
|
|||||||
|
HTTP/1.1 201 Created
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
ETag: "6ddd18264a9d40c1c9d37a005eeb7e4f"
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
14
testing/tests/regression-suite/0544-iCLoud-PUT-encoded.test
Normal file
14
testing/tests/regression-suite/0544-iCLoud-PUT-encoded.test
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Testing with a process similar to iCal4
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/user1/home/0544-gzip-PUT.ics
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
HEADER=DAVKit/4.0 (729); CalendarStore/4.0 (965); iCal/4.0 (1362); Mac OS X/10.6.1 (10B504)
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
HEADER=Content-Encoding: gzip
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
DATA=0544-gzip-PUT
|
||||||
3
testing/tests/regression-suite/0545-deflate-PUT.data
Normal file
3
testing/tests/regression-suite/0545-deflate-PUT.data
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
}’AoÚ0Çïþ¾·!v€Q\q0±–°<E28093>:/¨á‚"š6h™¢pØ·ŸCh+<2B>m99–ý{¿÷^Ê•2ló<>4‚;´•.SÖ°hDPê¬P‚aXTe<54>Ýñî°:Fa(š¦>¾W¿ðdDÂPä YOa+'WÖ)nÐr`ƒÒrg<72>D°ó´´-ßÎÕþxÚÇÕ©kË÷½<·ÍÏ
|
||||||
|
=ZÅÎf6<66> 6¸œž\!‚µZƒgØ$É$$ÎjvG(!ȹܗMœ|Z’»Mñ¸,´5°^ŒýÊß\4Ë‘€¸F甌£9<C2A3>ˆøÏ
×^[ÉØec(Öðg<C3B0>OæK`ðñ¨>.ñ§Oô_Jþ.4ÿFI42¾¢7Bô*ôiÐÿ|e|Í\n¥;ÉA
|
||||||
|
Jý½ ÐéxJf;”ûhÉt2
^ª×÷²«‚4÷Ñ:n²”Ù”?åe¹ÖÜL<>ð0²{LIùãÛC‡g]<5D>_›S\7çö£“Ç~d‹
øÃb”\ú¹ãпµèz`èôÖ5“^ÇĒѡաµËòóÕþ
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
HTTP/1.1 201 Created
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
ETag: "4a3aa58a3e11487e87d87024465d4182"
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
14
testing/tests/regression-suite/0545-iCLoud-PUT-encoded.test
Normal file
14
testing/tests/regression-suite/0545-iCLoud-PUT-encoded.test
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Testing with a process similar to iCal4
|
||||||
|
#
|
||||||
|
TYPE=PUT
|
||||||
|
URL=http://regression.host/caldav.php/user1/home/0545-deflate-PUT.ics
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
HEADER=DAVKit/4.0 (729); CalendarStore/4.0 (965); iCal/4.0 (1362); Mac OS X/10.6.1 (10B504)
|
||||||
|
HEADER=Content-Type: text/calendar
|
||||||
|
HEADER=Content-Encoding: deflate
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
DATA=0545-deflate-PUT
|
||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "ffa85945cfea407705b4af67ba7f4259"
|
ETag: "4f2f5fe4966246175dfc7a90396422d2"
|
||||||
Content-Length: 11513
|
Content-Length: 12754
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/" xmlns:A="http://apple.com/ns/ical/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -70,7 +70,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<displayname>user1 home</displayname>
|
<displayname>user1 home</displayname>
|
||||||
<C1:getctag>"86a1e7300c8b748329ad3617974ad08a"</C1:getctag>
|
<C1:getctag>"243d78db0cc75a576d2603eef69efdc9"</C1:getctag>
|
||||||
<A:calendar-color>#0252D4FF</A:calendar-color>
|
<A:calendar-color>#0252D4FF</A:calendar-color>
|
||||||
<C:supported-calendar-component-set>
|
<C:supported-calendar-component-set>
|
||||||
<C:comp name="VEVENT"/>
|
<C:comp name="VEVENT"/>
|
||||||
@ -131,6 +131,63 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<displayname>user1 addresses</displayname>
|
||||||
|
<C1:getctag>"24c9e15e52afc47c225b757e7bee1f9d"</C1:getctag>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<current-user-privilege-set>
|
||||||
|
<privilege>
|
||||||
|
<all/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unlock/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-current-user-privilege-set/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-properties/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-content/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<bind/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unbind/>
|
||||||
|
</privilege>
|
||||||
|
</current-user-privilege-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
<C:supported-calendar-component-set/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "ffa85945cfea407705b4af67ba7f4259"
|
ETag: "4f2f5fe4966246175dfc7a90396422d2"
|
||||||
Content-Length: 11513
|
Content-Length: 12754
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/" xmlns:A="http://apple.com/ns/ical/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -70,7 +70,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<displayname>user1 home</displayname>
|
<displayname>user1 home</displayname>
|
||||||
<C1:getctag>"86a1e7300c8b748329ad3617974ad08a"</C1:getctag>
|
<C1:getctag>"243d78db0cc75a576d2603eef69efdc9"</C1:getctag>
|
||||||
<A:calendar-color>#0252D4FF</A:calendar-color>
|
<A:calendar-color>#0252D4FF</A:calendar-color>
|
||||||
<C:supported-calendar-component-set>
|
<C:supported-calendar-component-set>
|
||||||
<C:comp name="VEVENT"/>
|
<C:comp name="VEVENT"/>
|
||||||
@ -131,6 +131,63 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<displayname>user1 addresses</displayname>
|
||||||
|
<C1:getctag>"24c9e15e52afc47c225b757e7bee1f9d"</C1:getctag>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<current-user-privilege-set>
|
||||||
|
<privilege>
|
||||||
|
<all/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unlock/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<read-current-user-privilege-set/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-acl/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-properties/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<write-content/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<bind/>
|
||||||
|
</privilege>
|
||||||
|
<privilege>
|
||||||
|
<unbind/>
|
||||||
|
</privilege>
|
||||||
|
</current-user-privilege-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
<C:supported-calendar-component-set/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "571aa22469ee7442c32ba35664da10de"
|
ETag: "64bfdf4e95a5799a86f1c79e0f3faf1d"
|
||||||
Content-Length: 880
|
Content-Length: 1369
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -38,4 +38,24 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
<resourcetype/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
<resourcetype/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
</multistatus>
|
</multistatus>
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "d98f282a5121894cde0b43b6ecf143df"
|
ETag: "4b62114cda76b7d0b7e18ee55488af71"
|
||||||
Content-Length: 4285
|
Content-Length: 4741
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="http://calendarserver.org/ns/">
|
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:C1="urn:ietf:params:xml:ns:carddav" xmlns:C2="http://calendarserver.org/ns/">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/</href>
|
<href>/caldav.php/user1/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -47,6 +47,25 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<displayname>user1 addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C1:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:supported-calendar-component-set/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -146,7 +165,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<displayname>/user1/calendar-proxy-read/</displayname>
|
<displayname>/user1/calendar-proxy-read/</displayname>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-read/>
|
<C2:calendar-proxy-read/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
@ -165,7 +184,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<displayname>/user1/calendar-proxy-write/</displayname>
|
<displayname>/user1/calendar-proxy-write/</displayname>
|
||||||
<resourcetype>
|
<resourcetype>
|
||||||
<collection/>
|
<collection/>
|
||||||
<C1:calendar-proxy-write/>
|
<C2:calendar-proxy-write/>
|
||||||
</resourcetype>
|
</resourcetype>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
76
testing/tests/regression-suite/0559-iOS-REPORT.result
Normal file
76
testing/tests/regression-suite/0559-iOS-REPORT.result
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
HTTP/1.1 207 Multi-Status
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
|
ETag: "09eb139019832f5f89469c914c977636"
|
||||||
|
Content-Length: 1227
|
||||||
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<multistatus xmlns="DAV:">
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/e70576e9-c1e0-431e-a507-0386fd82f223.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"e8060931f30c1798ac58ffbe4ec0bffc"</getetag>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/da81c0ee-7871-11db-c6d6-f6927c144649.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6f16959eee5c920b45548840b1e9ea19"</getetag>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
</multistatus>
|
||||||
|
|
||||||
|
dav_name: >/user1/home/4aaf8f37-f232-4c8e-a72e-e171d4c4fe54.ics<
|
||||||
|
dtstart: >2006-11-02 10:00:00+13<
|
||||||
|
rrule: >FREQ=WEEKLY;COUNT=26;INTERVAL=1;BYDAY=TH<
|
||||||
|
|
||||||
|
dav_name: >/user1/home/e70576e9-c1e0-431e-a507-0386fd82f223.ics<
|
||||||
|
dtstart: >2007-12-11 07:45:00+13<
|
||||||
|
rrule: >FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,TH<
|
||||||
|
|
||||||
|
dav_name: >/user1/home/71e2ae82-7870-11db-c6d6-f6927c144649.ics<
|
||||||
|
dtstart: >2006-11-03 16:00:00+13<
|
||||||
|
rrule: >FREQ=WEEKLY;INTERVAL=2;UNTIL=20071222T235900<
|
||||||
|
|
||||||
|
dav_name: >/user1/home/da81c0ee-7871-11db-c6d6-f6927c144649.ics<
|
||||||
|
dtstart: >2006-11-03 07:30:00+13<
|
||||||
|
rrule: >FREQ=MONTHLY<
|
||||||
|
|
||||||
|
dav_name: >/user1/home/0544-gzip-PUT.ics<
|
||||||
|
dtstart: >2011-10-05 14:00:00+13<
|
||||||
|
rrule: >NULL<
|
||||||
|
|
||||||
|
dav_name: >/user1/home/0545-deflate-PUT.ics<
|
||||||
|
dtstart: >2011-10-07 10:00:00+13<
|
||||||
|
rrule: >NULL<
|
||||||
|
|
||||||
43
testing/tests/regression-suite/0559-iOS-REPORT.test
Normal file
43
testing/tests/regression-suite/0559-iOS-REPORT.test
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# Testing with a process similar to iPhone 5
|
||||||
|
#
|
||||||
|
TYPE=REPORT
|
||||||
|
URL=http://mycaldav/caldav.php/user1/home/
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
AUTH=user1:user1
|
||||||
|
|
||||||
|
HEADER=User-Agent: iOS/10.7.2 (11C35) dataaccessd/1.0
|
||||||
|
HEADER=Content-Type: text/xml
|
||||||
|
HEADER=Depth: 1
|
||||||
|
|
||||||
|
#
|
||||||
|
BEGINDATA
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav">
|
||||||
|
<A:prop xmlns:A="DAV:">
|
||||||
|
<A:getetag/>
|
||||||
|
<A:getcontenttype/>
|
||||||
|
</A:prop>
|
||||||
|
<C:filter>
|
||||||
|
<C:comp-filter name="VCALENDAR">
|
||||||
|
<C:comp-filter name="VEVENT">
|
||||||
|
<C:time-range start="20110922T000000Z"/>
|
||||||
|
</C:comp-filter>
|
||||||
|
</C:comp-filter>
|
||||||
|
</C:filter>
|
||||||
|
</C:calendar-query>
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
|
#
|
||||||
|
QUERY
|
||||||
|
SELECT caldav_data.dav_name, dtstart, rrule
|
||||||
|
FROM calendar_item JOIN caldav_data USING(dav_id)
|
||||||
|
WHERE caldav_data.dav_name ~ '^/user1/home/'
|
||||||
|
AND caldav_data.caldav_type = 'VEVENT'
|
||||||
|
AND (rrule IS NOT NULL OR dtstart IS NULL
|
||||||
|
OR ( (dtend IS NULL AND dtstart > '20110922T000000Z')
|
||||||
|
OR dtend > '20110922T000000Z'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ENDQUERY
|
||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "4455c8df8e5a0572ba52dccb00843cfe"
|
ETag: "f855e21bdab0b98d0bfefa0211bde9ac"
|
||||||
Content-Length: 4030
|
Content-Length: 4479
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -21,7 +21,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
@ -152,5 +152,23 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<sync-token>data:,2</sync-token>
|
<sync-token>data:,2</sync-token>
|
||||||
</multistatus>
|
</multistatus>
|
||||||
|
|||||||
@ -2,12 +2,30 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "a4ec15e128c8e06e81c57af754448f81"
|
ETag: "99574d7bc8d5f12a1a5ac80934cee9f2"
|
||||||
Content-Length: 3786
|
Content-Length: 4235
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:">
|
<multistatus xmlns="DAV:">
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -30,7 +48,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "12c556718c27de34471b0b9f333610fc"
|
ETag: "b809f86b465fa4356c00d884de114029"
|
||||||
Content-Length: 15922
|
Content-Length: 17557
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -404,6 +404,72 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-home-set>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-home-set>
|
||||||
|
<C:calendar-user-address-set>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-user-address-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<A:dropbox-home-URL/>
|
||||||
|
<A:notifications-URL/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-home-set>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-home-set>
|
||||||
|
<C:calendar-user-address-set>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-user-address-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<A:dropbox-home-URL/>
|
||||||
|
<A:notifications-URL/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-home-set>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-home-set>
|
||||||
|
<C:calendar-user-address-set>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-user-address-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<A:dropbox-home-URL/>
|
||||||
|
<A:notifications-URL/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "2c82262a1c8f2caf0dccf46188970a65"
|
ETag: "cb882ded16756e36bbd614591982f2e7"
|
||||||
Content-Length: 5036
|
Content-Length: 5572
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -52,6 +52,28 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:calendar-home-set>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-home-set>
|
||||||
|
<C:calendar-user-address-set>
|
||||||
|
<href>mailto:user1@example.net</href>
|
||||||
|
<href>/caldav.php/user1/</href>
|
||||||
|
</C:calendar-user-address-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<A:dropbox-home-URL/>
|
||||||
|
<A:notifications-URL/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/created/</href>
|
<href>/caldav.php/user1/created/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
|||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||||
Content-Length: 460
|
Content-Length: 456
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<owner>
|
<owner>
|
||||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||||
</owner>
|
</owner>
|
||||||
<timeout>Second-8640000</timeout>
|
<timeout>Second-300</timeout>
|
||||||
<locktoken>
|
<locktoken>
|
||||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
</locktoken>
|
</locktoken>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 460
|
Content-Length: 456
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -19,7 +19,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<owner>
|
<owner>
|
||||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||||
</owner>
|
</owner>
|
||||||
<timeout>Second-8640000</timeout>
|
<timeout>Second-300</timeout>
|
||||||
<locktoken>
|
<locktoken>
|
||||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
</locktoken>
|
</locktoken>
|
||||||
|
|||||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
|||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||||
Content-Length: 460
|
Content-Length: 456
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<owner>
|
<owner>
|
||||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||||
</owner>
|
</owner>
|
||||||
<timeout>Second-8640000</timeout>
|
<timeout>Second-300</timeout>
|
||||||
<locktoken>
|
<locktoken>
|
||||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
</locktoken>
|
</locktoken>
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 460
|
Content-Length: 456
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -19,7 +19,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<owner>
|
<owner>
|
||||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||||
</owner>
|
</owner>
|
||||||
<timeout>Second-8640000</timeout>
|
<timeout>Second-300</timeout>
|
||||||
<locktoken>
|
<locktoken>
|
||||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
</locktoken>
|
</locktoken>
|
||||||
|
|||||||
@ -78,11 +78,11 @@
|
|||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<creationdate>20061031T183000Z</creationdate>
|
<creationdate>20061031T183000Z</creationdate>
|
||||||
<displayname>A Meeting</displayname>
|
<displayname>A Changed Meeting</displayname>
|
||||||
<getcontentlanguage/>
|
<getcontentlanguage/>
|
||||||
<getcontentlength>1059</getcontentlength>
|
<getcontentlength>829</getcontentlength>
|
||||||
<getcontenttype>text/calendar</getcontenttype>
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
<resourcetype/>
|
<resourcetype/>
|
||||||
<supportedlock>
|
<supportedlock>
|
||||||
@ -598,6 +598,76 @@
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<creationdate>20111004T023507Z</creationdate>
|
||||||
|
<displayname>In Central Europe, 2pm, Oct 5th for 1 hour</displayname>
|
||||||
|
<getcontentlanguage/>
|
||||||
|
<getcontentlength>761</getcontentlength>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
|
<resourcetype/>
|
||||||
|
<supportedlock>
|
||||||
|
<lockentry>
|
||||||
|
<lockscope>
|
||||||
|
<exclusive/>
|
||||||
|
</lockscope>
|
||||||
|
<locktype>
|
||||||
|
<write/>
|
||||||
|
</locktype>
|
||||||
|
</lockentry>
|
||||||
|
</supportedlock>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<lockdiscovery/>
|
||||||
|
<source/>
|
||||||
|
<checked-in/>
|
||||||
|
<checked-out/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<creationdate>20111004T023507Z</creationdate>
|
||||||
|
<displayname>In Prague, 10am, Oct 7th for 1 hour</displayname>
|
||||||
|
<getcontentlanguage/>
|
||||||
|
<getcontentlength>710</getcontentlength>
|
||||||
|
<getcontenttype>text/calendar</getcontenttype>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
|
<resourcetype/>
|
||||||
|
<supportedlock>
|
||||||
|
<lockentry>
|
||||||
|
<lockscope>
|
||||||
|
<exclusive/>
|
||||||
|
</lockscope>
|
||||||
|
<locktype>
|
||||||
|
<write/>
|
||||||
|
</locktype>
|
||||||
|
</lockentry>
|
||||||
|
</supportedlock>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<lockdiscovery/>
|
||||||
|
<source/>
|
||||||
|
<checked-in/>
|
||||||
|
<checked-out/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/home/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics</href>
|
<href>/caldav.php/user1/home/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -3,7 +3,7 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
|
|||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||||
Content-Length: 460
|
Content-Length: 456
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<owner>
|
<owner>
|
||||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||||
</owner>
|
</owner>
|
||||||
<timeout>Second-8640000</timeout>
|
<timeout>Second-300</timeout>
|
||||||
<locktoken>
|
<locktoken>
|
||||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||||
</locktoken>
|
</locktoken>
|
||||||
|
|||||||
@ -36,19 +36,19 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
</response>
|
</response>
|
||||||
</multistatus>
|
</multistatus>
|
||||||
|
|
||||||
changed_last_60se: >1<
|
changed_recently: >1<
|
||||||
dav_displayname: >user1 home<
|
dav_displayname: >user1 home<
|
||||||
is_calendar: >1<
|
is_calendar: >1<
|
||||||
resourcetypes: ><DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/><
|
resourcetypes: ><DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/><
|
||||||
|
|
||||||
changed_by: >10<
|
changed_by: >10<
|
||||||
changed_last_30se: >1<
|
changed_recently: >1<
|
||||||
dav_name: >/user1/home/<
|
dav_name: >/user1/home/<
|
||||||
property_name: >http://apple.com/ns/ical/:calendar-color<
|
property_name: >http://apple.com/ns/ical/:calendar-color<
|
||||||
property_value: >#0252D4FF<
|
property_value: >#0252D4FF<
|
||||||
|
|
||||||
changed_by: >10<
|
changed_by: >10<
|
||||||
changed_last_30se: >1<
|
changed_recently: >1<
|
||||||
dav_name: >/user1/home/<
|
dav_name: >/user1/home/<
|
||||||
property_name: >http://apple.com/ns/ical/:calendar-order<
|
property_name: >http://apple.com/ns/ical/:calendar-order<
|
||||||
property_value: >1<
|
property_value: >1<
|
||||||
|
|||||||
@ -30,13 +30,13 @@ ENDDATA
|
|||||||
|
|
||||||
QUERY
|
QUERY
|
||||||
SELECT dav_displayname, is_calendar, resourcetypes,
|
SELECT dav_displayname, is_calendar, resourcetypes,
|
||||||
modified > (current_timestamp - '60 seconds'::interval) AS changed_last_60secs
|
modified > (current_timestamp - '120 seconds'::interval) AS changed_recently
|
||||||
FROM collection WHERE dav_name = '/user1/home/' ORDER BY collection_id
|
FROM collection WHERE dav_name = '/user1/home/' ORDER BY collection_id
|
||||||
ENDQUERY
|
ENDQUERY
|
||||||
|
|
||||||
QUERY
|
QUERY
|
||||||
SELECT dav_name, property_name, property_value, changed_by,
|
SELECT dav_name, property_name, property_value, changed_by,
|
||||||
changed_on > (current_timestamp - '60 seconds'::interval) AS changed_last_30secs
|
changed_on > (current_timestamp - '120 seconds'::interval) AS changed_recently
|
||||||
FROM property
|
FROM property
|
||||||
WHERE dav_name = '/user1/home/'
|
WHERE dav_name = '/user1/home/'
|
||||||
ORDER BY dav_name, property_name
|
ORDER BY dav_name, property_name
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "26a689e219dfe12c47d9bdf005cee099"
|
ETag: "680074e03fc52481b3dfabaa48d555a7"
|
||||||
Content-Length: 1447
|
Content-Length: 1217
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -12,7 +12,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<C:calendar-data>BEGIN:VCALENDAR
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||||
@ -20,13 +20,9 @@ VERSION:2.0
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
DTSTAMP:20061101T073000Z
|
DTSTAMP:20061101T073000Z
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
20061101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
SUMMARY:A Changed Meeting
|
||||||
20061101T110000
|
|
||||||
SUMMARY:A Meeting
|
|
||||||
X-EVOLUTION-CALDAV-HREF:http:
|
|
||||||
//user1@mycaldav/caldav.php/user1/home/20061101T073004Z.ics
|
|
||||||
BEGIN:VALARM
|
BEGIN:VALARM
|
||||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
ACTION:DISPLAY
|
ACTION:DISPLAY
|
||||||
@ -35,8 +31,7 @@ DESCRIPTION:A Meeting
|
|||||||
END:VALARM
|
END:VALARM
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
TZOFFSETFROM:+1300
|
TZOFFSETFROM:+1300
|
||||||
TZOFFSETTO:+1200
|
TZOFFSETTO:+1200
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "8a4795998583adf6b23d24f4a9e73448"
|
ETag: "474324273ec7b8c0d7e8b090e7ddcb42"
|
||||||
Content-Length: 5019
|
Content-Length: 4789
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -55,7 +55,7 @@ END:VCALENDAR
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<C:calendar-data>BEGIN:VCALENDAR
|
<C:calendar-data>BEGIN:VCALENDAR
|
||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||||
@ -63,13 +63,9 @@ VERSION:2.0
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
DTSTAMP:20061101T073000Z
|
DTSTAMP:20061101T073000Z
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
20061101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
SUMMARY:A Changed Meeting
|
||||||
20061101T110000
|
|
||||||
SUMMARY:A Meeting
|
|
||||||
X-EVOLUTION-CALDAV-HREF:http:
|
|
||||||
//user1@mycaldav/caldav.php/user1/home/20061101T073004Z.ics
|
|
||||||
BEGIN:VALARM
|
BEGIN:VALARM
|
||||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
ACTION:DISPLAY
|
ACTION:DISPLAY
|
||||||
@ -78,8 +74,7 @@ DESCRIPTION:A Meeting
|
|||||||
END:VALARM
|
END:VALARM
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
TZOFFSETFROM:+1300
|
TZOFFSETFROM:+1300
|
||||||
TZOFFSETTO:+1200
|
TZOFFSETTO:+1200
|
||||||
|
|||||||
@ -2,7 +2,7 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Content-Length: 10383
|
Content-Length: 11093
|
||||||
Etag: "855cbfab1940e342d7986c207bf3f973"
|
Etag: "855cbfab1940e342d7986c207bf3f973"
|
||||||
Content-Type: text/calendar; charset="utf-8"
|
Content-Type: text/calendar; charset="utf-8"
|
||||||
|
|
||||||
@ -23,13 +23,9 @@ END:VEVENT
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
DTSTAMP:20061101T073000Z
|
DTSTAMP:20061101T073000Z
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:20061
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:2006110
|
SUMMARY:A Changed Meeting
|
||||||
1T110000
|
|
||||||
SUMMARY:A Meeting
|
|
||||||
X-EVOLUTION-CALDAV-HREF:http://user1@mycaldav/caldav.php/user1/home/2006
|
|
||||||
1101T073004Z.ics
|
|
||||||
BEGIN:VALARM
|
BEGIN:VALARM
|
||||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||||
ACTION:DISPLAY
|
ACTION:DISPLAY
|
||||||
@ -228,6 +224,26 @@ DTSTAMP:20091006T225808Z
|
|||||||
SEQUENCE:1
|
SEQUENCE:1
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111004T153507Z
|
||||||
|
UID:0544-gzip-PUT
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:In Central Europe, 2pm, Oct 5th for 1 hour
|
||||||
|
DTSTART;TZID=Somewhere_in_Central_Europe:20111005T140000
|
||||||
|
DTEND;TZID=Somewhere_in_Central_Europe:20111005T150000
|
||||||
|
DTSTAMP:20111004T153507Z
|
||||||
|
SEQUENCE:1
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20111004T153507Z
|
||||||
|
UID:0545-deflate-PUT
|
||||||
|
TRANSP:OPAQUE
|
||||||
|
SUMMARY:In Prague, 10am, Oct 7th for 1 hour
|
||||||
|
DTSTART;TZID=Prague_in_Central_Europe:20111007T100000
|
||||||
|
DURATION:PT1H
|
||||||
|
DTSTAMP:20111004T153507Z
|
||||||
|
SEQUENCE:1
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VEVENT
|
||||||
DESCRIPTION:Have a party. All the best parties are monthly!
|
DESCRIPTION:Have a party. All the best parties are monthly!
|
||||||
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
||||||
DTSTAMP:20081024T220925Z
|
DTSTAMP:20081024T220925Z
|
||||||
@ -266,8 +282,7 @@ TZOFFSETTO:+1200
|
|||||||
END:STANDARD
|
END:STANDARD
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
TZOFFSETFROM:+1300
|
TZOFFSETFROM:+1300
|
||||||
TZOFFSETTO:+1200
|
TZOFFSETTO:+1200
|
||||||
@ -338,23 +353,6 @@ RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
|||||||
END:DAYLIGHT
|
END:DAYLIGHT
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
|
||||||
DTSTART:20000319T030000
|
|
||||||
RRULE:FREQ=YEARLY;BYDAY=3SU;BYMONTH=3
|
|
||||||
TZNAME:Pacific/Auckland
|
|
||||||
TZOFFSETFROM:+1300
|
|
||||||
TZOFFSETTO:+1200
|
|
||||||
END:STANDARD
|
|
||||||
BEGIN:DAYLIGHT
|
|
||||||
DTSTART:20001001T020000
|
|
||||||
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
|
|
||||||
TZNAME:Pacific/Auckland
|
|
||||||
TZOFFSETFROM:+1200
|
|
||||||
TZOFFSETTO:+1300
|
|
||||||
END:DAYLIGHT
|
|
||||||
END:VTIMEZONE
|
|
||||||
BEGIN:VTIMEZONE
|
|
||||||
TZID:Europe/Prague
|
TZID:Europe/Prague
|
||||||
BEGIN:DAYLIGHT
|
BEGIN:DAYLIGHT
|
||||||
TZOFFSETFROM:+0100
|
TZOFFSETFROM:+0100
|
||||||
@ -371,4 +369,40 @@ TZNAME:GMT+01:00
|
|||||||
TZOFFSETTO:+0100
|
TZOFFSETTO:+0100
|
||||||
END:STANDARD
|
END:STANDARD
|
||||||
END:VTIMEZONE
|
END:VTIMEZONE
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Somewhere_in_Central_Europe
|
||||||
|
X-MICROSOFT-CDO-TZID:4
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
DTSTART:19810329T020000
|
||||||
|
TZNAME:GMT+02:00
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
DTSTART:19961027T030000
|
||||||
|
TZNAME:GMT+01:00
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Prague_in_Central_Europe
|
||||||
|
X-MICROSOFT-CDO-TZID:4
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+0100
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||||
|
DTSTART:19810329T020000
|
||||||
|
TZNAME:GMT+02:00
|
||||||
|
TZOFFSETTO:+0200
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+0200
|
||||||
|
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||||
|
DTSTART:19961027T030000
|
||||||
|
TZNAME:GMT+01:00
|
||||||
|
TZOFFSETTO:+0100
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
|
|||||||
@ -16,7 +16,7 @@ Content-Type: text/plain; charset="utf-8"
|
|||||||
|
|
||||||
attendees: >40<
|
attendees: >40<
|
||||||
|
|
||||||
collection_id: >1564<
|
collection_id: >1566<
|
||||||
dav_displayname: >anotherone<
|
dav_displayname: >anotherone<
|
||||||
dav_etag: >f9a8ee6b41d9b02aa5176e6da349121a<
|
dav_etag: >f9a8ee6b41d9b02aa5176e6da349121a<
|
||||||
dav_name: >/user1/anotherone/<
|
dav_name: >/user1/anotherone/<
|
||||||
|
|||||||
@ -2,12 +2,12 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "dc48f1e4638af53b05dd0f29f1906989"
|
ETag: "f640afc35eb1b3892d84512c69748944"
|
||||||
Content-Length: 3827
|
Content-Length: 4581
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/">
|
<multistatus xmlns="DAV:" xmlns:C="http://calendarserver.org/ns/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:A="http://apple.com/ns/ical/" xmlns:C2="urn:ietf:params:xml:ns:carddav">
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/User%20Six/</href>
|
<href>/caldav.php/User%20Six/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -60,6 +60,32 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<status>HTTP/1.1 404 Not Found</status>
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
</propstat>
|
</propstat>
|
||||||
</response>
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/User%20Six/addresses/</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C:getctag>"28e06afe6d538a7e84518750357ef98d"</C:getctag>
|
||||||
|
<displayname>User Six addresses</displayname>
|
||||||
|
<resourcetype>
|
||||||
|
<collection/>
|
||||||
|
<C2:addressbook/>
|
||||||
|
</resourcetype>
|
||||||
|
<C1:calendar-free-busy-set>
|
||||||
|
<href>/caldav.php/User%20Six/home/</href>
|
||||||
|
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||||
|
</C1:calendar-free-busy-set>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<C1:calendar-description/>
|
||||||
|
<A:calendar-color/>
|
||||||
|
<A:calendar-order/>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 404 Not Found</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
|
|||||||
@ -6,9 +6,9 @@ Content-Length: 0
|
|||||||
Content-Type: text/plain; charset="utf-8"
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
|
||||||
|
|
||||||
cd_collection: >1564<
|
cd_collection: >1566<
|
||||||
cd_user_no: >10<
|
cd_user_no: >10<
|
||||||
ci_collection: >1564<
|
ci_collection: >1566<
|
||||||
ci_user_no: >10<
|
ci_user_no: >10<
|
||||||
data_name: >/user1/anotherone/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics<
|
data_name: >/user1/anotherone/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics<
|
||||||
item_name: >/user1/anotherone/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics<
|
item_name: >/user1/anotherone/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics<
|
||||||
|
|||||||
@ -2,8 +2,8 @@ HTTP/1.1 200 OK
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
Etag: "c3658901fd4689d4a1e1d6f08601ef4f"
|
Etag: "bcc402382688cb3e8e57379c757dbcb0"
|
||||||
Content-Length: 826
|
Content-Length: 676
|
||||||
Content-Type: text/calendar; charset="utf-8"
|
Content-Type: text/calendar; charset="utf-8"
|
||||||
|
|
||||||
BEGIN:VCALENDAR
|
BEGIN:VCALENDAR
|
||||||
@ -11,8 +11,7 @@ CALSCALE:GREGORIAN
|
|||||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
BEGIN:VTIMEZONE
|
BEGIN:VTIMEZONE
|
||||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
TZID:Pacific/Auckland
|
||||||
X-LIC-LOCATION:Pacific/Auckland
|
|
||||||
BEGIN:STANDARD
|
BEGIN:STANDARD
|
||||||
TZOFFSETFROM:+1300
|
TZOFFSETFROM:+1300
|
||||||
TZOFFSETTO:+1200
|
TZOFFSETTO:+1200
|
||||||
@ -31,10 +30,8 @@ END:VTIMEZONE
|
|||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
SUMMARY:Busy
|
SUMMARY:Busy
|
||||||
CLASS:CONFIDENTIAL
|
CLASS:CONFIDENTIAL
|
||||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||||
20061101T100000
|
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
|
||||||
20061101T110000
|
|
||||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||||
END:VEVENT
|
END:VEVENT
|
||||||
END:VCALENDAR
|
END:VCALENDAR
|
||||||
|
|||||||
41
testing/tests/regression-suite/0965-GET.result
Normal file
41
testing/tests/regression-suite/0965-GET.result
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
DAV: 1, 2, calendar-access
|
||||||
|
Etag: "13249ced6c7527191a003f54f7e3cd25"
|
||||||
|
Content-Length: 834
|
||||||
|
Content-Type: text/calendar; charset="utf-8"
|
||||||
|
|
||||||
|
BEGIN:VCALENDAR
|
||||||
|
PRODID:-//davical.org//NONSGML AWL Calendar//EN
|
||||||
|
VERSION:2.0
|
||||||
|
CALSCALE:GREGORIAN
|
||||||
|
BEGIN:VEVENT
|
||||||
|
CREATED:20081023T055115Z
|
||||||
|
LAST-MODIFIED:20081023T055139Z
|
||||||
|
DTSTAMP:20081023T055115Z
|
||||||
|
UID:9429a973-2b13-4b1a-be09-948d75425c45
|
||||||
|
SUMMARY:Weekly catch-up
|
||||||
|
RRULE:FREQ=WEEKLY;INTERVAL=1
|
||||||
|
DTSTART;TZID=Pacific/Auckland:20081024T140000
|
||||||
|
DTEND;TZID=Pacific/Auckland:20081024T150000
|
||||||
|
X-MOZ-GENERATION:2
|
||||||
|
END:VEVENT
|
||||||
|
BEGIN:VTIMEZONE
|
||||||
|
TZID:Pacific/Auckland
|
||||||
|
X-LIC-LOCATION:Pacific/Auckland
|
||||||
|
BEGIN:DAYLIGHT
|
||||||
|
TZOFFSETFROM:+1200
|
||||||
|
TZOFFSETTO:+1300
|
||||||
|
TZNAME:NZDT
|
||||||
|
DTSTART:19700927T020000
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=9
|
||||||
|
END:DAYLIGHT
|
||||||
|
BEGIN:STANDARD
|
||||||
|
TZOFFSETFROM:+1300
|
||||||
|
TZOFFSETTO:+1200
|
||||||
|
TZNAME:NZST
|
||||||
|
DTSTART:19700405T030000
|
||||||
|
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=4
|
||||||
|
END:STANDARD
|
||||||
|
END:VTIMEZONE
|
||||||
|
END:VCALENDAR
|
||||||
20
testing/tests/regression-suite/0965-GET.test
Normal file
20
testing/tests/regression-suite/0965-GET.test
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# Test GET access to a non-public calendar using a ticket.
|
||||||
|
#
|
||||||
|
TYPE=GET
|
||||||
|
URL=http://regression.host/public.php/user2/home/9429a973-2b13-4b1a-be09-948d75425c45.ics
|
||||||
|
NOAUTH
|
||||||
|
|
||||||
|
# Get the ticket we created earlier in 948...
|
||||||
|
GETSQL=ticket
|
||||||
|
SELECT ticket_id FROM access_ticket
|
||||||
|
WHERE target_collection_id = 11 AND target_resource_id is null;
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
HEADER=User-Agent: DAViCalTester/public
|
||||||
|
HEADER=Ticket: ##ticket##
|
||||||
|
HEAD
|
||||||
|
|
||||||
|
BEGINDATA
|
||||||
|
ENDDATA
|
||||||
|
|
||||||
@ -2,12 +2,32 @@ HTTP/1.1 207 Multi-Status
|
|||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||||
ETag: "40e69ecd1e31ae458e1fa4505c1ee585"
|
ETag: "6d416d900e71bc416b72a7f97e779ed3"
|
||||||
Content-Length: 5879
|
Content-Length: 6466
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<multistatus xmlns="DAV:">
|
<multistatus xmlns="DAV:">
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0544-gzip-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"6ddd18264a9d40c1c9d37a005eeb7e4f"</getetag>
|
||||||
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
|
<response>
|
||||||
|
<href>/caldav.php/user1/home/0545-deflate-PUT.ics</href>
|
||||||
|
<propstat>
|
||||||
|
<prop>
|
||||||
|
<getetag>"4a3aa58a3e11487e87d87024465d4182"</getetag>
|
||||||
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
|
</prop>
|
||||||
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
</propstat>
|
||||||
|
</response>
|
||||||
<response>
|
<response>
|
||||||
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
@ -32,7 +52,7 @@ Content-Type: text/xml; charset="utf-8"
|
|||||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||||
<propstat>
|
<propstat>
|
||||||
<prop>
|
<prop>
|
||||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||||
</prop>
|
</prop>
|
||||||
<status>HTTP/1.1 200 OK</status>
|
<status>HTTP/1.1 200 OK</status>
|
||||||
|
|||||||
@ -54,6 +54,15 @@ INSERT INTO collection (user_no, parent_container, dav_name, dav_etag,
|
|||||||
FALSE, FALSE, user_no, '<DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/>'
|
FALSE, FALSE, user_no, '<DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/>'
|
||||||
FROM usr;
|
FROM usr;
|
||||||
|
|
||||||
|
INSERT INTO collection (user_no, parent_container, dav_name, dav_etag,
|
||||||
|
dav_displayname, is_calendar, is_addressbook, created, modified,
|
||||||
|
public_events_only, publicly_readable, collection_id, resourcetypes )
|
||||||
|
SELECT user_no, '/' || username || '/', '/' || username || '/addresses/', md5(username),
|
||||||
|
username || ' addresses', FALSE, TRUE, '1957-07-26', '1998-03-16',
|
||||||
|
FALSE, FALSE, user_no + 50, '<DAV::collection/><urn:ietf:params:xml:ns:carddav:addressbook/>'
|
||||||
|
FROM usr;
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO principal (type_id, user_no, displayname, default_privileges)
|
INSERT INTO principal (type_id, user_no, displayname, default_privileges)
|
||||||
SELECT 1, user_no, fullname, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
SELECT 1, user_no, fullname, privilege_to_bits(ARRAY['read-free-busy','schedule-send','schedule-deliver']) FROM usr
|
||||||
WHERE NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no)
|
WHERE NOT EXISTS(SELECT 1 FROM role_member JOIN roles USING(role_no) WHERE role_name = 'Group' AND role_member.user_no = usr.user_no)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
1639
|
1642
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
11
|
13
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
Content-Length: 2644
|
Content-Length: 3064
|
||||||
Content-Type: application/xml; charset="utf-8"
|
Content-Type: application/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
@ -64,6 +64,13 @@ Content-Type: application/xml; charset="utf-8"
|
|||||||
<inactive/>
|
<inactive/>
|
||||||
<local-name lang="en_US">Pacific/Auckland</local-name>
|
<local-name lang="en_US">Pacific/Auckland</local-name>
|
||||||
</summary>
|
</summary>
|
||||||
|
<summary>
|
||||||
|
<tzid>Prague_in_Central_Europe</tzid>
|
||||||
|
<last-modified>all good</last-modified>
|
||||||
|
<inactive/>
|
||||||
|
<alias/>
|
||||||
|
<local-name lang="en_US">Prague_in_Central_Europe</local-name>
|
||||||
|
</summary>
|
||||||
<summary>
|
<summary>
|
||||||
<tzid>/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</tzid>
|
<tzid>/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</tzid>
|
||||||
<last-modified>all good</last-modified>
|
<last-modified>all good</last-modified>
|
||||||
@ -71,6 +78,13 @@ Content-Type: application/xml; charset="utf-8"
|
|||||||
<alias>Pacific/Auckland</alias>
|
<alias>Pacific/Auckland</alias>
|
||||||
<local-name lang="en_US">/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</local-name>
|
<local-name lang="en_US">/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</local-name>
|
||||||
</summary>
|
</summary>
|
||||||
|
<summary>
|
||||||
|
<tzid>Somewhere_in_Central_Europe</tzid>
|
||||||
|
<last-modified>all good</last-modified>
|
||||||
|
<inactive/>
|
||||||
|
<alias/>
|
||||||
|
<local-name lang="en_US">Somewhere_in_Central_Europe</local-name>
|
||||||
|
</summary>
|
||||||
<summary>
|
<summary>
|
||||||
<tzid>(UTC-05:00) Eastern Time (US & Canada)</tzid>
|
<tzid>(UTC-05:00) Eastern Time (US & Canada)</tzid>
|
||||||
<last-modified>all good</last-modified>
|
<last-modified>all good</last-modified>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,10 @@
|
|||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
ETag: "Some good etag"
|
ETag: "Some good etag"
|
||||||
|
Last-Modified: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
Content-Disposition: Attachment; Filename="Pacific-Auckland.ics"
|
||||||
Content-Length: 3658
|
Content-Length: 3658
|
||||||
Content-Type: text/calendar
|
Content-Type: text/calendar; charset=UTF-8
|
||||||
|
|
||||||
BEGIN:VCALENDAR
|
BEGIN:VCALENDAR
|
||||||
VERSION:2.0
|
VERSION:2.0
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
HTTP/1.1 200 OK
|
HTTP/1.1 200 OK
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
ETag: "Some good etag"
|
ETag: "Some good etag"
|
||||||
|
Last-Modified: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
|
Content-Disposition: Attachment; Filename="Europe-Madrid.ics"
|
||||||
Content-Length: 611
|
Content-Length: 611
|
||||||
Content-Type: text/calendar
|
Content-Type: text/calendar; charset=UTF-8
|
||||||
|
|
||||||
BEGIN:VCALENDAR
|
BEGIN:VCALENDAR
|
||||||
PRODID:-//Morphoss Ltd//NONSGML aCal//EN
|
PRODID:-//Morphoss Ltd//NONSGML aCal//EN
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
HTTP/1.1 403 Forbidden
|
HTTP/1.1 403 Forbidden
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
Content-Length: 148
|
Content-Length: 183
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<error xmlns="DAV:">
|
<error xmlns="urn:ietf:params:xml:ns:timezone-service">
|
||||||
<supported-format/>This server currently only supports text/calendar format.
|
<supported-format/>This server currently only supports text/calendar format.
|
||||||
</error>
|
</error>
|
||||||
@ -1,9 +1,9 @@
|
|||||||
HTTP/1.1 403 Forbidden
|
HTTP/1.1 403 Forbidden
|
||||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||||
Content-Length: 148
|
Content-Length: 183
|
||||||
Content-Type: text/xml; charset="utf-8"
|
Content-Type: text/xml; charset="utf-8"
|
||||||
|
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<error xmlns="DAV:">
|
<error xmlns="urn:ietf:params:xml:ns:timezone-service">
|
||||||
<supported-format/>This server currently only supports text/calendar format.
|
<supported-format/>This server currently only supports text/calendar format.
|
||||||
</error>
|
</error>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
1649
|
1652
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
setval
|
setval
|
||||||
--------
|
--------
|
||||||
11
|
13
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
setval
|
setval
|
||||||
|
|||||||
@ -13,5 +13,5 @@ TZDATAFILE="`ls -t tzdata*.tar.gz|tail -n 1`"
|
|||||||
mkdir tzdata && cd tzdata && tar -xfz ../$TZDATAFILE
|
mkdir tzdata && cd tzdata && tar -xfz ../$TZDATAFILE
|
||||||
)
|
)
|
||||||
|
|
||||||
vzic --olson-dir tzdata --output-dir vtimezones
|
vzic --pure --olson-dir tzdata --output-dir vtimezones
|
||||||
echo "Olson `echo $TZDATAFILE | cut -f1 -d.`" >vtimezones/primary-source
|
echo "Olson `echo $TZDATAFILE | cut -f1 -d.`" >vtimezones/primary-source
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user