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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a6aca97a12e750142521b99fe361241d9e721dd9
4
- data.tar.gz: b07d7718171c193ddbabe0a80844d7a6ef2e23f1
3
+ metadata.gz: f796cdb81a5978a2a642c3717a5e6a4816c09ebd
4
+ data.tar.gz: 12bebb033dbc078ce8b28847b3a77c1463e3489f
5
5
  SHA512:
6
- metadata.gz: e4d409491c6be24f43677b822e0ff5a8fd511ce80426ce680e1b771263110e79f498539d3902323de6b6a1807b4e3f97014a5ceda9b5269a0d98c5809bced399
7
- data.tar.gz: 12f24a977ba7210d6b42e6803cbf038afefb1117e9d82522479e70391854b14dc076323c37847a6afa6f42930dc588ce50a93ffa2ceb70e70fac4b18c661827c
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).body
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.get(url, options).headers
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
- mkcol
67
- HTTParty.put(write_url, options.merge({ body: file }))
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
@@ -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
-
@@ -1,5 +1,5 @@
1
1
  module CarrierWave
2
2
  module WebDAV
3
- VERSION = "0.4.0"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
@@ -13,7 +13,7 @@ describe CarrierWave::Storage::WebDAV do
13
13
  end
14
14
 
15
15
  @uploader = CarrierWave::Uploader::Base.new
16
- @uploader.stub! store_path: 'uploads/test.txt'
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
- stub_get @uri
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
@@ -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 => 200, :body => '', :headers => {})
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.0
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: 2013-09-19 00:00:00.000000000 Z
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.0.3
83
+ rubygems_version: 2.2.2
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: WebDAV support for CarrierWave