dav4rack_ext 0.0.12 → 0.2.0
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 +1 -1
- data/README.md +2 -3
- data/lib/dav4rack_ext/carddav/controller.rb +12 -7
- data/lib/dav4rack_ext/carddav/resources/addressbook_resource.rb +7 -9
- data/lib/dav4rack_ext/carddav/resources/contact_resource.rb +2 -6
- data/lib/dav4rack_ext/version.rb +1 -1
- data/specs/support/models.rb +7 -0
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22bc67021255d19795f35d47d0e9299ae1db9c91
|
4
|
+
data.tar.gz: 3bd4d094d4eab7acae0ab1d1de74bdf4d5647968
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64e22e835a41c7895882f4194e73cc8df9d2748bfc330551821f9354cbd82c471a170fcb3217a3ac9d601bb22fb47cdbc29a3442ceb582c384ab42190c759c43
|
7
|
+
data.tar.gz: ff0c650ca6eab05fccff13b2ad2e97f8da925ff9a10b10905e2b8449ae3c93aa13277f32c5c75e29258e19d79ac58dc0c9fd78323de64cf4801f74c56cd05444
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -25,8 +25,8 @@ Once the server is started you can connect to it using http://127.0.0.1:3000/u/c
|
|
25
25
|
(the example has no authentication set up)
|
26
26
|
|
27
27
|
# Supported clients
|
28
|
-
- Mac OS X
|
29
|
-
-
|
28
|
+
- Mac OS X: recently tested on 10.11 (El Capitan)
|
29
|
+
- iOS: recently tested on 8 and 9
|
30
30
|
|
31
31
|
# Setting up development environment
|
32
32
|
|
@@ -41,4 +41,3 @@ the tests will run when a file changed, if only want to run all tests once:
|
|
41
41
|
```bash
|
42
42
|
$ bundle exec rake
|
43
43
|
```
|
44
|
-
|
@@ -75,17 +75,22 @@ module DAV4Rack
|
|
75
75
|
|
76
76
|
# collect the requested urls
|
77
77
|
hrefs = request_document.css("C|addressbook-multiget D|href", NAMESPACES).map(&:content)
|
78
|
-
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
children_ids = {}
|
82
|
+
hrefs.reject{|_href| resource.is_self?(_href) }.each do |_href|
|
83
|
+
path = File.split(URI.parse(_href).path).last
|
84
|
+
children_ids[_href] = File.split(path).last
|
85
|
+
end
|
86
|
+
|
87
|
+
children = resource.find_children(children_ids)
|
88
|
+
|
79
89
|
multistatus do |xml|
|
80
90
|
hrefs.each do |_href|
|
81
91
|
xml.response do
|
82
92
|
xml.href _href
|
83
|
-
|
84
|
-
path = File.split(URI.parse(_href).path).last
|
85
|
-
Logger.debug "Creating child w/ ORIG=#{resource.public_path} HREF=#{_href} FILE=#{path}!"
|
86
|
-
|
87
|
-
cur_resource = resource.is_self?(_href) ? resource : resource.find_child(File.split(path).last)
|
88
|
-
|
93
|
+
cur_resource = resource.is_self?(_href) ? resource : children[_href]
|
89
94
|
if cur_resource && cur_resource.exist?
|
90
95
|
propstats(xml, get_properties(cur_resource, props))
|
91
96
|
else
|
@@ -120,17 +120,15 @@ module DAV4Rack
|
|
120
120
|
child(ContactResource, c, @address_book)
|
121
121
|
end
|
122
122
|
end
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
nil
|
123
|
+
|
124
|
+
# { href: uid }
|
125
|
+
def find_children(ids)
|
126
|
+
@address_book.find_contacts(ids).each_with_object({}) do |(href, contact), ret|
|
127
|
+
if contact
|
128
|
+
ret[href] = child(ContactResource, contact)
|
129
|
+
end
|
131
130
|
end
|
132
131
|
end
|
133
|
-
|
134
132
|
end
|
135
133
|
|
136
134
|
end
|
@@ -33,12 +33,8 @@ module DAV4Rack
|
|
33
33
|
|
34
34
|
fields = el[:children].select{|e| e[:name] == 'prop' }.map{|e| e[:attributes]['name'] }
|
35
35
|
data = @contact.vcard.to_s(fields)
|
36
|
-
|
37
|
-
|
38
|
-
<C:address-data xmlns:C="#{CARDAV_NS}">
|
39
|
-
<![CDATA[#{data}]]>
|
40
|
-
</C:address-data>
|
41
|
-
EOS
|
36
|
+
|
37
|
+
%{<C:address-data xmlns:C="#{CARDAV_NS}">#{data}</C:address-data>}
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|
data/lib/dav4rack_ext/version.rb
CHANGED
data/specs/support/models.rb
CHANGED
@@ -89,6 +89,13 @@ module Testing
|
|
89
89
|
attribute :path, String
|
90
90
|
attribute :contacts, Array[Contact], default: []
|
91
91
|
|
92
|
+
def find_contacts(ids)
|
93
|
+
ids.each_with_object({}) do |(href, path), ret|
|
94
|
+
uid = File.basename(path, '.vcf')
|
95
|
+
ret[href] = contacts.detect{|c| c.uid == uid.to_s }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
92
99
|
def find_contact(uid)
|
93
100
|
contacts.detect{|c| c.uid == uid.to_s }
|
94
101
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dav4rack_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Ammous
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dav4rack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: http_router
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: vcard_parser
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.0.8
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.0.8
|
55
55
|
description: CardDAV / CalDAV implementation
|
@@ -59,8 +59,8 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".travis.yml"
|
64
64
|
- ChangeLog
|
65
65
|
- Gemfile
|
66
66
|
- Guardfile
|
@@ -105,17 +105,17 @@ require_paths:
|
|
105
105
|
- lib
|
106
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- -
|
113
|
+
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
117
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.5.1
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: CardDAV / CalDAV implementation.
|