qingstor-sdk 2.0.0 → 2.0.1
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 +21 -4
- data/lib/qingstor/sdk/request/preprocessor.rb +17 -2
- data/lib/qingstor/sdk/request/request.rb +2 -14
- data/lib/qingstor/sdk/service/bucket.rb +4 -43
- data/lib/qingstor/sdk/service/object.rb +4 -20
- data/lib/qingstor/sdk/service/qingstor.rb +0 -2
- data/lib/qingstor/sdk/version.rb +1 -1
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 121f4fa26d746085c9c07a1217863b907228aaac
|
4
|
+
data.tar.gz: b41e30469b51ea9d1ce6acd983d9371bfc41a348
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26183f925125c74f9cafdd94786229f4a87ff9689dfcdea1a63a58f26a4ad9a5be7d034b7284e56578a269d70b45c7bca096b2e4747289d2950ee63aec384b57
|
7
|
+
data.tar.gz: b5c50f4616a145c5637c16eec5aee9f28fe8f0c1a943a195fd41a049235efa26b6a48da0acd4eeeda949707c95e34484c92a1a13f41c3110ed2b211489a6db9b
|
data/README.md
CHANGED
@@ -40,7 +40,7 @@ $ bundle install
|
|
40
40
|
Get code from GitHub:
|
41
41
|
|
42
42
|
``` bash
|
43
|
-
$ git clone git@
|
43
|
+
$ git clone git@github.com:yunify/qingstor-sdk-ruby.git
|
44
44
|
```
|
45
45
|
|
46
46
|
Build and install with bundler:
|
@@ -66,8 +66,8 @@ otherwise.
|
|
66
66
|
___API Access Key Example:___
|
67
67
|
|
68
68
|
``` yaml
|
69
|
-
access_key_id: '
|
70
|
-
secret_access_key: '
|
69
|
+
access_key_id: 'ACCESS_KEY_ID_EXAMPLE'
|
70
|
+
secret_access_key: 'SECRET_ACCESS_KEY_EXAMPLE'
|
71
71
|
```
|
72
72
|
|
73
73
|
### Code Example
|
@@ -164,6 +164,17 @@ connection_retries: 3
|
|
164
164
|
log_level: 'warn'
|
165
165
|
```
|
166
166
|
|
167
|
+
## Change Log
|
168
|
+
All notable changes to QingStor SDK for Ruby will be documented here.
|
169
|
+
|
170
|
+
### [v2.0.1] - 2016-12-16
|
171
|
+
#### Changed
|
172
|
+
- Improve the implementation of deleting multiple objects.
|
173
|
+
|
174
|
+
### v2.0.0 - 2016-12-14
|
175
|
+
#### Added
|
176
|
+
- QingStor SDK for the Ruby programming language.
|
177
|
+
|
167
178
|
## Reference Documentations
|
168
179
|
|
169
180
|
- [QingStor Documentation](https://docs.qingcloud.com/qingstor/index.html)
|
@@ -172,8 +183,14 @@ log_level: 'warn'
|
|
172
183
|
|
173
184
|
## Contributing
|
174
185
|
|
175
|
-
|
186
|
+
1. Fork it ( https://github.com/yunify/qingstor-sdk-ruby/fork )
|
187
|
+
2. Create your feature branch (`git checkout -b new-feature`)
|
188
|
+
3. Commit your changes (`git commit -asm 'Add some feature'`)
|
189
|
+
4. Push to the branch (`git push origin new-feature`)
|
190
|
+
5. Create a new Pull Request
|
176
191
|
|
177
192
|
## LICENSE
|
178
193
|
|
179
194
|
The Apache License (Version 2.0, January 2004).
|
195
|
+
|
196
|
+
[v2.0.1]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.0.0...v2.0.1
|
@@ -14,6 +14,9 @@
|
|
14
14
|
# | limitations under the License.
|
15
15
|
# +-------------------------------------------------------------------------
|
16
16
|
|
17
|
+
require 'base64'
|
18
|
+
require 'digest'
|
19
|
+
|
17
20
|
require 'active_support/core_ext/hash/keys'
|
18
21
|
require 'mimemagic'
|
19
22
|
|
@@ -54,7 +57,14 @@ module QingStor
|
|
54
57
|
|
55
58
|
def self.request_body(input)
|
56
59
|
body = input[:request_body]
|
57
|
-
body.is_a?(File) ? body.read : body
|
60
|
+
body = body.is_a?(File) ? body.read : body
|
61
|
+
return body if body
|
62
|
+
|
63
|
+
if input[:request_elements] && !input[:request_elements].empty?
|
64
|
+
json_body = JSON.generate input[:request_elements]
|
65
|
+
Logger.info "QingStor request json: [#{input[:id]}] #{json_body}"
|
66
|
+
json_body
|
67
|
+
end
|
58
68
|
end
|
59
69
|
|
60
70
|
def self.request_headers(input)
|
@@ -79,9 +89,14 @@ module QingStor
|
|
79
89
|
input[:request_headers][:'Content-Type'] = 'application/octet-stream'
|
80
90
|
end
|
81
91
|
unless input[:request_headers][:'User-Agent']
|
82
|
-
ua = "
|
92
|
+
ua = "qingstor-sdk-ruby/#{QingStor::SDK::VERSION} (Ruby v#{RUBY_VERSION}; #{RUBY_PLATFORM})"
|
83
93
|
input[:request_headers][:'User-Agent'] = ua
|
84
94
|
end
|
95
|
+
|
96
|
+
if input[:api_name] == 'Delete Multiple Objects'
|
97
|
+
input[:request_headers][:'Content-MD5'] = Base64.encode64(Digest::MD5.digest(input[:request_body])).strip
|
98
|
+
end
|
99
|
+
|
85
100
|
input[:request_headers]
|
86
101
|
end
|
87
102
|
|
@@ -66,8 +66,8 @@ module QingStor
|
|
66
66
|
self.request_url = "#{input[:request_endpoint]}#{Signer.escape input[:request_uri]}#{query_string}"
|
67
67
|
|
68
68
|
request = new_http_request input[:request_method], request_url
|
69
|
-
request.body =
|
70
|
-
input[:request_headers].each { |k, v| request
|
69
|
+
request.body = input[:request_body]
|
70
|
+
input[:request_headers].each { |k, v| request[k.to_s] = v }
|
71
71
|
|
72
72
|
self.http_request = request
|
73
73
|
end
|
@@ -102,18 +102,6 @@ module QingStor
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
def build_request_body(request_body, request_elements)
|
106
|
-
if request_body
|
107
|
-
request_body
|
108
|
-
elsif request_elements
|
109
|
-
unless request_elements.empty?
|
110
|
-
json_body = JSON.generate request_elements
|
111
|
-
Logger.info "QingStor request json: [#{input[:id]}] #{json_body}"
|
112
|
-
json_body
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
105
|
def new_http_request(method, url)
|
118
106
|
case method
|
119
107
|
when 'GET'
|
@@ -46,9 +46,7 @@ module QingStor
|
|
46
46
|
},
|
47
47
|
request_elements: {
|
48
48
|
},
|
49
|
-
|
50
49
|
request_body: nil,
|
51
|
-
|
52
50
|
status_code: [
|
53
51
|
204, # Bucket deleted
|
54
52
|
],
|
@@ -86,9 +84,7 @@ module QingStor
|
|
86
84
|
},
|
87
85
|
request_elements: {
|
88
86
|
},
|
89
|
-
|
90
87
|
request_body: nil,
|
91
|
-
|
92
88
|
status_code: [
|
93
89
|
200, # OK
|
94
90
|
],
|
@@ -126,9 +122,7 @@ module QingStor
|
|
126
122
|
},
|
127
123
|
request_elements: {
|
128
124
|
},
|
129
|
-
|
130
125
|
request_body: nil,
|
131
|
-
|
132
126
|
status_code: [
|
133
127
|
204, # No content
|
134
128
|
],
|
@@ -166,9 +160,7 @@ module QingStor
|
|
166
160
|
},
|
167
161
|
request_elements: {
|
168
162
|
},
|
169
|
-
|
170
163
|
request_body: nil,
|
171
|
-
|
172
164
|
status_code: [
|
173
165
|
204, # No content
|
174
166
|
],
|
@@ -188,14 +180,14 @@ module QingStor
|
|
188
180
|
|
189
181
|
# delete_multiple_objects: Delete multiple objects from the bucket.
|
190
182
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/delete_multiple.html
|
191
|
-
def delete_multiple_objects(
|
183
|
+
def delete_multiple_objects(objects: [],
|
192
184
|
quiet: nil)
|
193
|
-
request = delete_multiple_objects_request
|
194
|
-
|
185
|
+
request = delete_multiple_objects_request objects: objects,
|
186
|
+
quiet: quiet
|
195
187
|
request.send
|
196
188
|
end
|
197
189
|
|
198
|
-
def delete_multiple_objects_request(
|
190
|
+
def delete_multiple_objects_request(objects: [],
|
199
191
|
quiet: nil)
|
200
192
|
input = {
|
201
193
|
config: config,
|
@@ -206,15 +198,12 @@ module QingStor
|
|
206
198
|
request_params: {
|
207
199
|
},
|
208
200
|
request_headers: {
|
209
|
-
'Content-MD5' => content_md5,
|
210
201
|
},
|
211
202
|
request_elements: {
|
212
203
|
'objects' => objects,
|
213
204
|
'quiet' => quiet,
|
214
205
|
},
|
215
|
-
|
216
206
|
request_body: nil,
|
217
|
-
|
218
207
|
status_code: [
|
219
208
|
200, # OK
|
220
209
|
],
|
@@ -229,10 +218,6 @@ module QingStor
|
|
229
218
|
def delete_multiple_objects_input_validate(input)
|
230
219
|
input.deep_stringify_keys!
|
231
220
|
|
232
|
-
unless !input['request_headers']['Content-MD5'].nil? && !input['request_headers']['Content-MD5'].to_s.empty?
|
233
|
-
raise ParameterRequiredError.new('Content-MD5', 'DeleteMultipleObjectsInput')
|
234
|
-
end
|
235
|
-
|
236
221
|
unless !input['request_elements']['objects'].nil? && !input['request_elements']['objects'].to_s.empty?
|
237
222
|
raise ParameterRequiredError.new('objects', 'DeleteMultipleObjectsInput')
|
238
223
|
end
|
@@ -263,9 +248,7 @@ module QingStor
|
|
263
248
|
},
|
264
249
|
request_elements: {
|
265
250
|
},
|
266
|
-
|
267
251
|
request_body: nil,
|
268
|
-
|
269
252
|
status_code: [
|
270
253
|
200, # OK
|
271
254
|
],
|
@@ -303,9 +286,7 @@ module QingStor
|
|
303
286
|
},
|
304
287
|
request_elements: {
|
305
288
|
},
|
306
|
-
|
307
289
|
request_body: nil,
|
308
|
-
|
309
290
|
status_code: [
|
310
291
|
200, # OK
|
311
292
|
],
|
@@ -343,9 +324,7 @@ module QingStor
|
|
343
324
|
},
|
344
325
|
request_elements: {
|
345
326
|
},
|
346
|
-
|
347
327
|
request_body: nil,
|
348
|
-
|
349
328
|
status_code: [
|
350
329
|
200, # OK
|
351
330
|
],
|
@@ -383,9 +362,7 @@ module QingStor
|
|
383
362
|
},
|
384
363
|
request_elements: {
|
385
364
|
},
|
386
|
-
|
387
365
|
request_body: nil,
|
388
|
-
|
389
366
|
status_code: [
|
390
367
|
200, # OK
|
391
368
|
],
|
@@ -423,9 +400,7 @@ module QingStor
|
|
423
400
|
},
|
424
401
|
request_elements: {
|
425
402
|
},
|
426
|
-
|
427
403
|
request_body: nil,
|
428
|
-
|
429
404
|
status_code: [
|
430
405
|
200, # OK
|
431
406
|
],
|
@@ -463,9 +438,7 @@ module QingStor
|
|
463
438
|
},
|
464
439
|
request_elements: {
|
465
440
|
},
|
466
|
-
|
467
441
|
request_body: nil,
|
468
|
-
|
469
442
|
status_code: [
|
470
443
|
200, # OK
|
471
444
|
],
|
@@ -516,9 +489,7 @@ module QingStor
|
|
516
489
|
},
|
517
490
|
request_elements: {
|
518
491
|
},
|
519
|
-
|
520
492
|
request_body: nil,
|
521
|
-
|
522
493
|
status_code: [
|
523
494
|
200, # OK
|
524
495
|
],
|
@@ -556,9 +527,7 @@ module QingStor
|
|
556
527
|
},
|
557
528
|
request_elements: {
|
558
529
|
},
|
559
|
-
|
560
530
|
request_body: nil,
|
561
|
-
|
562
531
|
status_code: [
|
563
532
|
201, # Bucket created
|
564
533
|
],
|
@@ -597,9 +566,7 @@ module QingStor
|
|
597
566
|
request_elements: {
|
598
567
|
'acl' => acl,
|
599
568
|
},
|
600
|
-
|
601
569
|
request_body: nil,
|
602
|
-
|
603
570
|
status_code: [
|
604
571
|
200, # OK
|
605
572
|
],
|
@@ -678,9 +645,7 @@ module QingStor
|
|
678
645
|
request_elements: {
|
679
646
|
'cors_rules' => cors_rules,
|
680
647
|
},
|
681
|
-
|
682
648
|
request_body: nil,
|
683
|
-
|
684
649
|
status_code: [
|
685
650
|
200, # OK
|
686
651
|
],
|
@@ -733,9 +698,7 @@ module QingStor
|
|
733
698
|
request_elements: {
|
734
699
|
'source_site' => source_site,
|
735
700
|
},
|
736
|
-
|
737
701
|
request_body: nil,
|
738
|
-
|
739
702
|
status_code: [
|
740
703
|
200, # OK
|
741
704
|
],
|
@@ -778,9 +741,7 @@ module QingStor
|
|
778
741
|
request_elements: {
|
779
742
|
'statement' => statement,
|
780
743
|
},
|
781
|
-
|
782
744
|
request_body: nil,
|
783
|
-
|
784
745
|
status_code: [
|
785
746
|
200, # OK
|
786
747
|
],
|
@@ -43,9 +43,7 @@ module QingStor
|
|
43
43
|
},
|
44
44
|
request_elements: {
|
45
45
|
},
|
46
|
-
|
47
46
|
request_body: nil,
|
48
|
-
|
49
47
|
status_code: [
|
50
48
|
204, # Object multipart deleted
|
51
49
|
],
|
@@ -103,9 +101,7 @@ module QingStor
|
|
103
101
|
request_elements: {
|
104
102
|
'object_parts' => object_parts,
|
105
103
|
},
|
106
|
-
|
107
104
|
request_body: nil,
|
108
|
-
|
109
105
|
status_code: [
|
110
106
|
201, # Object created
|
111
107
|
],
|
@@ -154,9 +150,7 @@ module QingStor
|
|
154
150
|
},
|
155
151
|
request_elements: {
|
156
152
|
},
|
157
|
-
|
158
153
|
request_body: nil,
|
159
|
-
|
160
154
|
status_code: [
|
161
155
|
204, # Object deleted
|
162
156
|
],
|
@@ -224,9 +218,7 @@ module QingStor
|
|
224
218
|
},
|
225
219
|
request_elements: {
|
226
220
|
},
|
227
|
-
|
228
221
|
request_body: nil,
|
229
|
-
|
230
222
|
status_code: [
|
231
223
|
200, # OK
|
232
224
|
206, # Partial content
|
@@ -293,9 +285,7 @@ module QingStor
|
|
293
285
|
},
|
294
286
|
request_elements: {
|
295
287
|
},
|
296
|
-
|
297
288
|
request_body: nil,
|
298
|
-
|
299
289
|
status_code: [
|
300
290
|
200, # OK
|
301
291
|
],
|
@@ -347,9 +337,7 @@ module QingStor
|
|
347
337
|
},
|
348
338
|
request_elements: {
|
349
339
|
},
|
350
|
-
|
351
340
|
request_body: nil,
|
352
|
-
|
353
341
|
status_code: [
|
354
342
|
200, # OK
|
355
343
|
],
|
@@ -397,9 +385,7 @@ module QingStor
|
|
397
385
|
},
|
398
386
|
request_elements: {
|
399
387
|
},
|
400
|
-
|
401
388
|
request_body: nil,
|
402
|
-
|
403
389
|
status_code: [
|
404
390
|
200, # OK
|
405
391
|
],
|
@@ -451,9 +437,7 @@ module QingStor
|
|
451
437
|
},
|
452
438
|
request_elements: {
|
453
439
|
},
|
454
|
-
|
455
440
|
request_body: nil,
|
456
|
-
|
457
441
|
status_code: [
|
458
442
|
200, # OK
|
459
443
|
],
|
@@ -496,6 +480,7 @@ module QingStor
|
|
496
480
|
x_qs_encryption_customer_algorithm: '',
|
497
481
|
x_qs_encryption_customer_key: '',
|
498
482
|
x_qs_encryption_customer_key_md5: '',
|
483
|
+
x_qs_fetch_if_unmodified_since: '',
|
499
484
|
x_qs_fetch_source: '',
|
500
485
|
x_qs_move_source: '',
|
501
486
|
body: nil)
|
@@ -514,6 +499,7 @@ module QingStor
|
|
514
499
|
x_qs_encryption_customer_algorithm: x_qs_encryption_customer_algorithm,
|
515
500
|
x_qs_encryption_customer_key: x_qs_encryption_customer_key,
|
516
501
|
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5,
|
502
|
+
x_qs_fetch_if_unmodified_since: x_qs_fetch_if_unmodified_since,
|
517
503
|
x_qs_fetch_source: x_qs_fetch_source,
|
518
504
|
x_qs_move_source: x_qs_move_source,
|
519
505
|
body: body
|
@@ -535,6 +521,7 @@ module QingStor
|
|
535
521
|
x_qs_encryption_customer_algorithm: '',
|
536
522
|
x_qs_encryption_customer_key: '',
|
537
523
|
x_qs_encryption_customer_key_md5: '',
|
524
|
+
x_qs_fetch_if_unmodified_since: '',
|
538
525
|
x_qs_fetch_source: '',
|
539
526
|
x_qs_move_source: '',
|
540
527
|
body: nil)
|
@@ -563,14 +550,13 @@ module QingStor
|
|
563
550
|
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
564
551
|
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
565
552
|
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5,
|
553
|
+
'X-QS-Fetch-If-Unmodified-Since' => x_qs_fetch_if_unmodified_since,
|
566
554
|
'X-QS-Fetch-Source' => x_qs_fetch_source,
|
567
555
|
'X-QS-Move-Source' => x_qs_move_source,
|
568
556
|
},
|
569
557
|
request_elements: {
|
570
558
|
},
|
571
|
-
|
572
559
|
request_body: body,
|
573
|
-
|
574
560
|
status_code: [
|
575
561
|
201, # Object created
|
576
562
|
],
|
@@ -634,9 +620,7 @@ module QingStor
|
|
634
620
|
},
|
635
621
|
request_elements: {
|
636
622
|
},
|
637
|
-
|
638
623
|
request_body: body,
|
639
|
-
|
640
624
|
status_code: [
|
641
625
|
201, # Object multipart created
|
642
626
|
],
|
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.0.1
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.10.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.10.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,9 +108,23 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.12.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.45.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.45.0
|
111
125
|
description: The official QingStor SDK for Ruby programming language.
|
112
126
|
email:
|
113
|
-
-
|
127
|
+
- sdk_group@yunify.com
|
114
128
|
executables: []
|
115
129
|
extensions: []
|
116
130
|
extra_rdoc_files: []
|