mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-05-23 02:14:16 +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 'PROPPATCH': include('caldav-PROPPATCH.php'); break;
|
||||
case 'PUT':
|
||||
$request->CoerceContentType();
|
||||
switch( $request->content_type ) {
|
||||
case 'text/calendar':
|
||||
include('caldav-PUT-vcalendar.php');
|
||||
|
||||
@ -14,7 +14,7 @@ $session = new PublicSession();
|
||||
|
||||
param_to_global('action','{[a-z_-]+}');
|
||||
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('end');
|
||||
param_to_global('lang');
|
||||
@ -26,7 +26,7 @@ $request = new CalDAVRequest();
|
||||
|
||||
$code_file = sprintf( 'tz/%s.php', $action );
|
||||
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.") );
|
||||
|
||||
@ -17,11 +17,16 @@ if ( ! isset ( $request ) ) {
|
||||
switch ( $request->path ) {
|
||||
case '/.well-known/caldav':
|
||||
case '/.well-known/carddav':
|
||||
header('Location: ' . ConstructURL('/',true) );
|
||||
header('Location: ' . $c->protocol_server_port . ConstructURL('/',true) );
|
||||
$request->DoResponse(301); // Moved permanently
|
||||
// does not return.
|
||||
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
|
||||
// does not return.
|
||||
}
|
||||
|
||||
@ -115,7 +115,33 @@ class CalDAVRequest
|
||||
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');
|
||||
$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']) ) {
|
||||
$_SERVER['REQUEST_METHOD'] = $_GET['method'];
|
||||
@ -136,14 +162,12 @@ class CalDAVRequest
|
||||
$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"));
|
||||
|
||||
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
|
||||
*/
|
||||
@ -819,7 +843,11 @@ EOSQL;
|
||||
if ( isset($this->content_type) ) {
|
||||
$type = explode( '/', $this->content_type, 2);
|
||||
/** @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... */
|
||||
@ -845,7 +873,7 @@ EOSQL;
|
||||
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 );
|
||||
}
|
||||
$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 $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" ?>
|
||||
<error xmlns="DAV:">
|
||||
<error xmlns="%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"' );
|
||||
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
|
||||
* 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 ) {
|
||||
$this->base->setTimezone(new DateTimeZone($tzstring));
|
||||
}
|
||||
@ -606,7 +665,7 @@ class RepeatRule {
|
||||
$this->finished = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function rewind() {
|
||||
$this->position = -1;
|
||||
}
|
||||
@ -1019,6 +1078,7 @@ class RepeatRule {
|
||||
}
|
||||
|
||||
|
||||
|
||||
require_once("vComponent.php");
|
||||
|
||||
/**
|
||||
@ -1104,11 +1164,13 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
|
||||
global $c;
|
||||
$components = $vResource->GetComponents();
|
||||
|
||||
if ( !isset($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_start) ) { $range_start = new RepeatRuleDateTime(); $range_start->modify('-6 weeks'); }
|
||||
if ( empty($range_end) ) {
|
||||
$range_end = clone($range_start);
|
||||
$range_end->modify('+6 months');
|
||||
}
|
||||
|
||||
$new_components = array();
|
||||
$result_limit = 1000;
|
||||
$instances = array();
|
||||
$expand = false;
|
||||
$dtstart = null;
|
||||
@ -1304,3 +1366,86 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
|
||||
|
||||
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" ) {
|
||||
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.
|
||||
$sql = 'UPDATE locks SET start = current_timestamp WHERE opaquelocktoken = :lock_token';
|
||||
$params = array( ':lock_token' => $lock_token);
|
||||
@ -123,7 +126,7 @@ if ( $request->method == "LOCK" ) {
|
||||
':scope' => $lockinfo['scope'],
|
||||
':request_depth' => $request->depth,
|
||||
':owner' => $lockinfo['owner'],
|
||||
':timeout' => $request->timeout.' seconds'
|
||||
':timeout' => $lock_timeout.' seconds'
|
||||
);
|
||||
header( "Lock-Token: <opaquelocktoken:$lock_token>" );
|
||||
}
|
||||
@ -136,7 +139,7 @@ if ( $request->method == "LOCK" ) {
|
||||
new XMLElement( 'lockscope', new XMLElement( $lock_row->scope )),
|
||||
new XMLElement( 'depth', $request->GetDepthName() ),
|
||||
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 ))
|
||||
);
|
||||
$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 .= "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 .= '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) ';
|
||||
|
||||
@ -566,7 +566,11 @@ EOSQL;
|
||||
if ( $qry->Exec('PUT',__LINE__,__FILE__) && $qry->rows() == 0 ) {
|
||||
$params[':olson_name'] = $olson;
|
||||
$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 {
|
||||
|
||||
@ -39,7 +39,7 @@ else {
|
||||
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->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');
|
||||
}
|
||||
|
||||
@ -87,9 +87,9 @@ function apply_filter( $filters, $item ) {
|
||||
* Process a filter fragment returning an SQL fragment
|
||||
*/
|
||||
$need_post_filter = false;
|
||||
$need_range_filter = false;
|
||||
$range_filter = 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 = "";
|
||||
$params = array();
|
||||
if ( !is_array($filter) ) {
|
||||
@ -135,34 +135,33 @@ function SqlFilterFragment( $filter, $components, $property = null, $parameter =
|
||||
|
||||
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
|
||||
$finish_column = 'dtstart'; // The column we compare against the END attribute
|
||||
$start = $v->GetAttribute("start");
|
||||
$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 = '';
|
||||
if ( isset($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) ) {
|
||||
$params[':time_range_end'] = $finish;
|
||||
$finish_sql = ' dtstart < :time_range_end ';
|
||||
$finish_sql = ' '.$finish_column.' < :time_range_end ';
|
||||
}
|
||||
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) && isset($finish) ) $sql .= ' AND ';
|
||||
if ( isset($finish) ) $sql .= $finish_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;
|
||||
|
||||
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 ( $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);
|
||||
$expanded = expand_event_instances($vResource, $need_range_filter[0], $need_range_filter[1]);
|
||||
if ( $expanded->ComponentCount() == 0 ) continue;
|
||||
$expanded = getVCalendarRange($vResource);
|
||||
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 );
|
||||
}
|
||||
|
||||
@ -14,21 +14,21 @@ require_once('RRule-v2.php');
|
||||
|
||||
if ( empty($format) ) $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($end) ) $end = sprintf( '%04d-12-31', date('Y') + 10);
|
||||
|
||||
$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';
|
||||
$params = array( ':tzid' => $tzid );
|
||||
$qry = new AwlQuery($sql,$params);
|
||||
if ( !$qry->Exec() ) exit(1);
|
||||
if ( $qry->rows() < 1 ) {
|
||||
$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';
|
||||
if ( !$qry->Exec() ) exit(1);
|
||||
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" => ""));
|
||||
$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);
|
||||
$until = new RepeatRuleDateTime($end);
|
||||
|
||||
@ -13,18 +13,18 @@ require_once('vCalendar.php');
|
||||
|
||||
if ( empty($format) ) $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 .= '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';
|
||||
$params = array( ':tzid' => $tzid );
|
||||
$qry = new AwlQuery($sql,$params);
|
||||
if ( !$qry->Exec() ) exit(1);
|
||||
if ( $qry->rows() < 1 ) {
|
||||
$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';
|
||||
if ( !$qry->Exec() ) exit(1);
|
||||
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( '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" => "") );
|
||||
$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();
|
||||
$where = '';
|
||||
if ( $returnall !== true ) {
|
||||
@ -23,9 +30,14 @@ if ( $returnall !== true ) {
|
||||
}
|
||||
if ( !empty($changedsince) ) {
|
||||
if ( !empty($where) ) $where .= ' AND ';
|
||||
$where .= 'last_modified >= :changedsince';
|
||||
$where .= 'last_modified > :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($c->strict_result_ordering) && $c->strict_result_ordering ) {
|
||||
@ -67,7 +79,7 @@ if ( $qry->Exec('tz/list',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
@ -159,7 +159,7 @@ if ( empty($c->tzsource) ) $c->tzsource = '../zonedb/vtimezones';
|
||||
if ( preg_match('{^http}', $c->tzsource ) ) {
|
||||
|
||||
$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();
|
||||
if ( $qry->Exec('tz/updatecheck',__LINE__,__FILE__) && $qry->rows() > 0 ) {
|
||||
while( $row = $qry->Fetch() )
|
||||
|
||||
@ -7,7 +7,7 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/user2/<
|
||||
|
||||
@ -9,7 +9,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<error xmlns="DAV:">
|
||||
<can-overwrite/>A resource already exists at the destination.
|
||||
</error>
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/user2/<
|
||||
|
||||
@ -58,6 +58,24 @@
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user4/nz_holidays/</href>
|
||||
<propstat>
|
||||
@ -100,7 +118,7 @@
|
||||
<prop>
|
||||
<displayname>User 4 Outbox</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1597</href>
|
||||
<href>/caldav.php/.resources/1600</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
|
||||
@ -7,14 +7,14 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
dav_name: >/user4/user2/<
|
||||
parent_container: >/user4/<
|
||||
ticket_id_length: >8<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/user1/<
|
||||
|
||||
@ -7,21 +7,21 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
dav_name: >/user4/user2/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/base/user1/<
|
||||
|
||||
@ -7,28 +7,28 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
dav_name: >/user4/user2/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/base/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/base/<
|
||||
|
||||
bind_id: >1605<
|
||||
bind_id: >1608<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/base/user2/<
|
||||
|
||||
@ -9,28 +9,28 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<error xmlns="DAV:">
|
||||
<can-overwrite/>A resource already exists at the destination.
|
||||
</error>
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
dav_name: >/user4/user2/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/base/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/base/<
|
||||
|
||||
bind_id: >1605<
|
||||
bind_id: >1608<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/base/user2/<
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<prop>
|
||||
<displayname>A normal collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1602</href>
|
||||
<href>/caldav.php/.resources/1605</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
@ -90,7 +90,7 @@
|
||||
<prop>
|
||||
<displayname>A sub collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1603</href>
|
||||
<href>/caldav.php/.resources/1606</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<prop>
|
||||
<displayname>A normal collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1602</href>
|
||||
<href>/caldav.php/.resources/1605</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
|
||||
@ -7,7 +7,7 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bind_owner: >1005<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
@ -19,7 +19,7 @@ target_collection: >11<
|
||||
target_resource_i: >NULL<
|
||||
ticket_owner: >1003<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bind_owner: >1005<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
@ -31,7 +31,7 @@ target_collection: >10<
|
||||
target_resource_i: >NULL<
|
||||
ticket_owner: >1002<
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bind_owner: >1005<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
@ -43,7 +43,7 @@ target_collection: >10<
|
||||
target_resource_i: >NULL<
|
||||
ticket_owner: >1002<
|
||||
|
||||
bind_id: >1605<
|
||||
bind_id: >1608<
|
||||
bind_owner: >1005<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
@ -55,7 +55,7 @@ target_collection: >11<
|
||||
target_resource_i: >NULL<
|
||||
ticket_owner: >1003<
|
||||
|
||||
bind_id: >1626<
|
||||
bind_id: >1629<
|
||||
bind_owner: >1<
|
||||
bound_source_id: >12<
|
||||
dav_displayname: >user3 home<
|
||||
|
||||
@ -6,14 +6,14 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/base/user1/<
|
||||
dav_owner_id: >1005<
|
||||
parent_container: >/user4/base/<
|
||||
|
||||
bind_id: >1605<
|
||||
bind_id: >1608<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/base/user2/<
|
||||
|
||||
@ -2,7 +2,7 @@ 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
|
||||
Content-Length: 21618
|
||||
Content-Length: 22330
|
||||
Etag: "ae93907cb03bc025b8e733eb61f3a09e"
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
|
||||
@ -108,13 +108,9 @@ END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||
DTSTAMP:20061101T073000Z
|
||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:20061
|
||||
101T100000
|
||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:2006110
|
||||
1T110000
|
||||
SUMMARY:A Meeting
|
||||
X-EVOLUTION-CALDAV-HREF:http://user1@mycaldav/caldav.php/user1/home/2006
|
||||
1101T073004Z.ics
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
SUMMARY:A Changed Meeting
|
||||
BEGIN:VALARM
|
||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||
ACTION:DISPLAY
|
||||
@ -313,6 +309,26 @@ DTSTAMP:20091006T225808Z
|
||||
SEQUENCE:1
|
||||
END: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!
|
||||
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
||||
DTSTAMP:20081024T220925Z
|
||||
@ -618,24 +634,6 @@ TZOFFSETTO:+1200
|
||||
END:STANDARD
|
||||
END: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
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
@ -706,4 +704,40 @@ TZNAME:GMT+01:00
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
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
|
||||
|
||||
@ -7,36 +7,36 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
bind_id: >1599<
|
||||
bind_id: >1602<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >Updated Displayname with PROPPATCH<
|
||||
dav_name: >/user4/user2/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1600<
|
||||
bind_id: >1603<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/<
|
||||
|
||||
bind_id: >1604<
|
||||
bind_id: >1607<
|
||||
bound_source_id: >10<
|
||||
dav_displayname: >User 1's Calendaranza<
|
||||
dav_name: >/user4/base/user1/<
|
||||
length: >8<
|
||||
parent_container: >/user4/base/<
|
||||
|
||||
bind_id: >1605<
|
||||
bind_id: >1608<
|
||||
bound_source_id: >11<
|
||||
dav_displayname: >User 2's Calendar, as uploaded by Admin<
|
||||
dav_name: >/user4/base/user2/<
|
||||
length: >8<
|
||||
parent_container: >/user4/base/<
|
||||
|
||||
bind_id: >1627<
|
||||
bound_source_id: >1602<
|
||||
bind_id: >1630<
|
||||
bound_source_id: >1605<
|
||||
dav_displayname: >A normal collection<
|
||||
dav_name: >/user4/boundbase/<
|
||||
length: >NULL<
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<prop>
|
||||
<displayname>A normal collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1602</href>
|
||||
<href>/caldav.php/.resources/1605</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
@ -90,7 +90,7 @@
|
||||
<prop>
|
||||
<displayname>A sub collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1603</href>
|
||||
<href>/caldav.php/.resources/1606</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
@ -112,7 +112,7 @@
|
||||
<prop>
|
||||
<displayname>newcalendar</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1616</href>
|
||||
<href>/caldav.php/.resources/1619</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<prop>
|
||||
<displayname>A normal collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1602</href>
|
||||
<href>/caldav.php/.resources/1605</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
@ -99,7 +99,7 @@
|
||||
<prop>
|
||||
<displayname>A sub collection</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1603</href>
|
||||
<href>/caldav.php/.resources/1606</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
@ -125,7 +125,7 @@
|
||||
<prop>
|
||||
<displayname>newcalendar</displayname>
|
||||
<resource-id>
|
||||
<href>/caldav.php/.resources/1616</href>
|
||||
<href>/caldav.php/.resources/1619</href>
|
||||
</resource-id>
|
||||
<parent-set>
|
||||
<parent>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
setval
|
||||
--------
|
||||
1598
|
||||
1601
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
setval
|
||||
--------
|
||||
11
|
||||
13
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
|
||||
@ -2,7 +2,7 @@ HTTP/1.1 403 Forbidden
|
||||
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
|
||||
Content-Length: 91
|
||||
Content-Length: 92
|
||||
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
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Location: /caldav.php/
|
||||
Location: http://mycaldav/caldav.php/
|
||||
Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
HTTP/1.1 301 Moved Permanently
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Location: /caldav.php/
|
||||
Location: http://mycaldav/caldav.php/
|
||||
Content-Length: 0
|
||||
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
|
||||
--------
|
||||
1627
|
||||
1630
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
setval
|
||||
--------
|
||||
11
|
||||
13
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "f7655907e64525c7ecaa409f800e8f8b"
|
||||
Content-Length: 1805
|
||||
ETag: "6224e345c323da0dfc00689c21171119"
|
||||
Content-Length: 2254
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/calendar-proxy-read/</href>
|
||||
<propstat>
|
||||
@ -53,7 +72,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C2:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C2:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "297a698b8d8c51217f0de910462dc6d8"
|
||||
Content-Length: 2206
|
||||
ETag: "966d4f7d769690fca393be5ba814e8a2"
|
||||
Content-Length: 2655
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C2:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -91,7 +110,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C2:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
|
||||
@ -6,4 +6,46 @@ HEADER=If-None-Match: *
|
||||
HEADER=User-Agent: Evolution/1.8.1
|
||||
HEADER=Content-Type: text/calendar
|
||||
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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook
|
||||
ETag: "882eeadb4b2e998ed4358acda515e963"
|
||||
Content-Length: 1421
|
||||
ETag: "ab07e565993a377f23fc062109bbf013"
|
||||
Content-Length: 2857
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<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>
|
||||
<href>/caldav.php/user1/home/e6eb5bc9-f7f9-4a0a-94e8-8e90eefc7d08.ics</href>
|
||||
<propstat>
|
||||
@ -59,6 +109,16 @@ END:VCALENDAR
|
||||
</response>
|
||||
</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<
|
||||
due: >2007-12-09 13:30:00+13<
|
||||
rrule: >NULL<
|
||||
|
||||
@ -35,9 +35,14 @@ SELECT dtstart, due,
|
||||
FROM calendar_item JOIN caldav_data USING (dav_id)
|
||||
WHERE calendar_item.dav_name ~ '^/user1/home/'
|
||||
AND caldav_data.caldav_type = 'VTODO'
|
||||
AND (rrule IS NOT NULL
|
||||
OR (dtstart >= '20071101T110000Z' AND dtstart < '20080104T110000Z')
|
||||
OR (due >= '20071101T110000Z' AND dtstart < '20080104T110000Z')
|
||||
)
|
||||
AND (rrule IS NOT NULL OR dtstart IS NULL
|
||||
OR (
|
||||
(
|
||||
(due IS NULL AND dtstart > '20071101T110000Z')
|
||||
OR due > '20071101T110000Z'
|
||||
)
|
||||
AND dtstart < '20080104T110000Z'
|
||||
)
|
||||
)
|
||||
ENDQUERY
|
||||
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "929672a83aec9ab7d7b4a85c61814772"
|
||||
Content-Length: 2161
|
||||
ETag: "fd17acf5fe9ad6e6612323ef680b3d10"
|
||||
Content-Length: 2601
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -46,6 +46,25 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
@ -72,7 +91,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C2:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -91,7 +110,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<getcontenttype>httpd/unix-directory</getcontenttype>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C2:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<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
|
||||
CALSCALE:GREGORIAN
|
||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||
@ -5,13 +19,9 @@ 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
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
SUMMARY:A Changed Meeting
|
||||
BEGIN:VALARM
|
||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||
ACTION:DISPLAY
|
||||
@ -20,8 +30,7 @@ DESCRIPTION:A Meeting
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
TZID:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
@ -38,3 +47,4 @@ RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
END:VCALENDAR
|
||||
ENDDATA
|
||||
@ -2,12 +2,12 @@ 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: "3d57f5e85f8e7d0fe3398eeace49ce1a"
|
||||
Content-Length: 3181
|
||||
ETag: "e3f59c55883b61b4390fd7ffbe74644b"
|
||||
Content-Length: 3649
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -48,6 +48,26 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
@ -115,7 +135,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<displayname>/user1/calendar-proxy-read/</displayname>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C2:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -135,7 +155,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<displayname>/user1/calendar-proxy-write/</displayname>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C2:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "c30ae7a73f7f3c95895032994b51554d"
|
||||
ETag: "e76f1252cff440810b604e3903cc364b"
|
||||
Content-Length: 675
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
@ -13,7 +13,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname>user1 home</displayname>
|
||||
<C:getctag>"c4b202f2177d8839c95d715f26cf62da"</C:getctag>
|
||||
<C:getctag>"86d97f6156e59bbf1b1514e804a6cc1c"</C:getctag>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar/>
|
||||
|
||||
@ -2,7 +2,7 @@ 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: "c0dc924dbe52600ea776c98136f289b0"
|
||||
ETag: "198df454dbf27f8311378759dfeaee14"
|
||||
Content-Length: 4155
|
||||
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>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "b11fc11a4033759ef4a7694f058b95cc"
|
||||
Content-Length: 3932
|
||||
ETag: "8ae10873cb1929fd0e66571128cf01ea"
|
||||
Content-Length: 4594
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user2/</href>
|
||||
<propstat>
|
||||
@ -58,6 +58,31 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user2/.in/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "3ff13339128a73ed5d25308b678c3bc5"
|
||||
Content-Length: 4847
|
||||
ETag: "45a0a8b922545d0793e9b0b9d10726fe"
|
||||
Content-Length: 6054
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/manager1/</href>
|
||||
<propstat>
|
||||
@ -82,6 +82,43 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/manager1/calendar-proxy-read/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "e7cd1ee6cd4eb1e0e2aaa1d2b5a0bfb1"
|
||||
Content-Length: 15648
|
||||
ETag: "9e402a9adb641a6ce4891a105f7963bd"
|
||||
Content-Length: 17404
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -161,6 +161,78 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,7 +2,7 @@ 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: "6466df744e5f263784fd0e85915683b6"
|
||||
ETag: "c932a7b77636c45a6395fb906c9ff80c"
|
||||
Content-Length: 4421
|
||||
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>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<resourcetype/>
|
||||
</prop>
|
||||
<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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "ffa85945cfea407705b4af67ba7f4259"
|
||||
Content-Length: 11513
|
||||
ETag: "4f2f5fe4966246175dfc7a90396422d2"
|
||||
Content-Length: 12754
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -70,7 +70,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname>user1 home</displayname>
|
||||
<C1:getctag>"86a1e7300c8b748329ad3617974ad08a"</C1:getctag>
|
||||
<C1:getctag>"243d78db0cc75a576d2603eef69efdc9"</C1:getctag>
|
||||
<A:calendar-color>#0252D4FF</A:calendar-color>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
@ -131,6 +131,63 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "ffa85945cfea407705b4af67ba7f4259"
|
||||
Content-Length: 11513
|
||||
ETag: "4f2f5fe4966246175dfc7a90396422d2"
|
||||
Content-Length: 12754
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -70,7 +70,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<propstat>
|
||||
<prop>
|
||||
<displayname>user1 home</displayname>
|
||||
<C1:getctag>"86a1e7300c8b748329ad3617974ad08a"</C1:getctag>
|
||||
<C1:getctag>"243d78db0cc75a576d2603eef69efdc9"</C1:getctag>
|
||||
<A:calendar-color>#0252D4FF</A:calendar-color>
|
||||
<C:supported-calendar-component-set>
|
||||
<C:comp name="VEVENT"/>
|
||||
@ -131,6 +131,63 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ 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: "571aa22469ee7442c32ba35664da10de"
|
||||
Content-Length: 880
|
||||
ETag: "64bfdf4e95a5799a86f1c79e0f3faf1d"
|
||||
Content-Length: 1369
|
||||
Content-Type: text/xml; charset="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>
|
||||
</propstat>
|
||||
</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>
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "d98f282a5121894cde0b43b6ecf143df"
|
||||
Content-Length: 4285
|
||||
ETag: "4b62114cda76b7d0b7e18ee55488af71"
|
||||
Content-Length: 4741
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/user1/</href>
|
||||
<propstat>
|
||||
@ -47,6 +47,25 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
@ -146,7 +165,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<displayname>/user1/calendar-proxy-read/</displayname>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-read/>
|
||||
<C2:calendar-proxy-read/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
@ -165,7 +184,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<displayname>/user1/calendar-proxy-write/</displayname>
|
||||
<resourcetype>
|
||||
<collection/>
|
||||
<C1:calendar-proxy-write/>
|
||||
<C2:calendar-proxy-write/>
|
||||
</resourcetype>
|
||||
</prop>
|
||||
<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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "4455c8df8e5a0572ba52dccb00843cfe"
|
||||
Content-Length: 4030
|
||||
ETag: "f855e21bdab0b98d0bfefa0211bde9ac"
|
||||
Content-Length: 4479
|
||||
Content-Type: text/xml; charset="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>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
@ -152,5 +152,23 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<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>
|
||||
</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>
|
||||
</multistatus>
|
||||
|
||||
@ -2,12 +2,30 @@ 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: "a4ec15e128c8e06e81c57af754448f81"
|
||||
Content-Length: 3786
|
||||
ETag: "99574d7bc8d5f12a1a5ac80934cee9f2"
|
||||
Content-Length: 4235
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<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>
|
||||
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
||||
<propstat>
|
||||
@ -30,7 +48,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
</prop>
|
||||
<status>HTTP/1.1 200 OK</status>
|
||||
</propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ 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: "12c556718c27de34471b0b9f333610fc"
|
||||
Content-Length: 15922
|
||||
ETag: "b809f86b465fa4356c00d884de114029"
|
||||
Content-Length: 17557
|
||||
Content-Type: text/xml; charset="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>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<propstat>
|
||||
|
||||
@ -2,8 +2,8 @@ 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: "2c82262a1c8f2caf0dccf46188970a65"
|
||||
Content-Length: 5036
|
||||
ETag: "cb882ded16756e36bbd614591982f2e7"
|
||||
Content-Length: 5572
|
||||
Content-Type: text/xml; charset="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>
|
||||
</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>
|
||||
<href>/caldav.php/user1/created/</href>
|
||||
<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: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||
Content-Length: 460
|
||||
Content-Length: 456
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||
</owner>
|
||||
<timeout>Second-8640000</timeout>
|
||||
<timeout>Second-300</timeout>
|
||||
<locktoken>
|
||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||
</locktoken>
|
||||
|
||||
@ -2,7 +2,7 @@ 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
|
||||
Content-Length: 460
|
||||
Content-Length: 456
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -19,7 +19,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||
</owner>
|
||||
<timeout>Second-8640000</timeout>
|
||||
<timeout>Second-300</timeout>
|
||||
<locktoken>
|
||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||
</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: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||
Content-Length: 460
|
||||
Content-Length: 456
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||
</owner>
|
||||
<timeout>Second-8640000</timeout>
|
||||
<timeout>Second-300</timeout>
|
||||
<locktoken>
|
||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||
</locktoken>
|
||||
|
||||
@ -2,7 +2,7 @@ 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
|
||||
Content-Length: 460
|
||||
Content-Length: 456
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -19,7 +19,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||
</owner>
|
||||
<timeout>Second-8640000</timeout>
|
||||
<timeout>Second-300</timeout>
|
||||
<locktoken>
|
||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||
</locktoken>
|
||||
|
||||
@ -78,11 +78,11 @@
|
||||
<propstat>
|
||||
<prop>
|
||||
<creationdate>20061031T183000Z</creationdate>
|
||||
<displayname>A Meeting</displayname>
|
||||
<displayname>A Changed Meeting</displayname>
|
||||
<getcontentlanguage/>
|
||||
<getcontentlength>1059</getcontentlength>
|
||||
<getcontentlength>829</getcontentlength>
|
||||
<getcontenttype>text/calendar</getcontenttype>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
<resourcetype/>
|
||||
<supportedlock>
|
||||
@ -598,6 +598,76 @@
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/user1/home/DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74.ics</href>
|
||||
<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: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
Lock-Token: <opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
|
||||
Content-Length: 460
|
||||
Content-Length: 456
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -20,7 +20,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<owner>
|
||||
<href>http://andrew.mcmillan.net.nz/node/5/</href>
|
||||
</owner>
|
||||
<timeout>Second-8640000</timeout>
|
||||
<timeout>Second-300</timeout>
|
||||
<locktoken>
|
||||
<href>opaquelocktoken:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</href>
|
||||
</locktoken>
|
||||
|
||||
@ -36,19 +36,19 @@ Content-Type: text/xml; charset="utf-8"
|
||||
</response>
|
||||
</multistatus>
|
||||
|
||||
changed_last_60se: >1<
|
||||
changed_recently: >1<
|
||||
dav_displayname: >user1 home<
|
||||
is_calendar: >1<
|
||||
resourcetypes: ><DAV::collection/><urn:ietf:params:xml:ns:caldav:calendar/><
|
||||
|
||||
changed_by: >10<
|
||||
changed_last_30se: >1<
|
||||
changed_recently: >1<
|
||||
dav_name: >/user1/home/<
|
||||
property_name: >http://apple.com/ns/ical/:calendar-color<
|
||||
property_value: >#0252D4FF<
|
||||
|
||||
changed_by: >10<
|
||||
changed_last_30se: >1<
|
||||
changed_recently: >1<
|
||||
dav_name: >/user1/home/<
|
||||
property_name: >http://apple.com/ns/ical/:calendar-order<
|
||||
property_value: >1<
|
||||
|
||||
@ -30,13 +30,13 @@ ENDDATA
|
||||
|
||||
QUERY
|
||||
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
|
||||
ENDQUERY
|
||||
|
||||
QUERY
|
||||
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
|
||||
WHERE dav_name = '/user1/home/'
|
||||
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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "26a689e219dfe12c47d9bdf005cee099"
|
||||
Content-Length: 1447
|
||||
ETag: "680074e03fc52481b3dfabaa48d555a7"
|
||||
Content-Length: 1217
|
||||
Content-Type: text/xml; charset="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>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<C:calendar-data>BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||
@ -20,13 +20,9 @@ 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
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
SUMMARY:A Changed Meeting
|
||||
BEGIN:VALARM
|
||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||
ACTION:DISPLAY
|
||||
@ -35,8 +31,7 @@ DESCRIPTION:A Meeting
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
TZID:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
|
||||
@ -2,8 +2,8 @@ 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: "8a4795998583adf6b23d24f4a9e73448"
|
||||
Content-Length: 5019
|
||||
ETag: "474324273ec7b8c0d7e8b090e7ddcb42"
|
||||
Content-Length: 4789
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -55,7 +55,7 @@ END:VCALENDAR
|
||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<C:calendar-data>BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||
@ -63,13 +63,9 @@ 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
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
SUMMARY:A Changed Meeting
|
||||
BEGIN:VALARM
|
||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||
ACTION:DISPLAY
|
||||
@ -78,8 +74,7 @@ DESCRIPTION:A Meeting
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
TZID:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
|
||||
@ -2,7 +2,7 @@ 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
|
||||
Content-Length: 10383
|
||||
Content-Length: 11093
|
||||
Etag: "855cbfab1940e342d7986c207bf3f973"
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
|
||||
@ -23,13 +23,9 @@ END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||
DTSTAMP:20061101T073000Z
|
||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:20061
|
||||
101T100000
|
||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:2006110
|
||||
1T110000
|
||||
SUMMARY:A Meeting
|
||||
X-EVOLUTION-CALDAV-HREF:http://user1@mycaldav/caldav.php/user1/home/2006
|
||||
1101T073004Z.ics
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
SUMMARY:A Changed Meeting
|
||||
BEGIN:VALARM
|
||||
X-EVOLUTION-ALARM-UID:20061101T073000Z-10480-1000-1-5@ubu
|
||||
ACTION:DISPLAY
|
||||
@ -228,6 +224,26 @@ DTSTAMP:20091006T225808Z
|
||||
SEQUENCE:1
|
||||
END: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!
|
||||
UID:DAYPARTY-77C6-4FB7-BDD3-6882E2F1BE74
|
||||
DTSTAMP:20081024T220925Z
|
||||
@ -266,8 +282,7 @@ TZOFFSETTO:+1200
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
TZID:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
@ -338,23 +353,6 @@ RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=10
|
||||
END:DAYLIGHT
|
||||
END: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
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
@ -371,4 +369,40 @@ TZNAME:GMT+01:00
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
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
|
||||
|
||||
@ -16,7 +16,7 @@ Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
attendees: >40<
|
||||
|
||||
collection_id: >1564<
|
||||
collection_id: >1566<
|
||||
dav_displayname: >anotherone<
|
||||
dav_etag: >f9a8ee6b41d9b02aa5176e6da349121a<
|
||||
dav_name: >/user1/anotherone/<
|
||||
|
||||
@ -2,12 +2,12 @@ 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: "dc48f1e4638af53b05dd0f29f1906989"
|
||||
Content-Length: 3827
|
||||
ETag: "f640afc35eb1b3892d84512c69748944"
|
||||
Content-Length: 4581
|
||||
Content-Type: text/xml; charset="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>
|
||||
<href>/caldav.php/User%20Six/</href>
|
||||
<propstat>
|
||||
@ -60,6 +60,32 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<status>HTTP/1.1 404 Not Found</status>
|
||||
</propstat>
|
||||
</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>
|
||||
<href>/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/</href>
|
||||
<propstat>
|
||||
|
||||
@ -6,9 +6,9 @@ Content-Length: 0
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
|
||||
cd_collection: >1564<
|
||||
cd_collection: >1566<
|
||||
cd_user_no: >10<
|
||||
ci_collection: >1564<
|
||||
ci_collection: >1566<
|
||||
ci_user_no: >10<
|
||||
data_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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
Etag: "c3658901fd4689d4a1e1d6f08601ef4f"
|
||||
Content-Length: 826
|
||||
Etag: "bcc402382688cb3e8e57379c757dbcb0"
|
||||
Content-Length: 676
|
||||
Content-Type: text/calendar; charset="utf-8"
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
@ -11,8 +11,7 @@ CALSCALE:GREGORIAN
|
||||
PRODID:-//Ximian//NONSGML Evolution Calendar//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/softwarestudio.org/Olson_20011030_5/Pacific/Auckland
|
||||
X-LIC-LOCATION:Pacific/Auckland
|
||||
TZID:Pacific/Auckland
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
@ -31,10 +30,8 @@ END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Busy
|
||||
CLASS:CONFIDENTIAL
|
||||
DTSTART;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
||||
20061101T100000
|
||||
DTEND;TZID=/softwarestudio.org/Olson_20011030_5/Pacific/Auckland:
|
||||
20061101T110000
|
||||
DTSTART;TZID=Pacific/Auckland:20061101T100000
|
||||
DTEND;TZID=Pacific/Auckland:20061101T110000
|
||||
UID:20061101T073000Z-10468-1000-1-7@ubu
|
||||
END:VEVENT
|
||||
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
|
||||
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
|
||||
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
|
||||
ETag: "40e69ecd1e31ae458e1fa4505c1ee585"
|
||||
Content-Length: 5879
|
||||
ETag: "6d416d900e71bc416b72a7f97e779ed3"
|
||||
Content-Length: 6466
|
||||
Content-Type: text/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<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>
|
||||
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
|
||||
<propstat>
|
||||
@ -32,7 +52,7 @@ Content-Type: text/xml; charset="utf-8"
|
||||
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
|
||||
<propstat>
|
||||
<prop>
|
||||
<getetag>"c3658901fd4689d4a1e1d6f08601ef4f"</getetag>
|
||||
<getetag>"bcc402382688cb3e8e57379c757dbcb0"</getetag>
|
||||
<getlastmodified>Dow, 01 Jan 2000 00:00:00 GMT</getlastmodified>
|
||||
</prop>
|
||||
<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/>'
|
||||
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)
|
||||
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)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
setval
|
||||
--------
|
||||
1639
|
||||
1642
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
setval
|
||||
--------
|
||||
11
|
||||
13
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 2644
|
||||
Content-Length: 3064
|
||||
Content-Type: application/xml; charset="utf-8"
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
@ -64,6 +64,13 @@ Content-Type: application/xml; charset="utf-8"
|
||||
<inactive/>
|
||||
<local-name lang="en_US">Pacific/Auckland</local-name>
|
||||
</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>
|
||||
<tzid>/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</tzid>
|
||||
<last-modified>all good</last-modified>
|
||||
@ -71,6 +78,13 @@ Content-Type: application/xml; charset="utf-8"
|
||||
<alias>Pacific/Auckland</alias>
|
||||
<local-name lang="en_US">/softwarestudio.org/Olson_20011030_5/Pacific/Auckland</local-name>
|
||||
</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>
|
||||
<tzid>(UTC-05:00) Eastern Time (US & Canada)</tzid>
|
||||
<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
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
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-Type: text/calendar
|
||||
Content-Type: text/calendar; charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
HTTP/1.1 200 OK
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
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-Type: text/calendar
|
||||
Content-Type: text/calendar; charset=UTF-8
|
||||
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Morphoss Ltd//NONSGML aCal//EN
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
HTTP/1.1 403 Forbidden
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 148
|
||||
Content-Length: 183
|
||||
Content-Type: text/xml; charset="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.
|
||||
</error>
|
||||
@ -1,9 +1,9 @@
|
||||
HTTP/1.1 403 Forbidden
|
||||
Date: Dow, 01 Jan 2000 00:00:00 GMT
|
||||
Content-Length: 148
|
||||
Content-Length: 183
|
||||
Content-Type: text/xml; charset="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.
|
||||
</error>
|
||||
@ -1,6 +1,6 @@
|
||||
setval
|
||||
--------
|
||||
1649
|
||||
1652
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
setval
|
||||
--------
|
||||
11
|
||||
13
|
||||
(1 row)
|
||||
|
||||
setval
|
||||
|
||||
@ -13,5 +13,5 @@ TZDATAFILE="`ls -t tzdata*.tar.gz|tail -n 1`"
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user