dav4rack 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -0
- data/lib/dav4rack/controller.rb +3 -15
- data/lib/dav4rack/resource.rb +1 -1
- data/lib/dav4rack/version.rb +1 -1
- data/spec/handler_spec.rb +29 -0
- metadata +3 -29
data/README.rdoc
CHANGED
@@ -305,6 +305,7 @@ A big thanks to everyone contributing to help make this project better.
|
|
305
305
|
* {clyfe}[http://github.com/clyfe]
|
306
306
|
* {antiloopgmbh}[http://github.com/antiloopgmbh]
|
307
307
|
* {krug}[http://github.com/krug]
|
308
|
+
* {teefax}[http://github.com/teefax]
|
308
309
|
|
309
310
|
== License
|
310
311
|
|
data/lib/dav4rack/controller.rb
CHANGED
@@ -71,7 +71,7 @@ module DAV4Rack
|
|
71
71
|
status = resource.put(request, response)
|
72
72
|
multistatus do |xml|
|
73
73
|
xml.response do
|
74
|
-
xml.href resource.
|
74
|
+
xml.href "#{scheme}://#{host}:#{port}#{url_escape(resource.public_path)}"
|
75
75
|
xml.status "#{http_version} #{status.status_line}"
|
76
76
|
end
|
77
77
|
end
|
@@ -95,7 +95,7 @@ module DAV4Rack
|
|
95
95
|
status = resource.make_collection
|
96
96
|
multistatus do |xml|
|
97
97
|
xml.response do
|
98
|
-
xml.href resource.
|
98
|
+
xml.href "#{scheme}://#{host}:#{port}#{url_escape(resource.public_path)}"
|
99
99
|
xml.status "#{http_version} #{status.status_line}"
|
100
100
|
end
|
101
101
|
end
|
@@ -468,19 +468,7 @@ module DAV4Rack
|
|
468
468
|
# element:: Nokogiri::XML::Element
|
469
469
|
# Converts element into proper text
|
470
470
|
def xml_convert(xml, element)
|
471
|
-
|
472
|
-
if element.text?
|
473
|
-
xml.send(element.name, element.text, element.attributes)
|
474
|
-
else
|
475
|
-
xml.send(element.name, element.attributes)
|
476
|
-
end
|
477
|
-
else
|
478
|
-
xml.send(element.name, element.attributes) do
|
479
|
-
element.elements.each do |child|
|
480
|
-
xml_convert(xml, child)
|
481
|
-
end
|
482
|
-
end
|
483
|
-
end
|
471
|
+
xml.doc.root.add_child(element)
|
484
472
|
end
|
485
473
|
|
486
474
|
end
|
data/lib/dav4rack/resource.rb
CHANGED
@@ -234,7 +234,7 @@ module DAV4Rack
|
|
234
234
|
lock.scope = args[:scope]
|
235
235
|
lock.kind = args[:type]
|
236
236
|
lock.owner = args[:owner]
|
237
|
-
lock.depth = args[:depth].to_i
|
237
|
+
lock.depth = args[:depth].is_a?(Symbol) ? args[:depth] : args[:depth].to_i
|
238
238
|
if(args[:timeout])
|
239
239
|
lock.timeout = args[:timeout] <= @max_timeout && args[:timeout] > 0 ? args[:timeout] : @max_timeout
|
240
240
|
else
|
data/lib/dav4rack/version.rb
CHANGED
data/spec/handler_spec.rb
CHANGED
@@ -120,6 +120,13 @@ describe DAV4Rack::Handler do
|
|
120
120
|
get('/test').should be_ok
|
121
121
|
response.body.should == 'body'
|
122
122
|
end
|
123
|
+
|
124
|
+
it 'should return an absolute url after a put request' do
|
125
|
+
put('/test', :input => 'body')
|
126
|
+
multi_status_ok.should eq true
|
127
|
+
multistatus_response('/D:href').first.text.should =~ /http:\/\/localhost(:\d+)?\/test/
|
128
|
+
end
|
129
|
+
|
123
130
|
it 'should create and find a url with escaped characters' do
|
124
131
|
put(url_escape('/a b'), :input => 'body')
|
125
132
|
multi_status_ok.should eq true
|
@@ -250,6 +257,14 @@ describe DAV4Rack::Handler do
|
|
250
257
|
multistatus_response('/D:propstat/D:prop/D:resourcetype/D:collection').should_not be_empty
|
251
258
|
end
|
252
259
|
|
260
|
+
it 'should return full urls after creating a collection' do
|
261
|
+
mkcol('/folder')
|
262
|
+
multi_status_created.should eq true
|
263
|
+
propfind('/folder', :input => propfind_xml(:resourcetype))
|
264
|
+
multistatus_response('/D:propstat/D:prop/D:resourcetype/D:collection').should_not be_empty
|
265
|
+
multistatus_response('/D:href').first.text.should =~ /http:\/\/localhost(:\d+)?\/folder/
|
266
|
+
end
|
267
|
+
|
253
268
|
it 'should not find properties for nonexistent resources' do
|
254
269
|
propfind('/non').should be_not_found
|
255
270
|
end
|
@@ -305,4 +320,18 @@ describe DAV4Rack::Handler do
|
|
305
320
|
match['/D:locktoken'].should_not be_empty
|
306
321
|
match['/D:owner'].should_not be_empty
|
307
322
|
end
|
323
|
+
|
324
|
+
context "when mapping a path" do
|
325
|
+
|
326
|
+
before do
|
327
|
+
@controller = DAV4Rack::Handler.new(:root => DOC_ROOT, :root_uri_path => '/webdav/')
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should return correct urls" do
|
331
|
+
# FIXME: a put to '/test' works, too -- should it?
|
332
|
+
put('/webdav/test', :input => 'body')
|
333
|
+
multi_status_ok.should eq true
|
334
|
+
multistatus_response('/D:href').first.text.should =~ /http:\/\/localhost(:\d+)?\/webdav\/test/
|
335
|
+
end
|
336
|
+
end
|
308
337
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dav4rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 17
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 3
|
10
|
-
version: 0.2.3
|
5
|
+
version: 0.2.4
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Chris Roberts
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-05-14 00:00:00 -07:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,11 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ~>
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 4
|
33
|
-
- 2
|
34
24
|
version: 1.4.2
|
35
25
|
type: :runtime
|
36
26
|
version_requirements: *id001
|
@@ -42,11 +32,6 @@ dependencies:
|
|
42
32
|
requirements:
|
43
33
|
- - ~>
|
44
34
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 9
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 1
|
49
|
-
- 1
|
50
35
|
version: 2.1.1
|
51
36
|
type: :runtime
|
52
37
|
version_requirements: *id002
|
@@ -58,11 +43,6 @@ dependencies:
|
|
58
43
|
requirements:
|
59
44
|
- - ">="
|
60
45
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 19
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 1
|
65
|
-
- 0
|
66
46
|
version: 1.1.0
|
67
47
|
type: :runtime
|
68
48
|
version_requirements: *id003
|
@@ -109,23 +89,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
89
|
requirements:
|
110
90
|
- - ">="
|
111
91
|
- !ruby/object:Gem::Version
|
112
|
-
hash: 3
|
113
|
-
segments:
|
114
|
-
- 0
|
115
92
|
version: "0"
|
116
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
94
|
none: false
|
118
95
|
requirements:
|
119
96
|
- - ">="
|
120
97
|
- !ruby/object:Gem::Version
|
121
|
-
hash: 3
|
122
|
-
segments:
|
123
|
-
- 0
|
124
98
|
version: "0"
|
125
99
|
requirements: []
|
126
100
|
|
127
101
|
rubyforge_project:
|
128
|
-
rubygems_version: 1.
|
102
|
+
rubygems_version: 1.6.2
|
129
103
|
signing_key:
|
130
104
|
specification_version: 3
|
131
105
|
summary: WebDAV handler for Rack
|