carrierwave-webdav 0.2.0 → 0.3.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/README.md +3 -2
- data/lib/carrierwave/storage/webdav.rb +12 -8
- data/lib/carrierwave/webdav/version.rb +1 -1
- data/lib/carrierwave/webdav.rb +1 -0
- data/spec/lib/webdav_spec.rb +38 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7afa6a736d2e4a796bd8de0c8189e5fa85c83686
|
4
|
+
data.tar.gz: a592e5bb352ff48b83979192106f39e936d0feb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 313de2c855d2893543a952579f9410c217cb5a263199653ec31b091c80574502488819c8a06d3183c77ede0e3b952111ee43ee7f03e354265415644353e2e88b
|
7
|
+
data.tar.gz: 61da6ba39dfaff6fede3d1820ed7cb74e938820c25ca68a4e1aeb400ff6fa750cf0313734a411414b3a15980b589c706c9ab1bf620191e7622948746f5c4d19c
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# CarrierWave for WebDAV
|
2
2
|
|
3
3
|
This gem adds support for WebDAV to
|
4
|
-
[CarrierWave](https://github.com/
|
4
|
+
[CarrierWave](https://github.com/carrierwaveuploader/carrierwave/)
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
@@ -20,7 +20,7 @@ Or, in Rails you can add it to your Gemfile:
|
|
20
20
|
## Getting Started
|
21
21
|
|
22
22
|
Follow the "Getting Started" directions in the main
|
23
|
-
[Carrierwave repository](https://
|
23
|
+
[Carrierwave repository](https://github.com/carrierwaveuploader/carrierwave/).
|
24
24
|
|
25
25
|
## Using WebDAV store
|
26
26
|
|
@@ -30,6 +30,7 @@ In Rails, add WebDAV settings to `config/initializers/carrierwave.rb`
|
|
30
30
|
CarrierWave.configure do |config|
|
31
31
|
config.storage = :webdav
|
32
32
|
config.webdav_server = 'https://your.webdav_server.com/dav' # Your WebDAV url.
|
33
|
+
# 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)
|
33
34
|
config.webdav_username = 'your webdav username'
|
34
35
|
config.webdav_password = 'your webdav password'
|
35
36
|
end
|
@@ -46,13 +46,12 @@ module CarrierWave
|
|
46
46
|
@uploader = uploader
|
47
47
|
@server = uploader.webdav_server
|
48
48
|
@server.sub! /\/$/, ''
|
49
|
+
@write_server = uploader.webdav_write_server
|
50
|
+
@write_server.sub!(/\/$/, '') if @write_server
|
49
51
|
@username = uploader.webdav_username
|
50
52
|
@password = uploader.webdav_password || ''
|
51
|
-
|
52
|
-
|
53
|
-
else
|
54
|
-
@options = {}
|
55
|
-
end
|
53
|
+
@options = {}
|
54
|
+
@options = { basic_auth: { username: @username, password: @password } } if @username
|
56
55
|
end
|
57
56
|
|
58
57
|
def read
|
@@ -61,7 +60,7 @@ module CarrierWave
|
|
61
60
|
|
62
61
|
def write(file)
|
63
62
|
mkcol
|
64
|
-
HTTParty.put(
|
63
|
+
HTTParty.put(write_url, options.merge({ body: file }))
|
65
64
|
end
|
66
65
|
|
67
66
|
def length
|
@@ -69,7 +68,7 @@ module CarrierWave
|
|
69
68
|
end
|
70
69
|
|
71
70
|
def delete
|
72
|
-
HTTParty.delete(
|
71
|
+
HTTParty.delete(write_url, options)
|
73
72
|
end
|
74
73
|
|
75
74
|
def url
|
@@ -82,13 +81,18 @@ module CarrierWave
|
|
82
81
|
|
83
82
|
private
|
84
83
|
|
84
|
+
def write_url
|
85
|
+
@write_server ? "#{@write_server}/#{path}" : url
|
86
|
+
end
|
87
|
+
|
85
88
|
def mkcol
|
86
89
|
dirs = []
|
87
90
|
path.split('/')[0...-1].each do |dir|
|
88
91
|
dirs << "#{dirs[-1]}/#{dir}"
|
89
92
|
end # Make path like a/b/c/t.txt to array ['/a', '/a/b', '/a/b/c']
|
93
|
+
use_server = @write_server ? @write_server : server
|
90
94
|
dirs.each do |dir|
|
91
|
-
HTTParty.mkcol("#{
|
95
|
+
HTTParty.mkcol("#{use_server}#{dir}", options)
|
92
96
|
end # Make collections recursively
|
93
97
|
end
|
94
98
|
end # File
|
data/lib/carrierwave/webdav.rb
CHANGED
data/spec/lib/webdav_spec.rb
CHANGED
@@ -22,37 +22,65 @@ describe CarrierWave::Storage::WebDAV do
|
|
22
22
|
@uri.user = @uploader.webdav_username
|
23
23
|
@uri.password = @uploader.webdav_password
|
24
24
|
@uri.merge! @uploader.store_path
|
25
|
-
|
26
|
-
stub_mkcol @uri
|
27
|
-
stub_put @uri
|
28
|
-
|
29
|
-
@webdav_file = @storage.store!(@file)
|
30
25
|
end
|
31
26
|
|
32
27
|
it 'should store from WebDAV' do
|
28
|
+
stub_mkcol @uri
|
29
|
+
stub_put @uri
|
30
|
+
webdav_file = @storage.store!(@file)
|
33
31
|
stub_get @uri
|
34
|
-
expect(@file.read).to eq(
|
32
|
+
expect(@file.read).to eq(webdav_file.read)
|
35
33
|
end
|
36
34
|
|
37
35
|
it 'should retrieve a file from WebDAV' do
|
36
|
+
stub_mkcol @uri
|
37
|
+
stub_put @uri
|
38
|
+
webdav_file = @storage.store!(@file)
|
38
39
|
stub_get @uri
|
39
|
-
retrieved_file = @storage.retrieve!(
|
40
|
+
retrieved_file = @storage.retrieve!(webdav_file)
|
40
41
|
expect(@file.read).to eq(retrieved_file.read)
|
41
42
|
expect(File.basename(@file.path)).to eq(File.basename(retrieved_file.path))
|
42
43
|
end
|
43
44
|
|
44
45
|
it 'should delete a file from WebDAV' do
|
46
|
+
stub_mkcol @uri
|
47
|
+
stub_put @uri
|
48
|
+
webdav_file = @storage.store!(@file)
|
45
49
|
stub_delete @uri
|
46
|
-
expect(Net::HTTPOK).to eq(
|
50
|
+
expect(Net::HTTPOK).to eq(webdav_file.delete.response.class)
|
47
51
|
end
|
48
52
|
|
49
53
|
it 'should size equal' do
|
54
|
+
stub_mkcol @uri
|
55
|
+
stub_put @uri
|
56
|
+
webdav_file = @storage.store!(@file)
|
50
57
|
stub_get @uri
|
51
|
-
expect(@file.size).to eq(
|
58
|
+
expect(@file.size).to eq(webdav_file.size)
|
52
59
|
end
|
53
60
|
|
54
61
|
it 'should url equal' do
|
55
|
-
|
62
|
+
stub_mkcol @uri
|
63
|
+
stub_put @uri
|
64
|
+
webdav_file = @storage.store!(@file)
|
65
|
+
expect("#{@uploader.webdav_server}/#{@uploader.store_path}").to eq(webdav_file.url)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should save through secure server' do
|
69
|
+
CarrierWave.configure do |config|
|
70
|
+
config.webdav_write_server = 'https://secure.your.webdavserver.com/dav/'
|
71
|
+
end
|
72
|
+
|
73
|
+
secure_uri = URI(@uploader.webdav_write_server)
|
74
|
+
secure_uri.user = @uploader.webdav_username
|
75
|
+
secure_uri.password = @uploader.webdav_password
|
76
|
+
secure_uri.merge! @uploader.store_path
|
77
|
+
|
78
|
+
stub_mkcol secure_uri
|
79
|
+
stub_put secure_uri
|
80
|
+
webdav_file = @storage.store!(@file)
|
81
|
+
|
82
|
+
stub_get @uri
|
83
|
+
expect(@file.read).to eq(webdav_file.read)
|
56
84
|
end
|
57
85
|
|
58
86
|
end
|
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.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Qinix
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
80
|
version: '0'
|
81
81
|
requirements: []
|
82
82
|
rubyforge_project:
|
83
|
-
rubygems_version: 2.0.
|
83
|
+
rubygems_version: 2.0.0
|
84
84
|
signing_key:
|
85
85
|
specification_version: 4
|
86
86
|
summary: WebDAV support for CarrierWave
|