ucloud_storage 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.0.13
2
+
3
+ * retry when authorizion expire
4
+
1
5
  ## v0.0.12
2
6
 
3
7
  * remove fork
@@ -63,39 +63,27 @@ module UcloudStorage
63
63
  end
64
64
 
65
65
  def delete(box_name, destination)
66
- raise NotAuthorized if storage_url.nil?
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
- raise NotAuthorized if storage_url.nil?
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
- raise NotAuthorized if storage_url.nil?
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
- private
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
- nil
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
@@ -1,3 +1,3 @@
1
1
  module UcloudStorage
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -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/put_storage_object_02") do
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.12
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-07 00:00:00.000000000 Z
13
+ date: 2013-10-30 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &70357224523380 !ruby/object:Gem::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: *70357224523380
25
+ version_requirements: *70267965657920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: vcr
28
- requirement: &70357224522960 !ruby/object:Gem::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: *70357224522960
36
+ version_requirements: *70267965655640
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: webmock
39
- requirement: &70357224522540 !ruby/object:Gem::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: *70357224522540
47
+ version_requirements: *70267965652780
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: httparty
50
- requirement: &70357224538500 !ruby/object:Gem::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: *70357224538500
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.5
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