sabredav_client 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -3
- data/.rspec +1 -1
- data/CHANGELOG.rdoc +8 -8
- data/Gemfile +3 -3
- data/Gemfile.lock +39 -38
- data/README.md +49 -49
- data/Rakefile +5 -5
- data/lib/sabredav_client.rb +10 -10
- data/lib/sabredav_client/calendar.rb +171 -171
- data/lib/sabredav_client/client.rb +57 -57
- data/lib/sabredav_client/errors/errors.rb +41 -41
- data/lib/sabredav_client/events.rb +106 -105
- data/lib/sabredav_client/net.rb +15 -15
- data/lib/sabredav_client/principal.rb +51 -51
- data/lib/sabredav_client/request.rb +97 -97
- data/lib/sabredav_client/version.rb +3 -3
- data/lib/sabredav_client/xml_request_builder.rb +7 -7
- data/lib/sabredav_client/xml_request_builder/base.rb +17 -17
- data/lib/sabredav_client/xml_request_builder/mkcalendar.rb +25 -25
- data/lib/sabredav_client/xml_request_builder/mkcol_principal.rb +28 -28
- data/lib/sabredav_client/xml_request_builder/post_sharing.rb +41 -41
- data/lib/sabredav_client/xml_request_builder/propfind_calendar.rb +41 -41
- data/lib/sabredav_client/xml_request_builder/propfind_invite.rb +19 -19
- data/lib/sabredav_client/xml_request_builder/propfind_owner.rb +19 -19
- data/lib/sabredav_client/xml_request_builder/proppatch_calendar.rb +25 -25
- data/lib/sabredav_client/xml_request_builder/proppatch_events_owner.rb +23 -23
- data/lib/sabredav_client/xml_request_builder/proppatch_principal.rb +25 -25
- data/lib/sabredav_client/xml_request_builder/report_event_changes.rb +22 -22
- data/lib/sabredav_client/xml_request_builder/report_vevent.rb +30 -30
- data/lib/sabredav_client/xml_request_builder/report_vtodo.rb +20 -20
- data/sabredav_client.gemspec +31 -31
- data/spec/fixtures/calendar_fetch_changes.xml +26 -26
- data/spec/fixtures/calendar_info.xml +14 -14
- data/spec/fixtures/calendar_sharees.xml +35 -35
- data/spec/fixtures/calendar_sharees_without_common_name.xml +26 -26
- data/spec/fixtures/event.ics +23 -23
- data/spec/fixtures/events_find_multiple.xml +51 -51
- data/spec/fixtures/events_owner.xml +12 -12
- data/spec/fixtures/xml_request_builder/mkcalendar.xml +9 -9
- data/spec/fixtures/xml_request_builder/mkcol_principal.xml +12 -12
- data/spec/fixtures/xml_request_builder/post_sharing.xml +18 -18
- data/spec/fixtures/xml_request_builder/propfind_calendar/all_properties.xml +8 -8
- data/spec/fixtures/xml_request_builder/propfind_invite.xml +6 -6
- data/spec/fixtures/xml_request_builder/propfind_owner.xml +6 -6
- data/spec/fixtures/xml_request_builder/proppatch_calendar.xml +9 -9
- data/spec/fixtures/xml_request_builder/proppatch_events_owner.xml +8 -8
- data/spec/fixtures/xml_request_builder/proppatch_principal.xml +9 -9
- data/spec/fixtures/xml_request_builder/report_event_changes.xml +8 -8
- data/spec/sabredav_client/calendar_spec.rb +142 -142
- data/spec/sabredav_client/client_spec.rb +41 -41
- data/spec/sabredav_client/events_spec.rb +119 -119
- data/spec/sabredav_client/principal_spec.rb +51 -51
- data/spec/sabredav_client/request_spec.rb +55 -55
- data/spec/sabredav_client/xml_request_builder_specs/base_spec.rb +30 -30
- data/spec/sabredav_client/xml_request_builder_specs/mkcalendar_spec.rb +13 -13
- data/spec/sabredav_client/xml_request_builder_specs/mkcol_principal_spec.rb +13 -13
- data/spec/sabredav_client/xml_request_builder_specs/post_sharing_spec.rb +15 -15
- data/spec/sabredav_client/xml_request_builder_specs/propfind_calendar_spec.rb +24 -24
- data/spec/sabredav_client/xml_request_builder_specs/propfind_invite_spec.rb +14 -14
- data/spec/sabredav_client/xml_request_builder_specs/propfind_owner_spec.rb +14 -14
- data/spec/sabredav_client/xml_request_builder_specs/proppatch_calendar.rb +15 -15
- data/spec/sabredav_client/xml_request_builder_specs/proppatch_events_owner_spec.rb +14 -14
- data/spec/sabredav_client/xml_request_builder_specs/proppatch_principal_spec.rb +24 -24
- data/spec/sabredav_client/xml_request_builder_specs/report_event_changes_spec.rb +15 -15
- data/spec/spec.opts +4 -4
- data/spec/spec_helper.rb +8 -8
- metadata +5 -5
@@ -1,19 +1,19 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class PropfindInvite < Base
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
super()
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_xml
|
11
|
-
xml.d :propfind, CS_NAMESPACES do
|
12
|
-
xml.d :prop do
|
13
|
-
xml.cs :invite
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class PropfindInvite < Base
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super()
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_xml
|
11
|
+
xml.d :propfind, CS_NAMESPACES do
|
12
|
+
xml.d :prop do
|
13
|
+
xml.cs :invite
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class PropfindOwner < Base
|
5
|
-
|
6
|
-
def initialize
|
7
|
-
super()
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_xml
|
11
|
-
xml.d :propfind, CS_NAMESPACES do
|
12
|
-
xml.d :prop do
|
13
|
-
xml.cs :objectOwner
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class PropfindOwner < Base
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super()
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_xml
|
11
|
+
xml.d :propfind, CS_NAMESPACES do
|
12
|
+
xml.d :prop do
|
13
|
+
xml.cs :objectOwner
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,25 +1,25 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class ProppatchCalendar < Base
|
5
|
-
attr_accessor :displayname, :description
|
6
|
-
|
7
|
-
def initialize(displayname = nil, description = nil)
|
8
|
-
@displayname = displayname
|
9
|
-
@description = description
|
10
|
-
super()
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_xml
|
14
|
-
xml.d :propertyupdate, C_NAMESPACES do
|
15
|
-
xml.d :set do
|
16
|
-
xml.d :prop do
|
17
|
-
xml.d :displayname, displayname unless displayname.nil?
|
18
|
-
xml.tag! "c:calendar-description", description unless description.nil?
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class ProppatchCalendar < Base
|
5
|
+
attr_accessor :displayname, :description
|
6
|
+
|
7
|
+
def initialize(displayname = nil, description = nil)
|
8
|
+
@displayname = displayname
|
9
|
+
@description = description
|
10
|
+
super()
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_xml
|
14
|
+
xml.d :propertyupdate, C_NAMESPACES do
|
15
|
+
xml.d :set do
|
16
|
+
xml.d :prop do
|
17
|
+
xml.d :displayname, displayname unless displayname.nil?
|
18
|
+
xml.tag! "c:calendar-description", description unless description.nil?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,23 +1,23 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class ProppatchEventsOwner < Base
|
5
|
-
attr_accessor :owner
|
6
|
-
|
7
|
-
def initialize(owner)
|
8
|
-
@owner = owner
|
9
|
-
super()
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_xml
|
13
|
-
xml.d :propertyupdate, CS_NAMESPACES do
|
14
|
-
xml.d :set do
|
15
|
-
xml.d :prop do
|
16
|
-
xml.cs :objectOwner, owner
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class ProppatchEventsOwner < Base
|
5
|
+
attr_accessor :owner
|
6
|
+
|
7
|
+
def initialize(owner)
|
8
|
+
@owner = owner
|
9
|
+
super()
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_xml
|
13
|
+
xml.d :propertyupdate, CS_NAMESPACES do
|
14
|
+
xml.d :set do
|
15
|
+
xml.d :prop do
|
16
|
+
xml.cs :objectOwner, owner
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,25 +1,25 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class ProppatchPrincipal < Base
|
5
|
-
attr_accessor :email, :displayname
|
6
|
-
|
7
|
-
def initialize(email, displayname)
|
8
|
-
@email = email
|
9
|
-
@displayname = displayname
|
10
|
-
super()
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_xml
|
14
|
-
xml.d :propertyupdate, SB_NAMESPACES do
|
15
|
-
xml.d :set do
|
16
|
-
xml.d :prop do
|
17
|
-
xml.tag! "sb:email-address", email unless email.empty?
|
18
|
-
xml.d :displayname, displayname unless displayname.empty?
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class ProppatchPrincipal < Base
|
5
|
+
attr_accessor :email, :displayname
|
6
|
+
|
7
|
+
def initialize(email, displayname)
|
8
|
+
@email = email
|
9
|
+
@displayname = displayname
|
10
|
+
super()
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_xml
|
14
|
+
xml.d :propertyupdate, SB_NAMESPACES do
|
15
|
+
xml.d :set do
|
16
|
+
xml.d :prop do
|
17
|
+
xml.tag! "sb:email-address", email unless email.empty?
|
18
|
+
xml.d :displayname, displayname unless displayname.empty?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
class ReportEventChanges < Base
|
4
|
-
attr_accessor :sync_token
|
5
|
-
|
6
|
-
def initialize(sync_token)
|
7
|
-
@sync_token = sync_token
|
8
|
-
super()
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_xml
|
12
|
-
xml.tag! "d:sync-collection", NAMESPACE do
|
13
|
-
xml.tag! "d:sync-token", sync_token
|
14
|
-
xml.tag! "d:sync-level", "1"
|
15
|
-
xml.d :prop do
|
16
|
-
xml.d :getetag
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
class ReportEventChanges < Base
|
4
|
+
attr_accessor :sync_token
|
5
|
+
|
6
|
+
def initialize(sync_token)
|
7
|
+
@sync_token = sync_token
|
8
|
+
super()
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_xml
|
12
|
+
xml.tag! "d:sync-collection", NAMESPACE do
|
13
|
+
xml.tag! "d:sync-token", sync_token
|
14
|
+
xml.tag! "d:sync-level", "1"
|
15
|
+
xml.d :prop do
|
16
|
+
xml.d :getetag
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,30 +1,30 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class ReportVEVENT < Base
|
5
|
-
attr_accessor :tstart, :tend
|
6
|
-
|
7
|
-
def initialize( tstart=nil, tend=nil )
|
8
|
-
@tstart = tstart
|
9
|
-
@tend = tend
|
10
|
-
super()
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_xml
|
14
|
-
xml.c 'calendar-query'.intern, C_NAMESPACES do
|
15
|
-
xml.d :prop do
|
16
|
-
xml.d :getetag
|
17
|
-
xml.c 'calendar-data'.intern
|
18
|
-
end
|
19
|
-
xml.c :filter do
|
20
|
-
xml.c 'comp-filter'.intern, :name=> 'VCALENDAR' do
|
21
|
-
xml.c 'comp-filter'.intern, :name=> 'VEVENT' do
|
22
|
-
xml.c 'time-range'.intern, :start=> "#{tstart}Z", :end=> "#{tend}Z"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class ReportVEVENT < Base
|
5
|
+
attr_accessor :tstart, :tend
|
6
|
+
|
7
|
+
def initialize( tstart=nil, tend=nil )
|
8
|
+
@tstart = tstart
|
9
|
+
@tend = tend
|
10
|
+
super()
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_xml
|
14
|
+
xml.c 'calendar-query'.intern, C_NAMESPACES do
|
15
|
+
xml.d :prop do
|
16
|
+
xml.d :getetag
|
17
|
+
xml.c 'calendar-data'.intern
|
18
|
+
end
|
19
|
+
xml.c :filter do
|
20
|
+
xml.c 'comp-filter'.intern, :name=> 'VCALENDAR' do
|
21
|
+
xml.c 'comp-filter'.intern, :name=> 'VEVENT' do
|
22
|
+
xml.c 'time-range'.intern, :start=> "#{tstart}Z", :end=> "#{tend}Z"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,20 +1,20 @@
|
|
1
|
-
module SabredavClient
|
2
|
-
module XmlRequestBuilder
|
3
|
-
|
4
|
-
class ReportVTODO < Base
|
5
|
-
def to_xml
|
6
|
-
xml.c 'calendar-query'.intern, C_NAMESPACES do
|
7
|
-
xml.d :prop do
|
8
|
-
xml.d :getetag
|
9
|
-
xml.c 'calendar-data'.intern
|
10
|
-
end
|
11
|
-
xml.c :filter do
|
12
|
-
xml.c 'comp-filter'.intern, :name=> 'VCALENDAR' do
|
13
|
-
xml.c 'comp-filter'.intern, :name=> 'VTODO'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
1
|
+
module SabredavClient
|
2
|
+
module XmlRequestBuilder
|
3
|
+
|
4
|
+
class ReportVTODO < Base
|
5
|
+
def to_xml
|
6
|
+
xml.c 'calendar-query'.intern, C_NAMESPACES do
|
7
|
+
xml.d :prop do
|
8
|
+
xml.d :getetag
|
9
|
+
xml.c 'calendar-data'.intern
|
10
|
+
end
|
11
|
+
xml.c :filter do
|
12
|
+
xml.c 'comp-filter'.intern, :name=> 'VCALENDAR' do
|
13
|
+
xml.c 'comp-filter'.intern, :name=> 'VTODO'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/sabredav_client.gemspec
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require File.expand_path('../lib/sabredav_client/version', __FILE__)
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "sabredav_client"
|
7
|
-
s.version = SabredavClient::VERSION
|
8
|
-
s.summary = "Ruby SabreDAV client"
|
9
|
-
s.description = "A great Ruby client for SabreDAV Servers."
|
10
|
-
|
11
|
-
s.required_ruby_version = '>= 1.9.2'
|
12
|
-
|
13
|
-
s.license = 'MIT'
|
14
|
-
|
15
|
-
s.homepage = %q{https://github.com/njiuko/sabredav_client}
|
16
|
-
s.authors = [%q{Nicolas Schwartau}]
|
17
|
-
s.email = [%q{n.schwartau@gmail.com}]
|
18
|
-
|
19
|
-
s.add_runtime_dependency 'builder', '~> 3.2'
|
20
|
-
s.add_runtime_dependency 'net-http-digest_auth', '~> 1.4'
|
21
|
-
|
22
|
-
s.add_development_dependency 'rspec', '~> 3.5'
|
23
|
-
s.add_development_dependency 'fakeweb', '~> 1.3'
|
24
|
-
|
25
|
-
s.description = <<-DESC
|
26
|
-
sabredav_client is a great Ruby client for SabreDAV servers. It is based on the agcaldav gem.
|
27
|
-
DESC
|
28
|
-
|
29
|
-
s.files = `git ls-files`.split("\n")
|
30
|
-
s.require_paths = ["lib"]
|
31
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require File.expand_path('../lib/sabredav_client/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "sabredav_client"
|
7
|
+
s.version = SabredavClient::VERSION
|
8
|
+
s.summary = "Ruby SabreDAV client"
|
9
|
+
s.description = "A great Ruby client for SabreDAV Servers."
|
10
|
+
|
11
|
+
s.required_ruby_version = '>= 1.9.2'
|
12
|
+
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
15
|
+
s.homepage = %q{https://github.com/njiuko/sabredav_client}
|
16
|
+
s.authors = [%q{Nicolas Schwartau}]
|
17
|
+
s.email = [%q{n.schwartau@gmail.com}]
|
18
|
+
|
19
|
+
s.add_runtime_dependency 'builder', '~> 3.2'
|
20
|
+
s.add_runtime_dependency 'net-http-digest_auth', '~> 1.4'
|
21
|
+
|
22
|
+
s.add_development_dependency 'rspec', '~> 3.5'
|
23
|
+
s.add_development_dependency 'fakeweb', '~> 1.3'
|
24
|
+
|
25
|
+
s.description = <<-DESC
|
26
|
+
sabredav_client is a great Ruby client for SabreDAV servers. It is based on the agcaldav gem.
|
27
|
+
DESC
|
28
|
+
|
29
|
+
s.files = `git ls-files`.split("\n")
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
-
<d:multistatus xmlns:d="DAV:">
|
3
|
-
<d:response>
|
4
|
-
<d:href>/calendars/johndoe/home/newevent.ics</d:href>
|
5
|
-
<d:propstat>
|
6
|
-
<d:prop>
|
7
|
-
<d:getetag>"1"</d:getetag>
|
8
|
-
</d:prop>
|
9
|
-
<d:status>HTTP/1.1 200 OK</d:status>
|
10
|
-
</d:propstat>
|
11
|
-
</d:response>
|
12
|
-
<d:response>
|
13
|
-
<d:href>/calendars/johndoe/home/updatedevent.ics</d:href>
|
14
|
-
<d:propstat>
|
15
|
-
<d:prop>
|
16
|
-
<d:getetag>"2"</d:getetag>
|
17
|
-
</d:prop>
|
18
|
-
<d:status>HTTP/1.1 200 OK</d:status>
|
19
|
-
</d:propstat>
|
20
|
-
</d:response>
|
21
|
-
<d:response>
|
22
|
-
<d:href>/calendars/johndoe/home/deletedevent.ics</d:href>
|
23
|
-
<d:status>HTTP/1.1 404 Not Found</d:status>
|
24
|
-
</d:response>
|
25
|
-
<d:sync-token>http://sabredav.org/ns/sync/5001</d:sync-token>
|
26
|
-
</d:multistatus>
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<d:multistatus xmlns:d="DAV:">
|
3
|
+
<d:response>
|
4
|
+
<d:href>/calendars/johndoe/home/newevent.ics</d:href>
|
5
|
+
<d:propstat>
|
6
|
+
<d:prop>
|
7
|
+
<d:getetag>"1"</d:getetag>
|
8
|
+
</d:prop>
|
9
|
+
<d:status>HTTP/1.1 200 OK</d:status>
|
10
|
+
</d:propstat>
|
11
|
+
</d:response>
|
12
|
+
<d:response>
|
13
|
+
<d:href>/calendars/johndoe/home/updatedevent.ics</d:href>
|
14
|
+
<d:propstat>
|
15
|
+
<d:prop>
|
16
|
+
<d:getetag>"2"</d:getetag>
|
17
|
+
</d:prop>
|
18
|
+
<d:status>HTTP/1.1 200 OK</d:status>
|
19
|
+
</d:propstat>
|
20
|
+
</d:response>
|
21
|
+
<d:response>
|
22
|
+
<d:href>/calendars/johndoe/home/deletedevent.ics</d:href>
|
23
|
+
<d:status>HTTP/1.1 404 Not Found</d:status>
|
24
|
+
</d:response>
|
25
|
+
<d:sync-token>http://sabredav.org/ns/sync/5001</d:sync-token>
|
26
|
+
</d:multistatus>
|