carrierwave-webdav 0.5.0 → 0.6.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 +5 -5
- data/README.md +1 -1
- data/lib/carrierwave/httparty_monkey.rb +10 -1
- data/lib/carrierwave/storage/webdav.rb +2 -2
- data/lib/carrierwave/webdav/file.rb +14 -2
- data/lib/carrierwave/webdav/version.rb +1 -1
- data/spec/lib/webdav_storage_spec.rb +16 -15
- data/spec/supports/helpers.rb +23 -6
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 27f93efb8393806ab738e97c7be04ef421f0c1fbeaaaa2477ad3ddf6dc2b1115
|
4
|
+
data.tar.gz: 89b9a7419294f1c00a7914dab5bfcf31b04df4dbe56b0f29d80462219af595f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4bf66881ba5352d4badb60e2b6ff2a8a66fd1dc014edcfb42bdf0a3ca1db73867c0e93ad89440716c2853de2a241f0c4818778d856fffe932a58e1b053d49c6
|
7
|
+
data.tar.gz: f812070f628a7673683ffa82f1323d8bcb38fcbe7c70e78279a378222f4f2dc70a01b75f1ce33294293ca74303cb6cb9c14ab2f78c98ebeb6f241865e278c633
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# CarrierWave for WebDAV
|
2
2
|
|
3
3
|
[](https://travis-ci.org/qinix/carrierwave-webdav)
|
4
|
+
[](https://coveralls.io/github/qinix/carrierwave-webdav?branch=master)
|
4
5
|
|
5
6
|
This gem adds support for WebDAV to
|
6
7
|
[CarrierWave](https://github.com/carrierwaveuploader/carrierwave/)
|
@@ -57,4 +58,3 @@ them yourself. In Rails for example, you could use the `send_data` method.
|
|
57
58
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
58
59
|
4. Push to the branch (`git push origin my-new-feature`)
|
59
60
|
5. Create new Pull Request
|
60
|
-
|
@@ -8,6 +8,7 @@ module HTTParty
|
|
8
8
|
|
9
9
|
class Request
|
10
10
|
SupportedHTTPMethods << Net::HTTP::Mkcol
|
11
|
+
SupportedHTTPMethods << Net::HTTP::Propfind
|
11
12
|
end
|
12
13
|
|
13
14
|
module ClassMethods
|
@@ -15,6 +16,11 @@ module HTTParty
|
|
15
16
|
def mkcol(path, options = {}, &block)
|
16
17
|
perform_request Net::HTTP::Mkcol, path, options, &block
|
17
18
|
end
|
19
|
+
|
20
|
+
# Perform a PROPFIND request to a path
|
21
|
+
def propfind(path, options = {}, &block)
|
22
|
+
perform_request Net::HTTP::Propfind, path, options, &block
|
23
|
+
end
|
18
24
|
end
|
19
25
|
|
20
26
|
class Basement
|
@@ -24,5 +30,8 @@ module HTTParty
|
|
24
30
|
def self.mkcol(*args, &block)
|
25
31
|
Basement.mkcol(*args, &block)
|
26
32
|
end
|
27
|
-
end # HTTParty
|
28
33
|
|
34
|
+
def self.propfind(*args, &block)
|
35
|
+
Basement.propfind(*args, &block)
|
36
|
+
end
|
37
|
+
end # HTTParty
|
@@ -16,7 +16,7 @@ module CarrierWave
|
|
16
16
|
#
|
17
17
|
def cache!(file)
|
18
18
|
cached = build_webdav_file(uploader.cache_path)
|
19
|
-
cached.write(file
|
19
|
+
cached.write(file)
|
20
20
|
cached
|
21
21
|
end
|
22
22
|
|
@@ -65,7 +65,7 @@ module CarrierWave
|
|
65
65
|
#
|
66
66
|
def store!(file)
|
67
67
|
stored = build_webdav_file(uploader.store_path)
|
68
|
-
stored.write(file
|
68
|
+
stored.write(file)
|
69
69
|
stored
|
70
70
|
end
|
71
71
|
|
@@ -42,7 +42,16 @@ module CarrierWave
|
|
42
42
|
res = mkcol
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
::File.open(file.file, 'rb') do |io|
|
46
|
+
res = HTTParty.put(write_url, options.merge({
|
47
|
+
body_stream: io,
|
48
|
+
headers: {
|
49
|
+
'Transfer-Encoding' => 'chunked',
|
50
|
+
'Content-Type' => file.content_type
|
51
|
+
}
|
52
|
+
}))
|
53
|
+
end
|
54
|
+
|
46
55
|
if res.code != 201 and res.code != 204
|
47
56
|
raise CarrierWave::IntegrityError.new("Can't put a new file: #{res.inspect}")
|
48
57
|
end
|
@@ -50,7 +59,7 @@ module CarrierWave
|
|
50
59
|
end
|
51
60
|
|
52
61
|
def length
|
53
|
-
|
62
|
+
headers.content_length
|
54
63
|
end
|
55
64
|
|
56
65
|
def content_type
|
@@ -99,6 +108,9 @@ module CarrierWave
|
|
99
108
|
end # Make path like a/b/c/t.txt to array ['/a', '/a/b', '/a/b/c']
|
100
109
|
use_server = @write_server ? @write_server : server
|
101
110
|
dirs.each do |dir|
|
111
|
+
# skip if dir already exists
|
112
|
+
next if HTTParty.propfind("#{use_server}#{dir}", options).code == 207
|
113
|
+
|
102
114
|
res = HTTParty.mkcol("#{use_server}#{dir}", options)
|
103
115
|
unless [200, 201, 207, 409].include? res.code
|
104
116
|
raise CarrierWave::IntegrityError.new("Can't create a new collection: #{res.inspect}")
|
@@ -18,6 +18,7 @@ describe CarrierWave::Storage::WebDAV do
|
|
18
18
|
|
19
19
|
@storage = CarrierWave::Storage::WebDAV.new(@uploader)
|
20
20
|
@file = CarrierWave::SanitizedFile.new(file_path('test.txt'))
|
21
|
+
@file.content_type = 'text/plain'
|
21
22
|
|
22
23
|
# NOTE: specs fail with this options
|
23
24
|
#
|
@@ -31,16 +32,16 @@ describe CarrierWave::Storage::WebDAV do
|
|
31
32
|
describe '#cache!' do
|
32
33
|
it 'should cache from WebDAV' do
|
33
34
|
stub_mkcol @cache_uri
|
34
|
-
stub_put @
|
35
|
+
stub_put(@cache_uri, @file.path)
|
35
36
|
webdav_file = @storage.cache!(@file)
|
36
|
-
stub_get @
|
37
|
+
stub_get(@cache_uri, @file.path)
|
37
38
|
expect(@file.read).to eq(webdav_file.read)
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
42
|
describe '#retrieve_from_cache!' do
|
42
43
|
it 'should retreive a cache file from WebDAV' do
|
43
|
-
stub_get @
|
44
|
+
stub_get(@cache_uri, @file.path)
|
44
45
|
webdav_file = @storage.retrieve_from_cache!('tmp_test.txt')
|
45
46
|
expect(@file.read).to eq(webdav_file.read)
|
46
47
|
end
|
@@ -56,17 +57,17 @@ describe CarrierWave::Storage::WebDAV do
|
|
56
57
|
|
57
58
|
it 'should store from WebDAV' do
|
58
59
|
stub_mkcol @uri
|
59
|
-
stub_put @
|
60
|
+
stub_put(@uri, @file.path)
|
60
61
|
webdav_file = @storage.store!(@file)
|
61
|
-
stub_get @
|
62
|
+
stub_get(@uri, @file.path)
|
62
63
|
expect(@file.read).to eq(webdav_file.read)
|
63
64
|
end
|
64
65
|
|
65
66
|
it 'should retrieve a file from WebDAV' do
|
66
67
|
stub_mkcol @uri
|
67
|
-
stub_put @
|
68
|
+
stub_put(@uri, @file.path)
|
68
69
|
webdav_file = @storage.store!(@file)
|
69
|
-
stub_get @
|
70
|
+
stub_get(@uri, @file.path)
|
70
71
|
retrieved_file = @storage.retrieve!(webdav_file)
|
71
72
|
expect(@file.read).to eq(retrieved_file.read)
|
72
73
|
expect(File.basename(@file.path)).to eq(File.basename(retrieved_file.path))
|
@@ -74,7 +75,7 @@ describe CarrierWave::Storage::WebDAV do
|
|
74
75
|
|
75
76
|
it 'should delete a file from WebDAV' do
|
76
77
|
stub_mkcol @uri
|
77
|
-
stub_put @
|
78
|
+
stub_put(@uri, @file.path)
|
78
79
|
webdav_file = @storage.store!(@file)
|
79
80
|
stub_delete @uri
|
80
81
|
expect(Net::HTTPOK).to eq(webdav_file.delete.response.class)
|
@@ -82,23 +83,23 @@ describe CarrierWave::Storage::WebDAV do
|
|
82
83
|
|
83
84
|
it 'should size equal' do
|
84
85
|
stub_mkcol @uri
|
85
|
-
stub_put @
|
86
|
+
stub_put(@uri, @file.path)
|
86
87
|
webdav_file = @storage.store!(@file)
|
87
|
-
|
88
|
+
stub_head(@uri, @file.path)
|
88
89
|
expect(@file.size).to eq(webdav_file.size)
|
89
90
|
end
|
90
91
|
|
91
92
|
it 'assigns file content type to attribute' do
|
92
93
|
stub_mkcol @uri
|
93
|
-
stub_put @
|
94
|
+
stub_put(@uri, @file.path)
|
94
95
|
webdav_file = @storage.store!(@file)
|
95
|
-
stub_head @
|
96
|
+
stub_head(@uri, @file.path)
|
96
97
|
expect(@file.content_type).to eq(webdav_file.content_type)
|
97
98
|
end
|
98
99
|
|
99
100
|
it 'should url equal' do
|
100
101
|
stub_mkcol @uri
|
101
|
-
stub_put @
|
102
|
+
stub_put(@uri, @file.path)
|
102
103
|
webdav_file = @storage.store!(@file)
|
103
104
|
expect("#{@uploader.webdav_server}/#{@uploader.store_path}").to eq(webdav_file.url)
|
104
105
|
end
|
@@ -125,10 +126,10 @@ describe CarrierWave::Storage::WebDAV do
|
|
125
126
|
# secure_uri.password = @uploader.webdav_password
|
126
127
|
|
127
128
|
stub_mkcol secure_uri
|
128
|
-
stub_put
|
129
|
+
stub_put(secure_uri, @file.path)
|
129
130
|
webdav_file = @storage.store!(@file)
|
130
131
|
|
131
|
-
stub_get @
|
132
|
+
stub_get(@uri, @file.path)
|
132
133
|
expect(@file.read).to eq(webdav_file.read)
|
133
134
|
end
|
134
135
|
end
|
data/spec/supports/helpers.rb
CHANGED
@@ -1,22 +1,39 @@
|
|
1
|
+
require 'mime/types'
|
2
|
+
|
1
3
|
module Helpers
|
2
4
|
|
3
5
|
def file_path( *paths )
|
4
6
|
File.expand_path(File.join(File.dirname(__FILE__), '../fixtures', *paths))
|
5
7
|
end
|
6
8
|
|
7
|
-
def
|
9
|
+
def mime_type(path)
|
10
|
+
::MIME::Types.type_for(path).first.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def file_response(path)
|
14
|
+
{
|
15
|
+
:status => 200,
|
16
|
+
:body => File.read(path),
|
17
|
+
:headers => {
|
18
|
+
'Content-Type' => mime_type(path),
|
19
|
+
'Content-Length' => File.size(path).to_s
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def stub_get(url, path)
|
8
25
|
stub_request(:get, url.to_s).
|
9
|
-
to_return(
|
26
|
+
to_return(file_response(path))
|
10
27
|
end
|
11
28
|
|
12
|
-
def stub_head(url)
|
29
|
+
def stub_head(url, path)
|
13
30
|
stub_request(:head, url.to_s).
|
14
|
-
to_return(
|
31
|
+
to_return(file_response(path))
|
15
32
|
end
|
16
33
|
|
17
|
-
def stub_put(url)
|
34
|
+
def stub_put(url, path)
|
18
35
|
stub_request(:put, url.to_s).
|
19
|
-
with(:body =>
|
36
|
+
with(:body => File.read(path)).
|
20
37
|
to_return(:status => 201, :body => '', :headers => {})
|
21
38
|
end
|
22
39
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-webdav
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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: 2019-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -82,8 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
|
-
|
86
|
-
rubygems_version: 2.5.1
|
85
|
+
rubygems_version: 3.0.3
|
87
86
|
signing_key:
|
88
87
|
specification_version: 4
|
89
88
|
summary: WebDAV support for CarrierWave
|