rack_dav_sp 0.2.dev

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe RackDAV::FileResource do
4
+
5
+ describe "#get" do
6
+ context "with a directory" do
7
+ # it "sets a compliant rack response"
8
+ end
9
+ end
10
+
11
+ end
File without changes
File without changes
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <D:lockinfo xmlns:D='DAV:'>
3
+ <D:lockscope>
4
+ <D:exclusive/>
5
+ </D:lockscope>
6
+ <D:locktype>
7
+ <D:write/>
8
+ </D:locktype>
9
+ <D:owner>
10
+ <D:href>http://example.com/</D:href>
11
+ </D:owner>
12
+ </D:lockinfo>
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe RackDAV::Handler do
4
+
5
+ describe "#initialize" do
6
+ it "accepts zero parameters" do
7
+ lambda do
8
+ klass.new
9
+ end.should_not raise_error
10
+ end
11
+
12
+ it "accepts a hash of options" do
13
+ lambda do
14
+ klass.new({})
15
+ klass.new :foo => "bar"
16
+ end.should_not raise_error
17
+ end
18
+
19
+ it "sets options from argument" do
20
+ instance = klass.new :foo => "bar"
21
+ instance.options[:foo].should == "bar"
22
+ end
23
+
24
+ it "defaults option :resource_class to FileResource" do
25
+ instance = klass.new
26
+ instance.options[:resource_class].should be(RackDAV::FileResource)
27
+ end
28
+
29
+ it "defaults option :root to current directory" do
30
+ path = File.expand_path("../../bin", __FILE__)
31
+ Dir.chdir(path)
32
+ instance = klass.new
33
+ instance.options[:root].should == path
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,27 @@
1
+ require 'rspec'
2
+ require 'rack_dav'
3
+
4
+ unless defined?(SPEC_ROOT)
5
+ SPEC_ROOT = File.expand_path("../", __FILE__)
6
+ end
7
+
8
+ module Helpers
9
+
10
+ private
11
+
12
+ # Gets the currently described class.
13
+ # Conversely to +subject+, it returns the class
14
+ # instead of an instance.
15
+ def klass
16
+ described_class
17
+ end
18
+
19
+ def fixture(*names)
20
+ File.join(SPEC_ROOT, "fixtures", *names)
21
+ end
22
+
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ config.include Helpers
27
+ end
@@ -0,0 +1,30 @@
1
+ module RackDAV
2
+
3
+ # Quick & Dirty
4
+ class LockableFileResource < FileResource
5
+ @@locks = {}
6
+
7
+ def lock(token, timeout, scope = nil, type = nil, owner = nil)
8
+ if scope && type && owner
9
+ # Create lock
10
+ @@locks[token] = {
11
+ :timeout => timeout,
12
+ :scope => scope,
13
+ :type => type,
14
+ :owner => owner
15
+ }
16
+ return true
17
+ else
18
+ # Refresh lock
19
+ lock = @@locks[token]
20
+ return false unless lock
21
+ return [ lock[:timeout], lock[:scope], lock[:type], lock[:owner] ]
22
+ end
23
+ end
24
+
25
+ def unlock(token)
26
+ !!@@locks.delete(token)
27
+ end
28
+ end
29
+
30
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rack_dav_sp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.dev
5
+ prerelease: 4
6
+ platform: ruby
7
+ authors:
8
+ - Matthias Georgi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-20 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rack
16
+ requirement: &70331008298980 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70331008298980
25
+ - !ruby/object:Gem::Dependency
26
+ name: builder
27
+ requirement: &70331008298520 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70331008298520
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70331008297880 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.6.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70331008297880
47
+ description: WebDAV handler for Rack.
48
+ email: matti.georgi@gmail.com
49
+ executables:
50
+ - rack_dav
51
+ extensions: []
52
+ extra_rdoc_files:
53
+ - README.md
54
+ files:
55
+ - .gitignore
56
+ - CHANGELOG.md
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - LICENSE
60
+ - README.md
61
+ - Rakefile
62
+ - bin/rack_dav
63
+ - lib/rack_dav.rb
64
+ - lib/rack_dav/builder_namespace.rb
65
+ - lib/rack_dav/controller.rb
66
+ - lib/rack_dav/file_resource.rb
67
+ - lib/rack_dav/handler.rb
68
+ - lib/rack_dav/http_status.rb
69
+ - lib/rack_dav/resource.rb
70
+ - lib/rack_dav/version.rb
71
+ - rack_dav.gemspec
72
+ - spec/controller_spec.rb
73
+ - spec/file_resource_spec.rb
74
+ - spec/fixtures/folder/01.txt
75
+ - spec/fixtures/folder/02.txt
76
+ - spec/fixtures/requests/lock.xml
77
+ - spec/handler_spec.rb
78
+ - spec/spec_helper.rb
79
+ - spec/support/lockable_file_resource.rb
80
+ homepage: http://www.matthias-georgi.de/rack_dav
81
+ licenses: []
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>'
96
+ - !ruby/object:Gem::Version
97
+ version: 1.3.1
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 1.8.10
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: WebDAV handler for Rack.
104
+ test_files: []