ucloud_storage 0.0.12 → 0.0.13
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.
- data/CHANGELOG +4 -0
- data/lib/ucloud_storage/ucloud_storage.rb +17 -25
- data/lib/ucloud_storage/version.rb +1 -1
- data/spec/ucloud_storage_spec.rb +26 -2
- metadata +11 -11
data/CHANGELOG
CHANGED
@@ -63,39 +63,27 @@ module UcloudStorage
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def delete(box_name, destination)
|
66
|
-
|
67
|
-
|
68
|
-
response = HTTParty.delete(storage_url+ "/#{box_name}/#{destination}",
|
69
|
-
headers: { "X-Auth-Token" => auth_token })
|
70
|
-
|
71
|
-
yield response if block_given?
|
72
|
-
|
73
|
-
response.code == 204 ? true : false
|
66
|
+
request(:delete, box_name, destination, [204])
|
74
67
|
end
|
75
68
|
|
76
69
|
def get(box_name, destination)
|
77
|
-
|
78
|
-
|
79
|
-
response = HTTParty.get(storage_url+ "/#{box_name}/#{destination}",
|
80
|
-
headers: { "X-Auth-Token" => auth_token })
|
81
|
-
|
82
|
-
yield response if block_given?
|
83
|
-
|
84
|
-
[200, 304].include?(response.code) ? true : false
|
70
|
+
request(:get, box_name, destination, [200, 304])
|
85
71
|
end
|
86
72
|
|
87
73
|
def exist?(box_name, destination)
|
88
|
-
|
89
|
-
|
90
|
-
response = HTTParty.head(storage_url+ "/#{box_name}/#{destination}",
|
91
|
-
headers: { "X-Auth-Token" => auth_token })
|
92
|
-
|
93
|
-
[200, 204].include?(response.code) ? true : false # Adding 200 for Ucloud's way
|
74
|
+
request(:head, box_name, destination, [200, 204])
|
94
75
|
end
|
95
76
|
|
96
77
|
private
|
78
|
+
def request(method, box_name, destination, success_code = [200])
|
79
|
+
raise NotAuthorized if storage_url.nil?
|
97
80
|
|
98
|
-
|
81
|
+
response = HTTParty.send(method, "#{storage_url}/#{box_name}/#{destination}", headers: { "X-Auth-Token" => auth_token })
|
82
|
+
return request(method, box_name, destination, success_code) if response.code == 401 and authorize
|
83
|
+
|
84
|
+
yield response if block_given?
|
85
|
+
success_code.include?(response.code) ? true : false
|
86
|
+
end
|
99
87
|
|
100
88
|
# stolen from http://stackoverflow.com/a/16636012/1802026
|
101
89
|
def get_image_extension(local_file_path)
|
@@ -112,7 +100,11 @@ module UcloudStorage
|
|
112
100
|
when /^#{jpg2}/
|
113
101
|
'jpg'
|
114
102
|
else
|
115
|
-
|
103
|
+
if local_file_path.end_with? '.txt'
|
104
|
+
'text/plain'
|
105
|
+
else
|
106
|
+
'application/octet-stream'
|
107
|
+
end
|
116
108
|
# mime_type = `file #{local_file_path} --mime-type`.gsub("\n", '') # Works on linux and mac
|
117
109
|
# raise UnprocessableEntity, "unknown file type" if !mime_type
|
118
110
|
# mime_type.split(':')[1].split('/')[1].gsub('x-', '').gsub(/jpeg/, 'jpg').gsub(/text/, 'txt').gsub(/x-/, '')
|
@@ -120,4 +112,4 @@ module UcloudStorage
|
|
120
112
|
end
|
121
113
|
|
122
114
|
end
|
123
|
-
end
|
115
|
+
end
|
data/spec/ucloud_storage_spec.rb
CHANGED
@@ -161,13 +161,37 @@ describe UcloudStorage do
|
|
161
161
|
end
|
162
162
|
|
163
163
|
describe "#exist" do
|
164
|
+
it "should retry to upload if authorization failure response" do
|
165
|
+
VCR.use_cassette('storage/v1/auth') do
|
166
|
+
valid_ucloud.authorize
|
167
|
+
end
|
168
|
+
|
169
|
+
file_path = File.join(File.dirname(__FILE__), "/fixtures/sample_file.txt")
|
170
|
+
box = 'dev'
|
171
|
+
destination = 'cropped_images/'+Pathname(file_path).basename.to_s
|
172
|
+
|
173
|
+
VCR.use_cassette("v1/put_storage_object_04") do
|
174
|
+
valid_ucloud.upload(file_path, box, destination) do |response|
|
175
|
+
response.code.should == 201
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
valid_ucloud.auth_token += "a"
|
180
|
+
|
181
|
+
VCR.use_cassette("v1/get_storage_object)_04") do
|
182
|
+
valid_ucloud.get(box, destination) do |response|
|
183
|
+
[200, 304].should include(response.code)
|
184
|
+
end.should == true
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
164
188
|
it 'should get updated object' do
|
165
189
|
valid_ucloud.authorize
|
166
190
|
file_path = File.join(File.dirname(__FILE__), "/fixtures/sample_file.txt")
|
167
191
|
box = 'dev_box'
|
168
192
|
destination = 'cropped_images/'+Pathname(file_path).basename.to_s
|
169
193
|
|
170
|
-
VCR.use_cassette("v1/
|
194
|
+
VCR.use_cassette("v1/put_storage_object_03") do
|
171
195
|
valid_ucloud.upload(file_path, box, destination)
|
172
196
|
end
|
173
197
|
|
@@ -178,4 +202,4 @@ describe UcloudStorage do
|
|
178
202
|
end
|
179
203
|
end
|
180
204
|
end
|
181
|
-
end
|
205
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ucloud_storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-10-
|
13
|
+
date: 2013-10-30 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
17
|
-
requirement: &
|
17
|
+
requirement: &70267965657920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70267965657920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: vcr
|
28
|
-
requirement: &
|
28
|
+
requirement: &70267965655640 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70267965655640
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: webmock
|
39
|
-
requirement: &
|
39
|
+
requirement: &70267965652780 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70267965652780
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: httparty
|
50
|
-
requirement: &
|
50
|
+
requirement: &70267965643900 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70267965643900
|
59
59
|
description: ucloud storage API
|
60
60
|
email:
|
61
61
|
- wangsy@wangsy.com
|
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
version: '0'
|
100
100
|
requirements: []
|
101
101
|
rubyforge_project: ucloudstorage
|
102
|
-
rubygems_version: 1.8.
|
102
|
+
rubygems_version: 1.8.10
|
103
103
|
signing_key:
|
104
104
|
specification_version: 3
|
105
105
|
summary: simple API for authorize, upload/delete files
|