sabredav_client 0.1.6 → 0.1.7
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/Gemfile.lock +1 -1
- data/lib/sabredav_client/calendar.rb +15 -0
- data/lib/sabredav_client/errors/errors.rb +3 -0
- data/lib/sabredav_client/events.rb +2 -2
- data/lib/sabredav_client/version.rb +1 -1
- data/lib/sabredav_client/xml_request_builder/proppatch_calendar.rb +25 -0
- data/lib/sabredav_client/xml_request_builder/{proppatch_owner.rb → proppatch_events_owner.rb} +1 -1
- data/lib/sabredav_client/xml_request_builder.rb +2 -1
- data/spec/fixtures/xml_request_builder/proppatch_calendar.xml +9 -0
- data/spec/fixtures/xml_request_builder/{proppatch_owner.xml → proppatch_events_owner.xml} +0 -0
- data/spec/sabredav_client/calendar_spec.rb +15 -0
- data/spec/sabredav_client/xml_request_builder_specs/proppatch_calendar.rb +15 -0
- data/spec/sabredav_client/xml_request_builder_specs/{proppatch_owner_spec.rb → proppatch_events_owner_spec.rb} +2 -2
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca4f23c31aaa106ff42d110c689f13678be60ef6
|
4
|
+
data.tar.gz: fa738aebd39edc84d711511f69377ed7f2461d40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c214b59a07ae43d0fba3c1381c33f6d9447c42fa3e6bc8444867d096dde1d49afefaf4619a3d0e3411097fada80275f505e545a1fff051fd080f25c4c672edd
|
7
|
+
data.tar.gz: d6f19be3cd325f08eef0959431e242c8b9e01f55213a9849e647efd8b0012c412943ab0aa17095ddadcc15043458b3ca7f16d75ca97c8cb8bb4a81d4176f5c03
|
data/Gemfile.lock
CHANGED
@@ -40,6 +40,21 @@ module SabredavClient
|
|
40
40
|
info
|
41
41
|
end
|
42
42
|
|
43
|
+
def update(displayname: nil, description: nil)
|
44
|
+
body = XmlRequestBuilder::ProppatchCalendar.new(displayname, description).to_xml
|
45
|
+
header = {content_type: "application/xml"}
|
46
|
+
|
47
|
+
req = client.create_request(:proppatch, header: header, body: body)
|
48
|
+
|
49
|
+
res = req.run
|
50
|
+
|
51
|
+
if res.code.to_i.between?(200,299)
|
52
|
+
true
|
53
|
+
else
|
54
|
+
SabredavClient::Errors::errorhandling(res)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
43
58
|
def delete
|
44
59
|
req = client.create_request(:delete)
|
45
60
|
res = req.run
|
@@ -3,6 +3,8 @@ module SabredavClient
|
|
3
3
|
|
4
4
|
def self.errorhandling response
|
5
5
|
case response.code.to_i
|
6
|
+
when 400
|
7
|
+
raise SabredavClient::Errors::BadRequestError
|
6
8
|
when 401
|
7
9
|
raise SabredavClient::Errors::AuthenticationError
|
8
10
|
when 403
|
@@ -32,6 +34,7 @@ module SabredavClient
|
|
32
34
|
class NotFoundError < APIError; end
|
33
35
|
class PreconditionFailed < APIError; end
|
34
36
|
class NotAllowedError < APIError; end
|
37
|
+
class BadRequestError < APIError; end
|
35
38
|
class AuthenticationError < APIError; end
|
36
39
|
class NotExistError < APIError; end
|
37
40
|
end
|
@@ -56,7 +56,7 @@ module SabredavClient
|
|
56
56
|
# Warning: This is not a standard request. It only works if your sabredav
|
57
57
|
# server uses a certain OwnerPlugin
|
58
58
|
header = {content_type: "application/xml"}
|
59
|
-
body = XmlRequestBuilder::
|
59
|
+
body = XmlRequestBuilder::ProppatchEventsOwner.new(owner).to_xml
|
60
60
|
req = client.create_request(:proppatch, path: uri, header: header, body: body)
|
61
61
|
res = req.run
|
62
62
|
|
@@ -68,7 +68,7 @@ module SabredavClient
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def delete(uri)
|
71
|
-
raise SabredavClient::Errors::SabredavClientError if uri.nil? || !uri.end_with?(".ics")
|
71
|
+
raise SabredavClient::Errors::SabredavClientError if uri.nil? || !uri.end_with?(".ics")
|
72
72
|
|
73
73
|
req = client.create_request(:delete, path: uri)
|
74
74
|
res = req.run
|
@@ -0,0 +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,6 +1,7 @@
|
|
1
1
|
require 'builder'
|
2
2
|
|
3
3
|
['base.rb', 'propfind_calendar.rb', 'mkcalendar.rb', 'post_sharing.rb', 'report_vevent.rb', 'report_vtodo.rb', 'mkcol_principal.rb',
|
4
|
-
'report_event_changes.rb', 'propfind_owner.rb', '
|
4
|
+
'report_event_changes.rb', 'propfind_owner.rb', 'proppatch_events_owner.rb', 'propfind_invite.rb', 'proppatch_principal.rb',
|
5
|
+
'proppatch_calendar.rb'].each do |f|
|
5
6
|
require File.join( File.dirname(__FILE__), 'xml_request_builder', f )
|
6
7
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<d:propertyupdate xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
|
3
|
+
<d:set>
|
4
|
+
<d:prop>
|
5
|
+
<d:displayname>name</d:displayname>
|
6
|
+
<c:calendar-description>description</c:calendar-description>
|
7
|
+
</d:prop>
|
8
|
+
</d:set>
|
9
|
+
</d:propertyupdate>
|
File without changes
|
@@ -40,6 +40,21 @@ describe SabredavClient::Calendar do
|
|
40
40
|
expect(r[:sync_token]).to eq(sync_token)
|
41
41
|
end
|
42
42
|
|
43
|
+
it "update" do
|
44
|
+
description = "a example description"
|
45
|
+
displayname = "example discription"
|
46
|
+
body = SabredavClient::XmlRequestBuilder::ProppatchCalendar.new(displayname, description).to_xml
|
47
|
+
header = {content_type: "application/xml"}
|
48
|
+
|
49
|
+
FakeWeb.register_uri(:proppatch, "http://user@localhost:5232/user/calendar/", status: ["207", "Multi-Staus"])
|
50
|
+
|
51
|
+
expect(calendar.client).to receive(:create_request).with(:proppatch, header: header, body: body).and_call_original
|
52
|
+
|
53
|
+
r = calendar.update(displayname: displayname, description: description)
|
54
|
+
expect(r).to be
|
55
|
+
|
56
|
+
end
|
57
|
+
|
43
58
|
it "delete" do
|
44
59
|
FakeWeb.register_uri(:delete, "http://user@localhost:5232/user/calendar/",
|
45
60
|
[{status: ["204", "No Content"]}, {status: ["404", "Not Found"]}])
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe SabredavClient::XmlRequestBuilder::ProppatchCalendar do
|
4
|
+
|
5
|
+
let(:proppatch) { described_class.new(displayname = "name", description = "description") }
|
6
|
+
|
7
|
+
describe "#to_xml" do
|
8
|
+
let(:expected_xml) { File.read('spec/fixtures/xml_request_builder/proppatch_calendar.xml') }
|
9
|
+
|
10
|
+
it "returns a valid xml" do
|
11
|
+
expect(proppatch.to_xml).to eq(expected_xml)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe SabredavClient::XmlRequestBuilder::
|
3
|
+
RSpec.describe SabredavClient::XmlRequestBuilder::ProppatchEventsOwner do
|
4
4
|
|
5
5
|
let(:proppatch) { described_class.new(owner = "principals/usertest") }
|
6
6
|
|
7
7
|
describe "#to_xml" do
|
8
|
-
let(:expected_xml) { File.read('spec/fixtures/xml_request_builder/
|
8
|
+
let(:expected_xml) { File.read('spec/fixtures/xml_request_builder/proppatch_events_owner.xml') }
|
9
9
|
|
10
10
|
it "returns a valid xml" do
|
11
11
|
expect(proppatch.to_xml).to eq(expected_xml)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sabredav_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Schwartau
|
@@ -98,7 +98,8 @@ files:
|
|
98
98
|
- lib/sabredav_client/xml_request_builder/propfind_calendar.rb
|
99
99
|
- lib/sabredav_client/xml_request_builder/propfind_invite.rb
|
100
100
|
- lib/sabredav_client/xml_request_builder/propfind_owner.rb
|
101
|
-
- lib/sabredav_client/xml_request_builder/
|
101
|
+
- lib/sabredav_client/xml_request_builder/proppatch_calendar.rb
|
102
|
+
- lib/sabredav_client/xml_request_builder/proppatch_events_owner.rb
|
102
103
|
- lib/sabredav_client/xml_request_builder/proppatch_principal.rb
|
103
104
|
- lib/sabredav_client/xml_request_builder/report_event_changes.rb
|
104
105
|
- lib/sabredav_client/xml_request_builder/report_vevent.rb
|
@@ -117,7 +118,8 @@ files:
|
|
117
118
|
- spec/fixtures/xml_request_builder/propfind_calendar/all_properties.xml
|
118
119
|
- spec/fixtures/xml_request_builder/propfind_invite.xml
|
119
120
|
- spec/fixtures/xml_request_builder/propfind_owner.xml
|
120
|
-
- spec/fixtures/xml_request_builder/
|
121
|
+
- spec/fixtures/xml_request_builder/proppatch_calendar.xml
|
122
|
+
- spec/fixtures/xml_request_builder/proppatch_events_owner.xml
|
121
123
|
- spec/fixtures/xml_request_builder/proppatch_principal.xml
|
122
124
|
- spec/fixtures/xml_request_builder/report_event_changes.xml
|
123
125
|
- spec/sabredav_client/calendar_spec.rb
|
@@ -132,7 +134,8 @@ files:
|
|
132
134
|
- spec/sabredav_client/xml_request_builder_specs/propfind_calendar_spec.rb
|
133
135
|
- spec/sabredav_client/xml_request_builder_specs/propfind_invite_spec.rb
|
134
136
|
- spec/sabredav_client/xml_request_builder_specs/propfind_owner_spec.rb
|
135
|
-
- spec/sabredav_client/xml_request_builder_specs/
|
137
|
+
- spec/sabredav_client/xml_request_builder_specs/proppatch_calendar.rb
|
138
|
+
- spec/sabredav_client/xml_request_builder_specs/proppatch_events_owner_spec.rb
|
136
139
|
- spec/sabredav_client/xml_request_builder_specs/proppatch_principal_spec.rb
|
137
140
|
- spec/sabredav_client/xml_request_builder_specs/report_event_changes_spec.rb
|
138
141
|
- spec/spec.opts
|