qingstor-sdk 2.0.1 → 2.1.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 +4 -4
- data/README.md +13 -0
- data/lib/qingstor/sdk/request/preprocessor.rb +12 -0
- data/lib/qingstor/sdk/request/request.rb +1 -1
- data/lib/qingstor/sdk/request/signer.rb +7 -12
- data/lib/qingstor/sdk/service/bucket.rb +8 -0
- data/lib/qingstor/sdk/service/object.rb +31 -10
- data/lib/qingstor/sdk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 085dc72ef0fba628a4b5333907aa8908ccc13d09
|
4
|
+
data.tar.gz: 8aefd7a35683cedafacc9d9ac210ad6ff1963d08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11d22ac48463e77c861b4a2de66927d6a09ab51c67f9cbd0c2619e392dc0d4b5a751f4c06c0b48b753f898fe6ab440b99f665131db2b6b7ae181c26fc6ee25c7
|
7
|
+
data.tar.gz: e987a50acafb8b714a283abe3c3bcd4e74891a34a030ccc2dead7b00424587510cf6ca7ab7f6e575e8240572a5fc2c3ce45706be982114ec03aac9c2d3af9079
|
data/README.md
CHANGED
@@ -167,11 +167,23 @@ log_level: 'warn'
|
|
167
167
|
## Change Log
|
168
168
|
All notable changes to QingStor SDK for Ruby will be documented here.
|
169
169
|
|
170
|
+
### [v2.1.0] - 2016-12-24
|
171
|
+
|
172
|
+
#### Changed
|
173
|
+
- Fix signer bug.
|
174
|
+
- Add more parameters to sign.
|
175
|
+
|
176
|
+
#### Added
|
177
|
+
- Add request parameters for GET Object.
|
178
|
+
- Add IP address conditions for bucket policy.
|
179
|
+
|
170
180
|
### [v2.0.1] - 2016-12-16
|
181
|
+
|
171
182
|
#### Changed
|
172
183
|
- Improve the implementation of deleting multiple objects.
|
173
184
|
|
174
185
|
### v2.0.0 - 2016-12-14
|
186
|
+
|
175
187
|
#### Added
|
176
188
|
- QingStor SDK for the Ruby programming language.
|
177
189
|
|
@@ -193,4 +205,5 @@ All notable changes to QingStor SDK for Ruby will be documented here.
|
|
193
205
|
|
194
206
|
The Apache License (Version 2.0, January 2004).
|
195
207
|
|
208
|
+
[v2.1.0]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.0.1...v2.1.0
|
196
209
|
[v2.0.1]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.0.0...v2.0.1
|
@@ -14,6 +14,7 @@
|
|
14
14
|
# | limitations under the License.
|
15
15
|
# +-------------------------------------------------------------------------
|
16
16
|
|
17
|
+
require 'cgi'
|
17
18
|
require 'base64'
|
18
19
|
require 'digest'
|
19
20
|
|
@@ -29,6 +30,7 @@ module QingStor
|
|
29
30
|
input[:request_uri] = request_uri input
|
30
31
|
input[:request_body] = request_body input
|
31
32
|
input[:request_headers] = request_headers input
|
33
|
+
input[:request_params] = request_params input
|
32
34
|
|
33
35
|
display = {}
|
34
36
|
input.each { |k, v| display[k] = v unless k.to_s == 'request_body' }
|
@@ -100,6 +102,16 @@ module QingStor
|
|
100
102
|
input[:request_headers]
|
101
103
|
end
|
102
104
|
|
105
|
+
def self.request_params(input)
|
106
|
+
unless input[:request_params].nil?
|
107
|
+
input[:request_params].map do |k, v|
|
108
|
+
input[:request_params][k] = CGI.escape v.to_s
|
109
|
+
input[:request_params][k].gsub! '+', '%20'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
input[:request_params]
|
113
|
+
end
|
114
|
+
|
103
115
|
def self.decorate_input(input)
|
104
116
|
input.deep_symbolize_keys!
|
105
117
|
input[:id] = (Random.new.rand * 1_000_000).to_int
|
@@ -63,7 +63,7 @@ module QingStor
|
|
63
63
|
def build
|
64
64
|
params = input[:request_params].map { |k, v| "#{k}=#{v}" }
|
65
65
|
query_string = !params.empty? ? "?#{params.join '&'}" : ''
|
66
|
-
self.request_url = "#{input[:request_endpoint]}#{
|
66
|
+
self.request_url = "#{input[:request_endpoint]}#{input[:request_uri]}#{query_string}"
|
67
67
|
|
68
68
|
request = new_http_request input[:request_method], request_url
|
69
69
|
request.body = input[:request_body]
|
@@ -87,29 +87,24 @@ module QingStor
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def self.canonicalized_resource(input)
|
90
|
-
path =
|
90
|
+
path = input[:request_uri]
|
91
91
|
|
92
92
|
params = input[:request_params].keys.sort.map { |k|
|
93
93
|
if sub_resource? k.to_s
|
94
94
|
v = input[:request_params][k].to_s.strip
|
95
|
-
!v.nil? && v != '' ? "#{k}=#{
|
95
|
+
!v.nil? && v != '' ? "#{k}=#{CGI.unescape v}" : k
|
96
96
|
end
|
97
97
|
}.compact.join '&'
|
98
98
|
params = path.include?('?') ? "&#{params}" : "?#{params}" if params != ''
|
99
99
|
"#{path}#{params}"
|
100
100
|
end
|
101
101
|
|
102
|
-
def self.escape(original)
|
103
|
-
result = CGI.escape(original)
|
104
|
-
result.gsub! '%3F', '?'
|
105
|
-
result.gsub! '%2F', '/'
|
106
|
-
result.gsub! '+', '%20'
|
107
|
-
result.gsub! '%2B', '+'
|
108
|
-
result
|
109
|
-
end
|
110
|
-
|
111
102
|
def self.sub_resource?(key)
|
112
|
-
%w(
|
103
|
+
%w(
|
104
|
+
acl cors delete mirror part_number policy stats upload_id uploads
|
105
|
+
response-expires response-cache-control response-content-type
|
106
|
+
response-content-language response-content-encoding response-content-disposition
|
107
|
+
).include? key
|
113
108
|
end
|
114
109
|
end
|
115
110
|
end
|
@@ -767,10 +767,18 @@ module QingStor
|
|
767
767
|
|
768
768
|
unless x['condition'].nil?
|
769
769
|
|
770
|
+
unless x['condition']['ip_address'].nil?
|
771
|
+
|
772
|
+
end
|
773
|
+
|
770
774
|
unless x['condition']['is_null'].nil?
|
771
775
|
|
772
776
|
end
|
773
777
|
|
778
|
+
unless x['condition']['not_ip_address'].nil?
|
779
|
+
|
780
|
+
end
|
781
|
+
|
774
782
|
unless x['condition']['string_like'].nil?
|
775
783
|
|
776
784
|
end
|
@@ -170,7 +170,12 @@ module QingStor
|
|
170
170
|
|
171
171
|
# get_object: Retrieve the object.
|
172
172
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/object/get.html
|
173
|
-
def get_object(object_key,
|
173
|
+
def get_object(object_key, response_cache_control: '',
|
174
|
+
response_content_disposition: '',
|
175
|
+
response_content_encoding: '',
|
176
|
+
response_content_language: '',
|
177
|
+
response_content_type: '',
|
178
|
+
response_expires: '', if_match: '',
|
174
179
|
if_modified_since: '',
|
175
180
|
if_none_match: '',
|
176
181
|
if_unmodified_since: '',
|
@@ -178,18 +183,28 @@ module QingStor
|
|
178
183
|
x_qs_encryption_customer_algorithm: '',
|
179
184
|
x_qs_encryption_customer_key: '',
|
180
185
|
x_qs_encryption_customer_key_md5: '')
|
181
|
-
request = get_object_request object_key,
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
186
|
+
request = get_object_request object_key, response_cache_control: response_cache_control,
|
187
|
+
response_content_disposition: response_content_disposition,
|
188
|
+
response_content_encoding: response_content_encoding,
|
189
|
+
response_content_language: response_content_language,
|
190
|
+
response_content_type: response_content_type,
|
191
|
+
response_expires: response_expires, if_match: if_match,
|
192
|
+
if_modified_since: if_modified_since,
|
193
|
+
if_none_match: if_none_match,
|
194
|
+
if_unmodified_since: if_unmodified_since,
|
195
|
+
range: range,
|
196
|
+
x_qs_encryption_customer_algorithm: x_qs_encryption_customer_algorithm,
|
197
|
+
x_qs_encryption_customer_key: x_qs_encryption_customer_key,
|
198
|
+
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5
|
189
199
|
request.send
|
190
200
|
end
|
191
201
|
|
192
|
-
def get_object_request(object_key,
|
202
|
+
def get_object_request(object_key, response_cache_control: '',
|
203
|
+
response_content_disposition: '',
|
204
|
+
response_content_encoding: '',
|
205
|
+
response_content_language: '',
|
206
|
+
response_content_type: '',
|
207
|
+
response_expires: '', if_match: '',
|
193
208
|
if_modified_since: '',
|
194
209
|
if_none_match: '',
|
195
210
|
if_unmodified_since: '',
|
@@ -205,6 +220,12 @@ module QingStor
|
|
205
220
|
request_method: 'GET',
|
206
221
|
request_uri: '/<bucket-name>/<object-key>',
|
207
222
|
request_params: {
|
223
|
+
'response-cache-control' => response_cache_control,
|
224
|
+
'response-content-disposition' => response_content_disposition,
|
225
|
+
'response-content-encoding' => response_content_encoding,
|
226
|
+
'response-content-language' => response_content_language,
|
227
|
+
'response-content-type' => response_content_type,
|
228
|
+
'response-expires' => response_expires,
|
208
229
|
},
|
209
230
|
request_headers: {
|
210
231
|
'If-Match' => if_match,
|
data/lib/qingstor/sdk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qingstor-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yunify SDK Group
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|