qingstor-sdk 2.2.4 → 2.3.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 +15 -0
- data/lib/qingstor/sdk/general/config.rb +2 -2
- data/lib/qingstor/sdk/general/logger.rb +1 -1
- data/lib/qingstor/sdk/request/preprocessor.rb +8 -1
- data/lib/qingstor/sdk/request/request.rb +1 -1
- data/lib/qingstor/sdk/request/signer.rb +4 -3
- data/lib/qingstor/sdk/service/bucket.rb +696 -58
- data/lib/qingstor/sdk/service/object.rb +285 -44
- data/lib/qingstor/sdk/service/qingstor.rb +13 -7
- data/lib/qingstor/sdk/version.rb +1 -1
- metadata +23 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f96fbe4a96c1158586ba3178388d9e1d718a87bc8a85dc948e1f93c39e5af9b5
|
4
|
+
data.tar.gz: ab161d6e76bf701a178189549f929c79838537faa8559a4af4ec4ffe11f8afbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56d0d535ce815915faf22f7e38a635a22b5d7009cf121a29b08b18c728b982d0d618fac8f9e2c2dcb767d2809f8a5b4a42cd494113c7aa85e01e1d0f402e1723
|
7
|
+
data.tar.gz: fef1d45a4891cadf79569fd44591f3a8adc747ff7c2f7dc0845fc3927d5d316e4a3a543928888436af97b78fb32dc70f6a74938479dd1b518f3fc12daff26559
|
data/README.md
CHANGED
@@ -167,6 +167,20 @@ 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.3.0] - 2020-05-11
|
171
|
+
|
172
|
+
### Added
|
173
|
+
|
174
|
+
- Add support for lifecycle and notification.
|
175
|
+
- Add support for bucket logging, bucket cname and append object. (#24)
|
176
|
+
|
177
|
+
### Fixed
|
178
|
+
|
179
|
+
- Modify content-type check for application/json. (#21)
|
180
|
+
- Fix sub-resources not be recognized when generate signature. (#25)
|
181
|
+
- Fix meta data not work as intended. (#26)
|
182
|
+
- Reverse fix of empty map in template, should not compact empty hash when sign. (#28)
|
183
|
+
|
170
184
|
### [v2.2.3] - 2017-03-28
|
171
185
|
|
172
186
|
### Fixed
|
@@ -244,6 +258,7 @@ All notable changes to QingStor SDK for Ruby will be documented here.
|
|
244
258
|
The Apache License (Version 2.0, January 2004).
|
245
259
|
|
246
260
|
[compatible]: https://github.com/yunify/qingstor-sdk-ruby/tree/compatible
|
261
|
+
[v2.3.0]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.3...v2.3.0
|
247
262
|
[v2.2.3]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.2...v2.2.3
|
248
263
|
[v2.2.2]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.1...v2.2.2
|
249
264
|
[v2.2.1]: https://github.com/yunify/qingstor-sdk-ruby/compare/v2.2.0...v2.2.1
|
@@ -29,7 +29,7 @@ module QingStor
|
|
29
29
|
def self.init(access_key_id, secret_access_key)
|
30
30
|
initial_config = {
|
31
31
|
access_key_id: access_key_id,
|
32
|
-
secret_access_key: secret_access_key
|
32
|
+
secret_access_key: secret_access_key
|
33
33
|
}
|
34
34
|
Config.new(initial_config)
|
35
35
|
end
|
@@ -47,7 +47,7 @@ module QingStor
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def check
|
50
|
-
%i
|
50
|
+
%i[access_key_id secret_access_key host port protocol].each do |x|
|
51
51
|
if !self[x] || self[x].to_s.empty?
|
52
52
|
raise ConfigurationError, "#{x.to_sym} not specified"
|
53
53
|
end
|
@@ -23,7 +23,7 @@ module QingStor
|
|
23
23
|
@@level = :warn
|
24
24
|
|
25
25
|
def self.set_level(level)
|
26
|
-
index = %w
|
26
|
+
index = %w[debug info warn error fatal].find_index level.to_s
|
27
27
|
@@logger.level = index.nil? ? 0 : index
|
28
28
|
@@level = level.to_sym
|
29
29
|
end
|
@@ -102,6 +102,13 @@ module QingStor
|
|
102
102
|
input[:request_headers][:'Content-MD5'] = Base64.encode64(Digest::MD5.digest(input[:request_body])).strip
|
103
103
|
end
|
104
104
|
|
105
|
+
if input[:request_headers][:'X-QS-MetaData'].is_a?(Hash) && !input[:request_headers][:'X-QS-MetaData'].empty?
|
106
|
+
input[:request_headers][:'X-QS-MetaData'].each do |k, v|
|
107
|
+
input[:request_headers][:"#{k}"] = v
|
108
|
+
end
|
109
|
+
input[:request_headers].delete :'X-QS-MetaData'
|
110
|
+
end
|
111
|
+
|
105
112
|
input[:request_headers].map do |k, v|
|
106
113
|
input[:request_headers][k] = escape v.to_s unless v.to_s.ascii_only?
|
107
114
|
end
|
@@ -127,7 +134,7 @@ module QingStor
|
|
127
134
|
def self.compact(object)
|
128
135
|
object.each do |k, v|
|
129
136
|
object[k] = compact v if v.is_a? Hash
|
130
|
-
object.delete k if v.nil? || v == ''
|
137
|
+
object.delete k if v.nil? || v == '' || v == []
|
131
138
|
end
|
132
139
|
object
|
133
140
|
end
|
@@ -80,7 +80,7 @@ module QingStor
|
|
80
80
|
output['status_code'] = http_response.code.to_i
|
81
81
|
|
82
82
|
http_response.each_header { |k, v| output[k.tr('-', '_')] = v }
|
83
|
-
if http_response['Content-Type']
|
83
|
+
if http_response['Content-Type'].include? 'application/json'
|
84
84
|
unless http_response.body.nil?
|
85
85
|
JSON.parse(http_response.body).each { |k, v| output[k] = v }
|
86
86
|
end
|
@@ -98,11 +98,12 @@ module QingStor
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def self.sub_resource?(key)
|
101
|
-
%w
|
102
|
-
acl cors delete
|
101
|
+
%w[
|
102
|
+
acl append cname cors delete image lifecycle logging mirror
|
103
|
+
notification part_number policy position stats upload_id uploads
|
103
104
|
response-expires response-cache-control response-content-type
|
104
105
|
response-content-language response-content-encoding response-content-disposition
|
105
|
-
|
106
|
+
].include? key
|
106
107
|
end
|
107
108
|
end
|
108
109
|
end
|
@@ -47,9 +47,10 @@ module QingStor
|
|
47
47
|
request_elements: {
|
48
48
|
},
|
49
49
|
request_body: nil,
|
50
|
+
|
50
51
|
status_code: [
|
51
|
-
204
|
52
|
-
]
|
52
|
+
204
|
53
|
+
]
|
53
54
|
}
|
54
55
|
|
55
56
|
delete_bucket_input_validate input
|
@@ -64,6 +65,50 @@ module QingStor
|
|
64
65
|
|
65
66
|
public
|
66
67
|
|
68
|
+
# delete_bucket_cname: Delete bucket CNAME setting of the bucket.
|
69
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/delete_cname.html
|
70
|
+
def delete_cname(domain: '')
|
71
|
+
request = delete_cname_request domain: domain
|
72
|
+
request.send
|
73
|
+
end
|
74
|
+
|
75
|
+
def delete_cname_request(domain: '')
|
76
|
+
input = {
|
77
|
+
config: config,
|
78
|
+
properties: properties,
|
79
|
+
api_name: 'DELETE Bucket CNAME',
|
80
|
+
request_method: 'DELETE',
|
81
|
+
request_uri: '/<bucket-name>?cname',
|
82
|
+
request_params: {
|
83
|
+
},
|
84
|
+
request_headers: {
|
85
|
+
},
|
86
|
+
request_elements: {
|
87
|
+
'domain' => domain
|
88
|
+
},
|
89
|
+
request_body: nil,
|
90
|
+
|
91
|
+
status_code: [
|
92
|
+
204
|
93
|
+
]
|
94
|
+
}
|
95
|
+
|
96
|
+
delete_bucket_cname_input_validate input
|
97
|
+
Request.new input
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def delete_bucket_cname_input_validate(input)
|
103
|
+
input.deep_stringify_keys!
|
104
|
+
|
105
|
+
unless !input['request_elements']['domain'].nil? && !input['request_elements']['domain'].to_s.empty?
|
106
|
+
raise ParameterRequiredError.new('domain', 'DeleteBucketCNAMEInput')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
public
|
111
|
+
|
67
112
|
# delete_bucket_cors: Delete CORS information of the bucket.
|
68
113
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/delete_cors.html
|
69
114
|
def delete_cors
|
@@ -85,9 +130,10 @@ module QingStor
|
|
85
130
|
request_elements: {
|
86
131
|
},
|
87
132
|
request_body: nil,
|
133
|
+
|
88
134
|
status_code: [
|
89
|
-
204
|
90
|
-
]
|
135
|
+
204
|
136
|
+
]
|
91
137
|
}
|
92
138
|
|
93
139
|
delete_bucket_cors_input_validate input
|
@@ -123,9 +169,10 @@ module QingStor
|
|
123
169
|
request_elements: {
|
124
170
|
},
|
125
171
|
request_body: nil,
|
172
|
+
|
126
173
|
status_code: [
|
127
|
-
204
|
128
|
-
]
|
174
|
+
204
|
175
|
+
]
|
129
176
|
}
|
130
177
|
|
131
178
|
delete_bucket_external_mirror_input_validate input
|
@@ -140,6 +187,123 @@ module QingStor
|
|
140
187
|
|
141
188
|
public
|
142
189
|
|
190
|
+
# delete_bucket_lifecycle: Delete Lifecycle information of the bucket.
|
191
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/delete_lifecycle.html
|
192
|
+
def delete_lifecycle
|
193
|
+
request = delete_lifecycle_request
|
194
|
+
request.send
|
195
|
+
end
|
196
|
+
|
197
|
+
def delete_lifecycle_request
|
198
|
+
input = {
|
199
|
+
config: config,
|
200
|
+
properties: properties,
|
201
|
+
api_name: 'DELETE Bucket Lifecycle',
|
202
|
+
request_method: 'DELETE',
|
203
|
+
request_uri: '/<bucket-name>?lifecycle',
|
204
|
+
request_params: {
|
205
|
+
},
|
206
|
+
request_headers: {
|
207
|
+
},
|
208
|
+
request_elements: {
|
209
|
+
},
|
210
|
+
request_body: nil,
|
211
|
+
|
212
|
+
status_code: [
|
213
|
+
204
|
214
|
+
]
|
215
|
+
}
|
216
|
+
|
217
|
+
delete_bucket_lifecycle_input_validate input
|
218
|
+
Request.new input
|
219
|
+
end
|
220
|
+
|
221
|
+
private
|
222
|
+
|
223
|
+
def delete_bucket_lifecycle_input_validate(input)
|
224
|
+
input.deep_stringify_keys!
|
225
|
+
end
|
226
|
+
|
227
|
+
public
|
228
|
+
|
229
|
+
# delete_bucket_logging: Delete bucket logging setting of the bucket.
|
230
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/delete_logging.html
|
231
|
+
def delete_logging
|
232
|
+
request = delete_logging_request
|
233
|
+
request.send
|
234
|
+
end
|
235
|
+
|
236
|
+
def delete_logging_request
|
237
|
+
input = {
|
238
|
+
config: config,
|
239
|
+
properties: properties,
|
240
|
+
api_name: 'DELETE Bucket Logging',
|
241
|
+
request_method: 'DELETE',
|
242
|
+
request_uri: '/<bucket-name>?logging',
|
243
|
+
request_params: {
|
244
|
+
},
|
245
|
+
request_headers: {
|
246
|
+
},
|
247
|
+
request_elements: {
|
248
|
+
},
|
249
|
+
request_body: nil,
|
250
|
+
|
251
|
+
status_code: [
|
252
|
+
204
|
253
|
+
]
|
254
|
+
}
|
255
|
+
|
256
|
+
delete_bucket_logging_input_validate input
|
257
|
+
Request.new input
|
258
|
+
end
|
259
|
+
|
260
|
+
private
|
261
|
+
|
262
|
+
def delete_bucket_logging_input_validate(input)
|
263
|
+
input.deep_stringify_keys!
|
264
|
+
end
|
265
|
+
|
266
|
+
public
|
267
|
+
|
268
|
+
# delete_bucket_notification: Delete Notification information of the bucket.
|
269
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/delete_notification.html
|
270
|
+
def delete_notification
|
271
|
+
request = delete_notification_request
|
272
|
+
request.send
|
273
|
+
end
|
274
|
+
|
275
|
+
def delete_notification_request
|
276
|
+
input = {
|
277
|
+
config: config,
|
278
|
+
properties: properties,
|
279
|
+
api_name: 'DELETE Bucket Notification',
|
280
|
+
request_method: 'DELETE',
|
281
|
+
request_uri: '/<bucket-name>?notification',
|
282
|
+
request_params: {
|
283
|
+
},
|
284
|
+
request_headers: {
|
285
|
+
},
|
286
|
+
request_elements: {
|
287
|
+
},
|
288
|
+
request_body: nil,
|
289
|
+
|
290
|
+
status_code: [
|
291
|
+
204
|
292
|
+
]
|
293
|
+
}
|
294
|
+
|
295
|
+
delete_bucket_notification_input_validate input
|
296
|
+
Request.new input
|
297
|
+
end
|
298
|
+
|
299
|
+
private
|
300
|
+
|
301
|
+
def delete_bucket_notification_input_validate(input)
|
302
|
+
input.deep_stringify_keys!
|
303
|
+
end
|
304
|
+
|
305
|
+
public
|
306
|
+
|
143
307
|
# delete_bucket_policy: Delete policy information of the bucket.
|
144
308
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/policy/delete_policy.html
|
145
309
|
def delete_policy
|
@@ -161,9 +325,10 @@ module QingStor
|
|
161
325
|
request_elements: {
|
162
326
|
},
|
163
327
|
request_body: nil,
|
328
|
+
|
164
329
|
status_code: [
|
165
|
-
204
|
166
|
-
]
|
330
|
+
204
|
331
|
+
]
|
167
332
|
}
|
168
333
|
|
169
334
|
delete_bucket_policy_input_validate input
|
@@ -201,12 +366,13 @@ module QingStor
|
|
201
366
|
},
|
202
367
|
request_elements: {
|
203
368
|
'objects' => objects,
|
204
|
-
'quiet' => quiet
|
369
|
+
'quiet' => quiet
|
205
370
|
},
|
206
371
|
request_body: nil,
|
372
|
+
|
207
373
|
status_code: [
|
208
|
-
200
|
209
|
-
]
|
374
|
+
200
|
375
|
+
]
|
210
376
|
}
|
211
377
|
|
212
378
|
delete_multiple_objects_input_validate input
|
@@ -249,9 +415,10 @@ module QingStor
|
|
249
415
|
request_elements: {
|
250
416
|
},
|
251
417
|
request_body: nil,
|
418
|
+
|
252
419
|
status_code: [
|
253
|
-
200
|
254
|
-
]
|
420
|
+
200
|
421
|
+
]
|
255
422
|
}
|
256
423
|
|
257
424
|
get_bucket_acl_input_validate input
|
@@ -266,6 +433,57 @@ module QingStor
|
|
266
433
|
|
267
434
|
public
|
268
435
|
|
436
|
+
# get_bucket_cname: Get bucket CNAME setting of the bucket.
|
437
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/get_cname.html
|
438
|
+
def get_cname(type: '')
|
439
|
+
request = get_cname_request type: type
|
440
|
+
request.send
|
441
|
+
end
|
442
|
+
|
443
|
+
def get_cname_request(type: '')
|
444
|
+
input = {
|
445
|
+
config: config,
|
446
|
+
properties: properties,
|
447
|
+
api_name: 'GET Bucket CNAME',
|
448
|
+
request_method: 'GET',
|
449
|
+
request_uri: '/<bucket-name>?cname',
|
450
|
+
request_params: {
|
451
|
+
'type' => type
|
452
|
+
},
|
453
|
+
request_headers: {
|
454
|
+
},
|
455
|
+
request_elements: {
|
456
|
+
},
|
457
|
+
request_body: nil,
|
458
|
+
|
459
|
+
status_code: [
|
460
|
+
200
|
461
|
+
]
|
462
|
+
}
|
463
|
+
|
464
|
+
get_bucket_cname_input_validate input
|
465
|
+
Request.new input
|
466
|
+
end
|
467
|
+
|
468
|
+
private
|
469
|
+
|
470
|
+
def get_bucket_cname_input_validate(input)
|
471
|
+
input.deep_stringify_keys!
|
472
|
+
|
473
|
+
if input['request_params']['type'] && !input['request_params']['type'].to_s.empty?
|
474
|
+
type_valid_values = %w[website normal]
|
475
|
+
unless type_valid_values.include? input['request_params']['type'].to_s
|
476
|
+
raise ParameterValueNotAllowedError.new(
|
477
|
+
'type',
|
478
|
+
input['request_params']['type'],
|
479
|
+
type_valid_values,
|
480
|
+
)
|
481
|
+
end
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
public
|
486
|
+
|
269
487
|
# get_bucket_cors: Get CORS information of the bucket.
|
270
488
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/get_cors.html
|
271
489
|
def get_cors
|
@@ -287,9 +505,10 @@ module QingStor
|
|
287
505
|
request_elements: {
|
288
506
|
},
|
289
507
|
request_body: nil,
|
508
|
+
|
290
509
|
status_code: [
|
291
|
-
200
|
292
|
-
]
|
510
|
+
200
|
511
|
+
]
|
293
512
|
}
|
294
513
|
|
295
514
|
get_bucket_cors_input_validate input
|
@@ -325,9 +544,10 @@ module QingStor
|
|
325
544
|
request_elements: {
|
326
545
|
},
|
327
546
|
request_body: nil,
|
547
|
+
|
328
548
|
status_code: [
|
329
|
-
200
|
330
|
-
]
|
549
|
+
200
|
550
|
+
]
|
331
551
|
}
|
332
552
|
|
333
553
|
get_bucket_external_mirror_input_validate input
|
@@ -342,6 +562,123 @@ module QingStor
|
|
342
562
|
|
343
563
|
public
|
344
564
|
|
565
|
+
# get_bucket_lifecycle: Get Lifecycle information of the bucket.
|
566
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/get_lifecycle.html
|
567
|
+
def get_lifecycle
|
568
|
+
request = get_lifecycle_request
|
569
|
+
request.send
|
570
|
+
end
|
571
|
+
|
572
|
+
def get_lifecycle_request
|
573
|
+
input = {
|
574
|
+
config: config,
|
575
|
+
properties: properties,
|
576
|
+
api_name: 'GET Bucket Lifecycle',
|
577
|
+
request_method: 'GET',
|
578
|
+
request_uri: '/<bucket-name>?lifecycle',
|
579
|
+
request_params: {
|
580
|
+
},
|
581
|
+
request_headers: {
|
582
|
+
},
|
583
|
+
request_elements: {
|
584
|
+
},
|
585
|
+
request_body: nil,
|
586
|
+
|
587
|
+
status_code: [
|
588
|
+
200
|
589
|
+
]
|
590
|
+
}
|
591
|
+
|
592
|
+
get_bucket_lifecycle_input_validate input
|
593
|
+
Request.new input
|
594
|
+
end
|
595
|
+
|
596
|
+
private
|
597
|
+
|
598
|
+
def get_bucket_lifecycle_input_validate(input)
|
599
|
+
input.deep_stringify_keys!
|
600
|
+
end
|
601
|
+
|
602
|
+
public
|
603
|
+
|
604
|
+
# get_bucket_logging: Get bucket logging setting of the bucket.
|
605
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/get_logging.html
|
606
|
+
def get_logging
|
607
|
+
request = get_logging_request
|
608
|
+
request.send
|
609
|
+
end
|
610
|
+
|
611
|
+
def get_logging_request
|
612
|
+
input = {
|
613
|
+
config: config,
|
614
|
+
properties: properties,
|
615
|
+
api_name: 'GET Bucket Logging',
|
616
|
+
request_method: 'GET',
|
617
|
+
request_uri: '/<bucket-name>?logging',
|
618
|
+
request_params: {
|
619
|
+
},
|
620
|
+
request_headers: {
|
621
|
+
},
|
622
|
+
request_elements: {
|
623
|
+
},
|
624
|
+
request_body: nil,
|
625
|
+
|
626
|
+
status_code: [
|
627
|
+
200
|
628
|
+
]
|
629
|
+
}
|
630
|
+
|
631
|
+
get_bucket_logging_input_validate input
|
632
|
+
Request.new input
|
633
|
+
end
|
634
|
+
|
635
|
+
private
|
636
|
+
|
637
|
+
def get_bucket_logging_input_validate(input)
|
638
|
+
input.deep_stringify_keys!
|
639
|
+
end
|
640
|
+
|
641
|
+
public
|
642
|
+
|
643
|
+
# get_bucket_notification: Get Notification information of the bucket.
|
644
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/get_notification.html
|
645
|
+
def get_notification
|
646
|
+
request = get_notification_request
|
647
|
+
request.send
|
648
|
+
end
|
649
|
+
|
650
|
+
def get_notification_request
|
651
|
+
input = {
|
652
|
+
config: config,
|
653
|
+
properties: properties,
|
654
|
+
api_name: 'GET Bucket Notification',
|
655
|
+
request_method: 'GET',
|
656
|
+
request_uri: '/<bucket-name>?notification',
|
657
|
+
request_params: {
|
658
|
+
},
|
659
|
+
request_headers: {
|
660
|
+
},
|
661
|
+
request_elements: {
|
662
|
+
},
|
663
|
+
request_body: nil,
|
664
|
+
|
665
|
+
status_code: [
|
666
|
+
200
|
667
|
+
]
|
668
|
+
}
|
669
|
+
|
670
|
+
get_bucket_notification_input_validate input
|
671
|
+
Request.new input
|
672
|
+
end
|
673
|
+
|
674
|
+
private
|
675
|
+
|
676
|
+
def get_bucket_notification_input_validate(input)
|
677
|
+
input.deep_stringify_keys!
|
678
|
+
end
|
679
|
+
|
680
|
+
public
|
681
|
+
|
345
682
|
# get_bucket_policy: Get policy information of the bucket.
|
346
683
|
# Documentation URL: https://https://docs.qingcloud.com/qingstor/api/bucket/policy/get_policy.html
|
347
684
|
def get_policy
|
@@ -363,9 +700,10 @@ module QingStor
|
|
363
700
|
request_elements: {
|
364
701
|
},
|
365
702
|
request_body: nil,
|
703
|
+
|
366
704
|
status_code: [
|
367
|
-
200
|
368
|
-
]
|
705
|
+
200
|
706
|
+
]
|
369
707
|
}
|
370
708
|
|
371
709
|
get_bucket_policy_input_validate input
|
@@ -401,9 +739,10 @@ module QingStor
|
|
401
739
|
request_elements: {
|
402
740
|
},
|
403
741
|
request_body: nil,
|
742
|
+
|
404
743
|
status_code: [
|
405
|
-
200
|
406
|
-
]
|
744
|
+
200
|
745
|
+
]
|
407
746
|
}
|
408
747
|
|
409
748
|
get_bucket_statistics_input_validate input
|
@@ -439,9 +778,10 @@ module QingStor
|
|
439
778
|
request_elements: {
|
440
779
|
},
|
441
780
|
request_body: nil,
|
781
|
+
|
442
782
|
status_code: [
|
443
|
-
200
|
444
|
-
]
|
783
|
+
200
|
784
|
+
]
|
445
785
|
}
|
446
786
|
|
447
787
|
head_bucket_input_validate input
|
@@ -459,20 +799,23 @@ module QingStor
|
|
459
799
|
# list_multipart_uploads: List multipart uploads in the bucket.
|
460
800
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/list_multipart_uploads.html
|
461
801
|
def list_multipart_uploads(delimiter: '',
|
802
|
+
key_marker: '',
|
462
803
|
limit: nil,
|
463
|
-
|
464
|
-
|
465
|
-
request = list_multipart_uploads_request delimiter:
|
466
|
-
|
467
|
-
|
468
|
-
prefix:
|
804
|
+
prefix: '',
|
805
|
+
upload_id_marker: '')
|
806
|
+
request = list_multipart_uploads_request delimiter: delimiter,
|
807
|
+
key_marker: key_marker,
|
808
|
+
limit: limit,
|
809
|
+
prefix: prefix,
|
810
|
+
upload_id_marker: upload_id_marker
|
469
811
|
request.send
|
470
812
|
end
|
471
813
|
|
472
814
|
def list_multipart_uploads_request(delimiter: '',
|
815
|
+
key_marker: '',
|
473
816
|
limit: nil,
|
474
|
-
|
475
|
-
|
817
|
+
prefix: '',
|
818
|
+
upload_id_marker: '')
|
476
819
|
input = {
|
477
820
|
config: config,
|
478
821
|
properties: properties,
|
@@ -480,19 +823,21 @@ module QingStor
|
|
480
823
|
request_method: 'GET',
|
481
824
|
request_uri: '/<bucket-name>?uploads',
|
482
825
|
request_params: {
|
483
|
-
'delimiter'
|
484
|
-
'
|
485
|
-
'
|
486
|
-
'prefix'
|
826
|
+
'delimiter' => delimiter,
|
827
|
+
'key_marker' => key_marker,
|
828
|
+
'limit' => limit,
|
829
|
+
'prefix' => prefix,
|
830
|
+
'upload_id_marker' => upload_id_marker
|
487
831
|
},
|
488
832
|
request_headers: {
|
489
833
|
},
|
490
834
|
request_elements: {
|
491
835
|
},
|
492
836
|
request_body: nil,
|
837
|
+
|
493
838
|
status_code: [
|
494
|
-
200
|
495
|
-
]
|
839
|
+
200
|
840
|
+
]
|
496
841
|
}
|
497
842
|
|
498
843
|
list_multipart_uploads_input_validate input
|
@@ -534,16 +879,17 @@ module QingStor
|
|
534
879
|
'delimiter' => delimiter,
|
535
880
|
'limit' => limit,
|
536
881
|
'marker' => marker,
|
537
|
-
'prefix' => prefix
|
882
|
+
'prefix' => prefix
|
538
883
|
},
|
539
884
|
request_headers: {
|
540
885
|
},
|
541
886
|
request_elements: {
|
542
887
|
},
|
543
888
|
request_body: nil,
|
889
|
+
|
544
890
|
status_code: [
|
545
|
-
200
|
546
|
-
]
|
891
|
+
200
|
892
|
+
]
|
547
893
|
}
|
548
894
|
|
549
895
|
list_objects_input_validate input
|
@@ -579,9 +925,10 @@ module QingStor
|
|
579
925
|
request_elements: {
|
580
926
|
},
|
581
927
|
request_body: nil,
|
928
|
+
|
582
929
|
status_code: [
|
583
|
-
201
|
584
|
-
]
|
930
|
+
201
|
931
|
+
]
|
585
932
|
}
|
586
933
|
|
587
934
|
put_bucket_input_validate input
|
@@ -615,12 +962,13 @@ module QingStor
|
|
615
962
|
request_headers: {
|
616
963
|
},
|
617
964
|
request_elements: {
|
618
|
-
'acl' => acl
|
965
|
+
'acl' => acl
|
619
966
|
},
|
620
967
|
request_body: nil,
|
968
|
+
|
621
969
|
status_code: [
|
622
|
-
200
|
623
|
-
]
|
970
|
+
200
|
971
|
+
]
|
624
972
|
}
|
625
973
|
|
626
974
|
put_bucket_acl_input_validate input
|
@@ -644,7 +992,7 @@ module QingStor
|
|
644
992
|
end
|
645
993
|
|
646
994
|
if x['grantee']['type'] && !x['grantee']['type'].to_s.empty?
|
647
|
-
type_valid_values = %w
|
995
|
+
type_valid_values = %w[user group]
|
648
996
|
unless type_valid_values.include? x['grantee']['type'].to_s
|
649
997
|
raise ParameterValueNotAllowedError.new(
|
650
998
|
'type',
|
@@ -656,15 +1004,19 @@ module QingStor
|
|
656
1004
|
|
657
1005
|
end
|
658
1006
|
|
659
|
-
|
1007
|
+
if x['grantee'].nil?
|
1008
|
+
raise ParameterRequiredError.new('grantee', 'acl')
|
1009
|
+
end
|
660
1010
|
|
661
1011
|
unless !x['permission'].nil? && !x['permission'].to_s.empty?
|
662
1012
|
raise ParameterRequiredError.new('permission', 'acl')
|
663
1013
|
end
|
664
1014
|
|
665
1015
|
next unless x['permission'] && !x['permission'].to_s.empty?
|
666
|
-
|
1016
|
+
|
1017
|
+
permission_valid_values = %w[READ WRITE FULL_CONTROL]
|
667
1018
|
next if permission_valid_values.include? x['permission'].to_s
|
1019
|
+
|
668
1020
|
raise ParameterValueNotAllowedError.new(
|
669
1021
|
'permission',
|
670
1022
|
x['permission'],
|
@@ -675,6 +1027,65 @@ module QingStor
|
|
675
1027
|
|
676
1028
|
public
|
677
1029
|
|
1030
|
+
# put_bucket_cname: Set bucket CNAME of the bucket.
|
1031
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cname/put_cname.html
|
1032
|
+
def put_cname(domain: '',
|
1033
|
+
type: '')
|
1034
|
+
request = put_cname_request domain: domain,
|
1035
|
+
type: type
|
1036
|
+
request.send
|
1037
|
+
end
|
1038
|
+
|
1039
|
+
def put_cname_request(domain: '',
|
1040
|
+
type: '')
|
1041
|
+
input = {
|
1042
|
+
config: config,
|
1043
|
+
properties: properties,
|
1044
|
+
api_name: 'PUT Bucket CNAME',
|
1045
|
+
request_method: 'PUT',
|
1046
|
+
request_uri: '/<bucket-name>?cname',
|
1047
|
+
request_params: {
|
1048
|
+
},
|
1049
|
+
request_headers: {
|
1050
|
+
},
|
1051
|
+
request_elements: {
|
1052
|
+
'domain' => domain,
|
1053
|
+
'type' => type
|
1054
|
+
},
|
1055
|
+
request_body: nil,
|
1056
|
+
|
1057
|
+
status_code: [
|
1058
|
+
200
|
1059
|
+
]
|
1060
|
+
}
|
1061
|
+
|
1062
|
+
put_bucket_cname_input_validate input
|
1063
|
+
Request.new input
|
1064
|
+
end
|
1065
|
+
|
1066
|
+
private
|
1067
|
+
|
1068
|
+
def put_bucket_cname_input_validate(input)
|
1069
|
+
input.deep_stringify_keys!
|
1070
|
+
|
1071
|
+
unless !input['request_elements']['domain'].nil? && !input['request_elements']['domain'].to_s.empty?
|
1072
|
+
raise ParameterRequiredError.new('domain', 'PutBucketCNAMEInput')
|
1073
|
+
end
|
1074
|
+
|
1075
|
+
if input['request_elements']['type'] && !input['request_elements']['type'].to_s.empty?
|
1076
|
+
type_valid_values = %w[normal website]
|
1077
|
+
unless type_valid_values.include? input['request_elements']['type'].to_s
|
1078
|
+
raise ParameterValueNotAllowedError.new(
|
1079
|
+
'type',
|
1080
|
+
input['request_elements']['type'],
|
1081
|
+
type_valid_values,
|
1082
|
+
)
|
1083
|
+
end
|
1084
|
+
end
|
1085
|
+
end
|
1086
|
+
|
1087
|
+
public
|
1088
|
+
|
678
1089
|
# put_bucket_cors: Set CORS information of the bucket.
|
679
1090
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/cors/put_cors.html
|
680
1091
|
def put_cors(cors_rules: [])
|
@@ -694,12 +1105,13 @@ module QingStor
|
|
694
1105
|
request_headers: {
|
695
1106
|
},
|
696
1107
|
request_elements: {
|
697
|
-
'cors_rules' => cors_rules
|
1108
|
+
'cors_rules' => cors_rules
|
698
1109
|
},
|
699
1110
|
request_body: nil,
|
1111
|
+
|
700
1112
|
status_code: [
|
701
|
-
200
|
702
|
-
]
|
1113
|
+
200
|
1114
|
+
]
|
703
1115
|
}
|
704
1116
|
|
705
1117
|
put_bucket_cors_input_validate input
|
@@ -747,12 +1159,13 @@ module QingStor
|
|
747
1159
|
request_headers: {
|
748
1160
|
},
|
749
1161
|
request_elements: {
|
750
|
-
'source_site' => source_site
|
1162
|
+
'source_site' => source_site
|
751
1163
|
},
|
752
1164
|
request_body: nil,
|
1165
|
+
|
753
1166
|
status_code: [
|
754
|
-
200
|
755
|
-
]
|
1167
|
+
200
|
1168
|
+
]
|
756
1169
|
}
|
757
1170
|
|
758
1171
|
put_bucket_external_mirror_input_validate input
|
@@ -771,6 +1184,230 @@ module QingStor
|
|
771
1184
|
|
772
1185
|
public
|
773
1186
|
|
1187
|
+
# put_bucket_lifecycle: Set Lifecycle information of the bucket.
|
1188
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/lifecycle/put_lifecycle.html
|
1189
|
+
def put_lifecycle(rule: [])
|
1190
|
+
request = put_lifecycle_request rule: rule
|
1191
|
+
request.send
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
def put_lifecycle_request(rule: [])
|
1195
|
+
input = {
|
1196
|
+
config: config,
|
1197
|
+
properties: properties,
|
1198
|
+
api_name: 'PUT Bucket Lifecycle',
|
1199
|
+
request_method: 'PUT',
|
1200
|
+
request_uri: '/<bucket-name>?lifecycle',
|
1201
|
+
request_params: {
|
1202
|
+
},
|
1203
|
+
request_headers: {
|
1204
|
+
},
|
1205
|
+
request_elements: {
|
1206
|
+
'rule' => rule
|
1207
|
+
},
|
1208
|
+
request_body: nil,
|
1209
|
+
|
1210
|
+
status_code: [
|
1211
|
+
200
|
1212
|
+
]
|
1213
|
+
}
|
1214
|
+
|
1215
|
+
put_bucket_lifecycle_input_validate input
|
1216
|
+
Request.new input
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
private
|
1220
|
+
|
1221
|
+
def put_bucket_lifecycle_input_validate(input)
|
1222
|
+
input.deep_stringify_keys!
|
1223
|
+
|
1224
|
+
unless !input['request_elements']['rule'].nil? && !input['request_elements']['rule'].to_s.empty?
|
1225
|
+
raise ParameterRequiredError.new('rule', 'PutBucketLifecycleInput')
|
1226
|
+
end
|
1227
|
+
|
1228
|
+
input['request_elements']['rule'].each do |x|
|
1229
|
+
unless x['abort_incomplete_multipart_upload'].nil?
|
1230
|
+
|
1231
|
+
unless !x['abort_incomplete_multipart_upload']['days_after_initiation'].nil? && !x['abort_incomplete_multipart_upload']['days_after_initiation'].to_s.empty?
|
1232
|
+
raise ParameterRequiredError.new('days_after_initiation', 'abort_incomplete_multipart_upload')
|
1233
|
+
end
|
1234
|
+
|
1235
|
+
end
|
1236
|
+
|
1237
|
+
unless x['expiration'].nil?
|
1238
|
+
|
1239
|
+
end
|
1240
|
+
|
1241
|
+
unless x['filter'].nil?
|
1242
|
+
|
1243
|
+
unless !x['filter']['prefix'].nil? && !x['filter']['prefix'].to_s.empty?
|
1244
|
+
raise ParameterRequiredError.new('prefix', 'filter')
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
if x['filter'].nil?
|
1250
|
+
raise ParameterRequiredError.new('filter', 'rule')
|
1251
|
+
end
|
1252
|
+
|
1253
|
+
unless !x['id'].nil? && !x['id'].to_s.empty?
|
1254
|
+
raise ParameterRequiredError.new('id', 'rule')
|
1255
|
+
end
|
1256
|
+
|
1257
|
+
unless !x['status'].nil? && !x['status'].to_s.empty?
|
1258
|
+
raise ParameterRequiredError.new('status', 'rule')
|
1259
|
+
end
|
1260
|
+
|
1261
|
+
if x['status'] && !x['status'].to_s.empty?
|
1262
|
+
status_valid_values = %w[enabled disabled]
|
1263
|
+
unless status_valid_values.include? x['status'].to_s
|
1264
|
+
raise ParameterValueNotAllowedError.new(
|
1265
|
+
'status',
|
1266
|
+
x['status'],
|
1267
|
+
status_valid_values,
|
1268
|
+
)
|
1269
|
+
end
|
1270
|
+
end
|
1271
|
+
|
1272
|
+
next if x['transition'].nil?
|
1273
|
+
|
1274
|
+
unless !x['transition']['storage_class'].nil? && !x['transition']['storage_class'].to_s.empty?
|
1275
|
+
raise ParameterRequiredError.new('storage_class', 'transition')
|
1276
|
+
end
|
1277
|
+
end
|
1278
|
+
end
|
1279
|
+
|
1280
|
+
public
|
1281
|
+
|
1282
|
+
# put_bucket_logging: Set bucket logging of the bucket.
|
1283
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/logging/put_logging.html
|
1284
|
+
def put_logging(target_bucket: '',
|
1285
|
+
target_prefix: '')
|
1286
|
+
request = put_logging_request target_bucket: target_bucket,
|
1287
|
+
target_prefix: target_prefix
|
1288
|
+
request.send
|
1289
|
+
end
|
1290
|
+
|
1291
|
+
def put_logging_request(target_bucket: '',
|
1292
|
+
target_prefix: '')
|
1293
|
+
input = {
|
1294
|
+
config: config,
|
1295
|
+
properties: properties,
|
1296
|
+
api_name: 'PUT Bucket Logging',
|
1297
|
+
request_method: 'PUT',
|
1298
|
+
request_uri: '/<bucket-name>?logging',
|
1299
|
+
request_params: {
|
1300
|
+
},
|
1301
|
+
request_headers: {
|
1302
|
+
},
|
1303
|
+
request_elements: {
|
1304
|
+
'target_bucket' => target_bucket,
|
1305
|
+
'target_prefix' => target_prefix
|
1306
|
+
},
|
1307
|
+
request_body: nil,
|
1308
|
+
|
1309
|
+
status_code: [
|
1310
|
+
200
|
1311
|
+
]
|
1312
|
+
}
|
1313
|
+
|
1314
|
+
put_bucket_logging_input_validate input
|
1315
|
+
Request.new input
|
1316
|
+
end
|
1317
|
+
|
1318
|
+
private
|
1319
|
+
|
1320
|
+
def put_bucket_logging_input_validate(input)
|
1321
|
+
input.deep_stringify_keys!
|
1322
|
+
|
1323
|
+
unless !input['request_elements']['target_bucket'].nil? && !input['request_elements']['target_bucket'].to_s.empty?
|
1324
|
+
raise ParameterRequiredError.new('target_bucket', 'PutBucketLoggingInput')
|
1325
|
+
end
|
1326
|
+
|
1327
|
+
unless !input['request_elements']['target_prefix'].nil? && !input['request_elements']['target_prefix'].to_s.empty?
|
1328
|
+
raise ParameterRequiredError.new('target_prefix', 'PutBucketLoggingInput')
|
1329
|
+
end
|
1330
|
+
end
|
1331
|
+
|
1332
|
+
public
|
1333
|
+
|
1334
|
+
# put_bucket_notification: Set Notification information of the bucket.
|
1335
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/notification/put_notification.html
|
1336
|
+
def put_notification(notifications: [])
|
1337
|
+
request = put_notification_request notifications: notifications
|
1338
|
+
request.send
|
1339
|
+
end
|
1340
|
+
|
1341
|
+
def put_notification_request(notifications: [])
|
1342
|
+
input = {
|
1343
|
+
config: config,
|
1344
|
+
properties: properties,
|
1345
|
+
api_name: 'PUT Bucket Notification',
|
1346
|
+
request_method: 'PUT',
|
1347
|
+
request_uri: '/<bucket-name>?notification',
|
1348
|
+
request_params: {
|
1349
|
+
},
|
1350
|
+
request_headers: {
|
1351
|
+
},
|
1352
|
+
request_elements: {
|
1353
|
+
'notifications' => notifications
|
1354
|
+
},
|
1355
|
+
request_body: nil,
|
1356
|
+
|
1357
|
+
status_code: [
|
1358
|
+
200
|
1359
|
+
]
|
1360
|
+
}
|
1361
|
+
|
1362
|
+
put_bucket_notification_input_validate input
|
1363
|
+
Request.new input
|
1364
|
+
end
|
1365
|
+
|
1366
|
+
private
|
1367
|
+
|
1368
|
+
def put_bucket_notification_input_validate(input)
|
1369
|
+
input.deep_stringify_keys!
|
1370
|
+
|
1371
|
+
unless !input['request_elements']['notifications'].nil? && !input['request_elements']['notifications'].to_s.empty?
|
1372
|
+
raise ParameterRequiredError.new('notifications', 'PutBucketNotificationInput')
|
1373
|
+
end
|
1374
|
+
|
1375
|
+
input['request_elements']['notifications'].each do |x|
|
1376
|
+
unless !x['cloudfunc'].nil? && !x['cloudfunc'].to_s.empty?
|
1377
|
+
raise ParameterRequiredError.new('cloudfunc', 'notification')
|
1378
|
+
end
|
1379
|
+
|
1380
|
+
if x['cloudfunc'] && !x['cloudfunc'].to_s.empty?
|
1381
|
+
cloudfunc_valid_values = %w[tupu-porn notifier image]
|
1382
|
+
unless cloudfunc_valid_values.include? x['cloudfunc'].to_s
|
1383
|
+
raise ParameterValueNotAllowedError.new(
|
1384
|
+
'cloudfunc',
|
1385
|
+
x['cloudfunc'],
|
1386
|
+
cloudfunc_valid_values,
|
1387
|
+
)
|
1388
|
+
end
|
1389
|
+
end
|
1390
|
+
|
1391
|
+
unless x['cloudfunc_args'].nil?
|
1392
|
+
|
1393
|
+
unless !x['cloudfunc_args']['action'].nil? && !x['cloudfunc_args']['action'].to_s.empty?
|
1394
|
+
raise ParameterRequiredError.new('action', 'cloudfunc_args')
|
1395
|
+
end
|
1396
|
+
|
1397
|
+
end
|
1398
|
+
|
1399
|
+
unless !x['event_types'].nil? && !x['event_types'].to_s.empty?
|
1400
|
+
raise ParameterRequiredError.new('event_types', 'notification')
|
1401
|
+
end
|
1402
|
+
|
1403
|
+
unless !x['id'].nil? && !x['id'].to_s.empty?
|
1404
|
+
raise ParameterRequiredError.new('id', 'notification')
|
1405
|
+
end
|
1406
|
+
end
|
1407
|
+
end
|
1408
|
+
|
1409
|
+
public
|
1410
|
+
|
774
1411
|
# put_bucket_policy: Set policy information of the bucket.
|
775
1412
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/bucket/policy/put_policy.html
|
776
1413
|
def put_policy(statement: [])
|
@@ -790,12 +1427,13 @@ module QingStor
|
|
790
1427
|
request_headers: {
|
791
1428
|
},
|
792
1429
|
request_elements: {
|
793
|
-
'statement' => statement
|
1430
|
+
'statement' => statement
|
794
1431
|
},
|
795
1432
|
request_body: nil,
|
1433
|
+
|
796
1434
|
status_code: [
|
797
|
-
200
|
798
|
-
]
|
1435
|
+
200
|
1436
|
+
]
|
799
1437
|
}
|
800
1438
|
|
801
1439
|
put_bucket_policy_input_validate input
|
@@ -845,7 +1483,7 @@ module QingStor
|
|
845
1483
|
end
|
846
1484
|
|
847
1485
|
if x['effect'] && !x['effect'].to_s.empty?
|
848
|
-
effect_valid_values = %w
|
1486
|
+
effect_valid_values = %w[allow deny]
|
849
1487
|
unless effect_valid_values.include? x['effect'].to_s
|
850
1488
|
raise ParameterValueNotAllowedError.new(
|
851
1489
|
'effect',
|