carrierwave-webdav 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/carrierwave/storage/webdav.rb +29 -6
- data/lib/carrierwave/webdav.rb +1 -1
- data/lib/carrierwave/webdav/version.rb +1 -1
- data/spec/lib/webdav_spec.rb +3 -3
- data/spec/supports/helpers.rb +6 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f796cdb81a5978a2a642c3717a5e6a4816c09ebd
|
4
|
+
data.tar.gz: 12bebb033dbc078ce8b28847b3a77c1463e3489f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6b9e900ce9e8ee85239e690c016e609c3000b43d376b34f7bab3399de42135ae114ef3c8f48d464b1e76657add2978305b9ff4b74538589012522e6190e0afb
|
7
|
+
data.tar.gz: c8b4513c4a1a4f6a67933577db38ddd0318333a1379b7c901e4d1f2c41407b339b97f97fecedf38f5709950f35f7daa7a5af6449882191b6be717054eedb2565
|
data/README.md
CHANGED
@@ -33,6 +33,7 @@ CarrierWave.configure do |config|
|
|
33
33
|
config.storage = :webdav
|
34
34
|
config.webdav_server = 'https://your.webdav_server.com/dav' # Your WebDAV url.
|
35
35
|
# config.webdav_write_server = 'https://secure.your.webdavserver.com/dav/' # This is an optional attribute. It can save on one server and read from another server. (Contributed by @eychu. Thanks)
|
36
|
+
# config.webdav_autocreates_dirs = true # if automatic directory creation is enabled on the server (disables explicit directory creation)
|
36
37
|
config.webdav_username = 'your webdav username'
|
37
38
|
config.webdav_password = 'your webdav password'
|
38
39
|
end
|
@@ -52,19 +52,35 @@ module CarrierWave
|
|
52
52
|
@password = uploader.webdav_password || ''
|
53
53
|
@options = {}
|
54
54
|
@options = { basic_auth: { username: @username, password: @password } } if @username
|
55
|
+
@create_dirs = !uploader.webdav_autocreates_dirs
|
55
56
|
end
|
56
57
|
|
57
58
|
def read
|
58
|
-
HTTParty.get(url, options)
|
59
|
+
res = HTTParty.get(url, options)
|
60
|
+
if res.code != 200
|
61
|
+
raise CarrierWave::IntegrityError.new("Can't download a file: #{res.inspect}")
|
62
|
+
end
|
63
|
+
res.body
|
59
64
|
end
|
60
65
|
|
61
66
|
def headers
|
62
|
-
HTTParty.
|
67
|
+
res = HTTParty.head(url, options)
|
68
|
+
if res.code != 200
|
69
|
+
raise CarrierWave::IntegrityError.new("Can't headers for a file: #{res.inspect}")
|
70
|
+
end
|
71
|
+
res.headers
|
63
72
|
end
|
64
73
|
|
65
74
|
def write(file)
|
66
|
-
|
67
|
-
|
75
|
+
if @create_dirs
|
76
|
+
res = mkcol
|
77
|
+
end
|
78
|
+
|
79
|
+
res = HTTParty.put(write_url, options.merge({ body: file }))
|
80
|
+
if res.code != 201 and res.code != 204
|
81
|
+
raise CarrierWave::IntegrityError.new("Can't put a new file: #{res.inspect}")
|
82
|
+
end
|
83
|
+
res
|
68
84
|
end
|
69
85
|
|
70
86
|
def length
|
@@ -76,7 +92,11 @@ module CarrierWave
|
|
76
92
|
end
|
77
93
|
|
78
94
|
def delete
|
79
|
-
HTTParty.delete(write_url, options)
|
95
|
+
res = HTTParty.delete(write_url, options)
|
96
|
+
if res.code != 200 and res.code != 404
|
97
|
+
raise CarrierWave::IntegrityError.new("Can't delete a file: #{res.inspect}")
|
98
|
+
end
|
99
|
+
res
|
80
100
|
end
|
81
101
|
|
82
102
|
def url
|
@@ -100,7 +120,10 @@ module CarrierWave
|
|
100
120
|
end # Make path like a/b/c/t.txt to array ['/a', '/a/b', '/a/b/c']
|
101
121
|
use_server = @write_server ? @write_server : server
|
102
122
|
dirs.each do |dir|
|
103
|
-
HTTParty.mkcol("#{use_server}#{dir}", options)
|
123
|
+
res = HTTParty.mkcol("#{use_server}#{dir}", options)
|
124
|
+
unless [200, 201, 207, 409].include? res.code
|
125
|
+
raise CarrierWave::IntegrityError.new("Can't create a new collection: #{res.inspect}")
|
126
|
+
end
|
104
127
|
end # Make collections recursively
|
105
128
|
end
|
106
129
|
end # File
|
data/lib/carrierwave/webdav.rb
CHANGED
@@ -8,9 +8,9 @@ class CarrierWave::Uploader::Base
|
|
8
8
|
add_config :webdav_password
|
9
9
|
add_config :webdav_server
|
10
10
|
add_config :webdav_write_server
|
11
|
+
add_config :webdav_autocreates_dirs
|
11
12
|
|
12
13
|
configure do |config|
|
13
14
|
config.storage_engines[:webdav] = 'CarrierWave::Storage::WebDAV'
|
14
15
|
end
|
15
16
|
end
|
16
|
-
|
data/spec/lib/webdav_spec.rb
CHANGED
@@ -13,7 +13,7 @@ describe CarrierWave::Storage::WebDAV do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
@uploader = CarrierWave::Uploader::Base.new
|
16
|
-
@uploader.stub
|
16
|
+
@uploader.stub store_path: 'uploads/test.txt'
|
17
17
|
|
18
18
|
@storage = CarrierWave::Storage::WebDAV.new(@uploader)
|
19
19
|
@file = CarrierWave::SanitizedFile.new(file_path('test.txt'))
|
@@ -62,7 +62,7 @@ describe CarrierWave::Storage::WebDAV do
|
|
62
62
|
stub_mkcol @uri
|
63
63
|
stub_put @uri
|
64
64
|
webdav_file = @storage.store!(@file)
|
65
|
-
|
65
|
+
stub_head @uri
|
66
66
|
expect(@file.content_type).to eq(webdav_file.content_type)
|
67
67
|
end
|
68
68
|
|
@@ -91,4 +91,4 @@ describe CarrierWave::Storage::WebDAV do
|
|
91
91
|
expect(@file.read).to eq(webdav_file.read)
|
92
92
|
end
|
93
93
|
|
94
|
-
end
|
94
|
+
end
|
data/spec/supports/helpers.rb
CHANGED
@@ -9,10 +9,15 @@ module Helpers
|
|
9
9
|
to_return(:status => 200, :body => 'Hello, this is test data.', :headers => {})
|
10
10
|
end
|
11
11
|
|
12
|
+
def stub_head(url)
|
13
|
+
stub_request(:head, url.to_s).
|
14
|
+
to_return(:status => 200, :body => '', :headers => {'Content-type' => 'text/plain'})
|
15
|
+
end
|
16
|
+
|
12
17
|
def stub_put(url)
|
13
18
|
stub_request(:put, url.to_s).
|
14
19
|
with(:body => 'Hello, this is test data.').
|
15
|
-
to_return(:status =>
|
20
|
+
to_return(:status => 201, :body => '', :headers => {})
|
16
21
|
end
|
17
22
|
|
18
23
|
def stub_mkcol(url)
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-webdav
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Qinix
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
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: httparty
|
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
|
description: WebDAV support for CarrierWave
|
@@ -45,9 +45,9 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
- .coveralls.yml
|
49
|
-
- .gitignore
|
50
|
-
- .travis.yml
|
48
|
+
- ".coveralls.yml"
|
49
|
+
- ".gitignore"
|
50
|
+
- ".travis.yml"
|
51
51
|
- Gemfile
|
52
52
|
- LICENSE
|
53
53
|
- README.md
|
@@ -70,17 +70,17 @@ require_paths:
|
|
70
70
|
- lib
|
71
71
|
required_ruby_version: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- -
|
78
|
+
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project:
|
83
|
-
rubygems_version: 2.
|
83
|
+
rubygems_version: 2.2.2
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: WebDAV support for CarrierWave
|