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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fbbacc8489704bb68e0c181f4819f5e835b9df21
4
- data.tar.gz: f170dd3e53ecd19028177d6b64b800fbd70c55a1
2
+ SHA256:
3
+ metadata.gz: 27f93efb8393806ab738e97c7be04ef421f0c1fbeaaaa2477ad3ddf6dc2b1115
4
+ data.tar.gz: 89b9a7419294f1c00a7914dab5bfcf31b04df4dbe56b0f29d80462219af595f5
5
5
  SHA512:
6
- metadata.gz: b63df00595ec605460c02e9c34b6e7535d587afee7f80c7876ae0fdcd8236c2e20fe4125d7f061a82246fbf775f032b9e5ee27fcece8969683c771f2d3d93fe9
7
- data.tar.gz: 38332a2224a0f1707dd12c3456aafa3cdb8c7e5808c13afbb05761e0b80a2b37da8ab4006d88b29f375c60bcd16b8cd43705f10e205177661f69eb003dcdb526
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
  [![Build Status](https://travis-ci.org/qinix/carrierwave-webdav.png?branch=master)](https://travis-ci.org/qinix/carrierwave-webdav)
4
+ [![Coverage Status](https://coveralls.io/repos/github/qinix/carrierwave-webdav/badge.svg?branch=master)](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.read)
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.read)
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
- res = HTTParty.put(write_url, options.merge({ body: file }))
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
- read.bytesize
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}")
@@ -1,5 +1,5 @@
1
1
  module CarrierWave
2
2
  module WebDAV
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -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 @cache_uri
35
+ stub_put(@cache_uri, @file.path)
35
36
  webdav_file = @storage.cache!(@file)
36
- stub_get @cache_uri
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 @cache_uri
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 @uri
60
+ stub_put(@uri, @file.path)
60
61
  webdav_file = @storage.store!(@file)
61
- stub_get @uri
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 @uri
68
+ stub_put(@uri, @file.path)
68
69
  webdav_file = @storage.store!(@file)
69
- stub_get @uri
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 @uri
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 @uri
86
+ stub_put(@uri, @file.path)
86
87
  webdav_file = @storage.store!(@file)
87
- stub_get @uri
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 @uri
94
+ stub_put(@uri, @file.path)
94
95
  webdav_file = @storage.store!(@file)
95
- stub_head @uri
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 @uri
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 secure_uri
129
+ stub_put(secure_uri, @file.path)
129
130
  webdav_file = @storage.store!(@file)
130
131
 
131
- stub_get @uri
132
+ stub_get(@uri, @file.path)
132
133
  expect(@file.read).to eq(webdav_file.read)
133
134
  end
134
135
  end
@@ -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 stub_get(url)
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(:status => 200, :body => 'Hello, this is test data.', :headers => {})
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(:status => 200, :body => '', :headers => {'Content-type' => 'text/plain'})
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 => 'Hello, this is test data.').
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.5.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: 2017-01-31 00:00:00.000000000 Z
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
- rubyforge_project:
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