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 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