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
@@ -37,16 +37,17 @@ module QingStor
|
|
37
37
|
request_method: 'DELETE',
|
38
38
|
request_uri: '/<bucket-name>/<object-key>',
|
39
39
|
request_params: {
|
40
|
-
'upload_id' => upload_id
|
40
|
+
'upload_id' => upload_id
|
41
41
|
},
|
42
42
|
request_headers: {
|
43
43
|
},
|
44
44
|
request_elements: {
|
45
45
|
},
|
46
46
|
request_body: nil,
|
47
|
+
|
47
48
|
status_code: [
|
48
|
-
204
|
49
|
-
]
|
49
|
+
204
|
50
|
+
]
|
50
51
|
}
|
51
52
|
|
52
53
|
abort_multipart_upload_input_validate input
|
@@ -65,6 +66,78 @@ module QingStor
|
|
65
66
|
|
66
67
|
public
|
67
68
|
|
69
|
+
# append_object: Append the Object.
|
70
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/api/object/append.html
|
71
|
+
def append_object(object_key, position: nil, content_length: nil,
|
72
|
+
content_md5: '',
|
73
|
+
content_type: '',
|
74
|
+
x_qs_storage_class: '',
|
75
|
+
body: nil)
|
76
|
+
request = append_object_request object_key, position: position, content_length: content_length,
|
77
|
+
content_md5: content_md5,
|
78
|
+
content_type: content_type,
|
79
|
+
x_qs_storage_class: x_qs_storage_class,
|
80
|
+
body: body
|
81
|
+
request.send
|
82
|
+
end
|
83
|
+
|
84
|
+
def append_object_request(object_key, position: nil, content_length: nil,
|
85
|
+
content_md5: '',
|
86
|
+
content_type: '',
|
87
|
+
x_qs_storage_class: '',
|
88
|
+
body: nil)
|
89
|
+
properties[:'object-key'] = object_key
|
90
|
+
input = {
|
91
|
+
config: config,
|
92
|
+
properties: properties,
|
93
|
+
api_name: 'Append Object',
|
94
|
+
request_method: 'POST',
|
95
|
+
request_uri: '/<bucket-name>/<object-key>?append',
|
96
|
+
request_params: {
|
97
|
+
'position' => position
|
98
|
+
},
|
99
|
+
request_headers: {
|
100
|
+
'Content-Length' => content_length,
|
101
|
+
'Content-MD5' => content_md5,
|
102
|
+
'Content-Type' => content_type,
|
103
|
+
'X-QS-Storage-Class' => x_qs_storage_class
|
104
|
+
},
|
105
|
+
request_elements: {
|
106
|
+
},
|
107
|
+
request_body: body,
|
108
|
+
|
109
|
+
status_code: [
|
110
|
+
200
|
111
|
+
]
|
112
|
+
}
|
113
|
+
|
114
|
+
append_object_input_validate input
|
115
|
+
Request.new input
|
116
|
+
end
|
117
|
+
|
118
|
+
private
|
119
|
+
|
120
|
+
def append_object_input_validate(input)
|
121
|
+
input.deep_stringify_keys!
|
122
|
+
|
123
|
+
unless !input['request_params']['position'].nil? && !input['request_params']['position'].to_s.empty?
|
124
|
+
raise ParameterRequiredError.new('position', 'AppendObjectInput')
|
125
|
+
end
|
126
|
+
|
127
|
+
if input['request_headers']['X-QS-Storage-Class'] && !input['request_headers']['X-QS-Storage-Class'].to_s.empty?
|
128
|
+
x_qs_storage_class_valid_values = %w[STANDARD STANDARD_IA]
|
129
|
+
unless x_qs_storage_class_valid_values.include? input['request_headers']['X-QS-Storage-Class'].to_s
|
130
|
+
raise ParameterValueNotAllowedError.new(
|
131
|
+
'X-QS-Storage-Class',
|
132
|
+
input['request_headers']['X-QS-Storage-Class'],
|
133
|
+
x_qs_storage_class_valid_values,
|
134
|
+
)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
public
|
140
|
+
|
68
141
|
# complete_multipart_upload: Complete multipart upload.
|
69
142
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/object/complete_multipart_upload.html
|
70
143
|
def complete_multipart_upload(object_key, upload_id: '', etag: '',
|
@@ -90,21 +163,22 @@ module QingStor
|
|
90
163
|
request_method: 'POST',
|
91
164
|
request_uri: '/<bucket-name>/<object-key>',
|
92
165
|
request_params: {
|
93
|
-
'upload_id' => upload_id
|
166
|
+
'upload_id' => upload_id
|
94
167
|
},
|
95
168
|
request_headers: {
|
96
169
|
'ETag' => etag,
|
97
170
|
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
98
171
|
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
99
|
-
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
172
|
+
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
100
173
|
},
|
101
174
|
request_elements: {
|
102
|
-
'object_parts' => object_parts
|
175
|
+
'object_parts' => object_parts
|
103
176
|
},
|
104
177
|
request_body: nil,
|
178
|
+
|
105
179
|
status_code: [
|
106
|
-
201
|
107
|
-
]
|
180
|
+
201
|
181
|
+
]
|
108
182
|
}
|
109
183
|
|
110
184
|
complete_multipart_upload_input_validate input
|
@@ -120,6 +194,10 @@ module QingStor
|
|
120
194
|
raise ParameterRequiredError.new('upload_id', 'CompleteMultipartUploadInput')
|
121
195
|
end
|
122
196
|
|
197
|
+
unless !input['request_elements']['object_parts'].nil? && !input['request_elements']['object_parts'].to_s.empty?
|
198
|
+
raise ParameterRequiredError.new('object_parts', 'CompleteMultipartUploadInput')
|
199
|
+
end
|
200
|
+
|
123
201
|
input['request_elements']['object_parts'].each do |x|
|
124
202
|
unless !x['part_number'].nil? && !x['part_number'].to_s.empty?
|
125
203
|
raise ParameterRequiredError.new('part_number', 'object_part')
|
@@ -151,9 +229,10 @@ module QingStor
|
|
151
229
|
request_elements: {
|
152
230
|
},
|
153
231
|
request_body: nil,
|
232
|
+
|
154
233
|
status_code: [
|
155
|
-
204
|
156
|
-
]
|
234
|
+
204
|
235
|
+
]
|
157
236
|
}
|
158
237
|
|
159
238
|
delete_object_input_validate input
|
@@ -225,7 +304,7 @@ module QingStor
|
|
225
304
|
'response-content-encoding' => response_content_encoding,
|
226
305
|
'response-content-language' => response_content_language,
|
227
306
|
'response-content-type' => response_content_type,
|
228
|
-
'response-expires' => response_expires
|
307
|
+
'response-expires' => response_expires
|
229
308
|
},
|
230
309
|
request_headers: {
|
231
310
|
'If-Match' => if_match,
|
@@ -235,17 +314,18 @@ module QingStor
|
|
235
314
|
'Range' => range,
|
236
315
|
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
237
316
|
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
238
|
-
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
317
|
+
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
239
318
|
},
|
240
319
|
request_elements: {
|
241
320
|
},
|
242
321
|
request_body: nil,
|
322
|
+
|
243
323
|
status_code: [
|
244
|
-
200,
|
245
|
-
206,
|
246
|
-
304,
|
247
|
-
412
|
248
|
-
]
|
324
|
+
200,
|
325
|
+
206,
|
326
|
+
304,
|
327
|
+
412
|
328
|
+
]
|
249
329
|
}
|
250
330
|
|
251
331
|
get_object_input_validate input
|
@@ -302,14 +382,15 @@ module QingStor
|
|
302
382
|
'If-Unmodified-Since' => if_unmodified_since,
|
303
383
|
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
304
384
|
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
305
|
-
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
385
|
+
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
306
386
|
},
|
307
387
|
request_elements: {
|
308
388
|
},
|
309
389
|
request_body: nil,
|
390
|
+
|
310
391
|
status_code: [
|
311
|
-
200
|
312
|
-
]
|
392
|
+
200
|
393
|
+
]
|
313
394
|
}
|
314
395
|
|
315
396
|
head_object_input_validate input
|
@@ -324,23 +405,100 @@ module QingStor
|
|
324
405
|
|
325
406
|
public
|
326
407
|
|
408
|
+
# image_process: Image process with the action on the object
|
409
|
+
# Documentation URL: https://docs.qingcloud.com/qingstor/data_process/image_process/index.html
|
410
|
+
def image_process(object_key, action: '',
|
411
|
+
response_cache_control: '',
|
412
|
+
response_content_disposition: '',
|
413
|
+
response_content_encoding: '',
|
414
|
+
response_content_language: '',
|
415
|
+
response_content_type: '',
|
416
|
+
response_expires: '', if_modified_since: '')
|
417
|
+
request = image_process_request object_key, action: action,
|
418
|
+
response_cache_control: response_cache_control,
|
419
|
+
response_content_disposition: response_content_disposition,
|
420
|
+
response_content_encoding: response_content_encoding,
|
421
|
+
response_content_language: response_content_language,
|
422
|
+
response_content_type: response_content_type,
|
423
|
+
response_expires: response_expires, if_modified_since: if_modified_since
|
424
|
+
request.send
|
425
|
+
end
|
426
|
+
|
427
|
+
def image_process_request(object_key, action: '',
|
428
|
+
response_cache_control: '',
|
429
|
+
response_content_disposition: '',
|
430
|
+
response_content_encoding: '',
|
431
|
+
response_content_language: '',
|
432
|
+
response_content_type: '',
|
433
|
+
response_expires: '', if_modified_since: '')
|
434
|
+
properties[:'object-key'] = object_key
|
435
|
+
input = {
|
436
|
+
config: config,
|
437
|
+
properties: properties,
|
438
|
+
api_name: 'Image Process',
|
439
|
+
request_method: 'GET',
|
440
|
+
request_uri: '/<bucket-name>/<object-key>?image',
|
441
|
+
request_params: {
|
442
|
+
'action' => action,
|
443
|
+
'response-cache-control' => response_cache_control,
|
444
|
+
'response-content-disposition' => response_content_disposition,
|
445
|
+
'response-content-encoding' => response_content_encoding,
|
446
|
+
'response-content-language' => response_content_language,
|
447
|
+
'response-content-type' => response_content_type,
|
448
|
+
'response-expires' => response_expires
|
449
|
+
},
|
450
|
+
request_headers: {
|
451
|
+
'If-Modified-Since' => if_modified_since
|
452
|
+
},
|
453
|
+
request_elements: {
|
454
|
+
},
|
455
|
+
request_body: nil,
|
456
|
+
|
457
|
+
status_code: [
|
458
|
+
200,
|
459
|
+
304
|
460
|
+
]
|
461
|
+
}
|
462
|
+
|
463
|
+
image_process_input_validate input
|
464
|
+
Request.new input
|
465
|
+
end
|
466
|
+
|
467
|
+
private
|
468
|
+
|
469
|
+
def image_process_input_validate(input)
|
470
|
+
input.deep_stringify_keys!
|
471
|
+
|
472
|
+
unless !input['request_params']['action'].nil? && !input['request_params']['action'].to_s.empty?
|
473
|
+
raise ParameterRequiredError.new('action', 'ImageProcessInput')
|
474
|
+
end
|
475
|
+
end
|
476
|
+
|
477
|
+
public
|
478
|
+
|
327
479
|
# initiate_multipart_upload: Initial multipart upload on the object.
|
328
480
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/object/initiate_multipart_upload.html
|
329
481
|
def initiate_multipart_upload(object_key, content_type: '',
|
330
482
|
x_qs_encryption_customer_algorithm: '',
|
331
483
|
x_qs_encryption_customer_key: '',
|
332
|
-
x_qs_encryption_customer_key_md5: ''
|
484
|
+
x_qs_encryption_customer_key_md5: '',
|
485
|
+
x_qs_meta_data: [],
|
486
|
+
x_qs_storage_class: '')
|
333
487
|
request = initiate_multipart_upload_request object_key, content_type: content_type,
|
334
488
|
x_qs_encryption_customer_algorithm: x_qs_encryption_customer_algorithm,
|
335
489
|
x_qs_encryption_customer_key: x_qs_encryption_customer_key,
|
336
|
-
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5
|
490
|
+
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5,
|
491
|
+
x_qs_meta_data: x_qs_meta_data,
|
492
|
+
x_qs_storage_class: x_qs_storage_class
|
337
493
|
request.send
|
338
494
|
end
|
339
495
|
|
340
496
|
def initiate_multipart_upload_request(object_key, content_type: '',
|
341
497
|
x_qs_encryption_customer_algorithm: '',
|
342
498
|
x_qs_encryption_customer_key: '',
|
343
|
-
x_qs_encryption_customer_key_md5: ''
|
499
|
+
x_qs_encryption_customer_key_md5: '',
|
500
|
+
x_qs_meta_data: [],
|
501
|
+
x_qs_storage_class: '')
|
344
502
|
properties[:'object-key'] = object_key
|
345
503
|
input = {
|
346
504
|
config: config,
|
@@ -355,13 +513,16 @@ module QingStor
|
|
355
513
|
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
356
514
|
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
357
515
|
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5,
|
516
|
+
'X-QS-MetaData' => x_qs_meta_data,
|
517
|
+
'X-QS-Storage-Class' => x_qs_storage_class
|
358
518
|
},
|
359
519
|
request_elements: {
|
360
520
|
},
|
361
521
|
request_body: nil,
|
522
|
+
|
362
523
|
status_code: [
|
363
|
-
200
|
364
|
-
]
|
524
|
+
200
|
525
|
+
]
|
365
526
|
}
|
366
527
|
|
367
528
|
initiate_multipart_upload_input_validate input
|
@@ -372,6 +533,17 @@ module QingStor
|
|
372
533
|
|
373
534
|
def initiate_multipart_upload_input_validate(input)
|
374
535
|
input.deep_stringify_keys!
|
536
|
+
|
537
|
+
if input['request_headers']['X-QS-Storage-Class'] && !input['request_headers']['X-QS-Storage-Class'].to_s.empty?
|
538
|
+
x_qs_storage_class_valid_values = %w[STANDARD STANDARD_IA]
|
539
|
+
unless x_qs_storage_class_valid_values.include? input['request_headers']['X-QS-Storage-Class'].to_s
|
540
|
+
raise ParameterValueNotAllowedError.new(
|
541
|
+
'X-QS-Storage-Class',
|
542
|
+
input['request_headers']['X-QS-Storage-Class'],
|
543
|
+
x_qs_storage_class_valid_values,
|
544
|
+
)
|
545
|
+
end
|
546
|
+
end
|
375
547
|
end
|
376
548
|
|
377
549
|
public
|
@@ -400,16 +572,17 @@ module QingStor
|
|
400
572
|
request_params: {
|
401
573
|
'limit' => limit,
|
402
574
|
'part_number_marker' => part_number_marker,
|
403
|
-
'upload_id' => upload_id
|
575
|
+
'upload_id' => upload_id
|
404
576
|
},
|
405
577
|
request_headers: {
|
406
578
|
},
|
407
579
|
request_elements: {
|
408
580
|
},
|
409
581
|
request_body: nil,
|
582
|
+
|
410
583
|
status_code: [
|
411
|
-
200
|
412
|
-
]
|
584
|
+
200
|
585
|
+
]
|
413
586
|
}
|
414
587
|
|
415
588
|
list_multipart_input_validate input
|
@@ -454,14 +627,17 @@ module QingStor
|
|
454
627
|
request_headers: {
|
455
628
|
'Access-Control-Request-Headers' => access_control_request_headers,
|
456
629
|
'Access-Control-Request-Method' => access_control_request_method,
|
457
|
-
'Origin' => origin
|
630
|
+
'Origin' => origin
|
458
631
|
},
|
459
632
|
request_elements: {
|
460
633
|
},
|
461
634
|
request_body: nil,
|
635
|
+
|
462
636
|
status_code: [
|
463
|
-
200,
|
464
|
-
|
637
|
+
200,
|
638
|
+
304,
|
639
|
+
412
|
640
|
+
]
|
465
641
|
}
|
466
642
|
|
467
643
|
options_object_input_validate input
|
@@ -486,7 +662,9 @@ module QingStor
|
|
486
662
|
|
487
663
|
# put_object: Upload the object.
|
488
664
|
# Documentation URL: https://docs.qingcloud.com/qingstor/api/object/put.html
|
489
|
-
def put_object(object_key,
|
665
|
+
def put_object(object_key, cache_control: '',
|
666
|
+
content_encoding: '',
|
667
|
+
content_length: nil,
|
490
668
|
content_md5: '',
|
491
669
|
content_type: '',
|
492
670
|
expect: '',
|
@@ -503,9 +681,13 @@ module QingStor
|
|
503
681
|
x_qs_encryption_customer_key_md5: '',
|
504
682
|
x_qs_fetch_if_unmodified_since: '',
|
505
683
|
x_qs_fetch_source: '',
|
684
|
+
x_qs_meta_data: [],
|
506
685
|
x_qs_move_source: '',
|
686
|
+
x_qs_storage_class: '',
|
507
687
|
body: nil)
|
508
|
-
request = put_object_request object_key,
|
688
|
+
request = put_object_request object_key, cache_control: cache_control,
|
689
|
+
content_encoding: content_encoding,
|
690
|
+
content_length: content_length,
|
509
691
|
content_md5: content_md5,
|
510
692
|
content_type: content_type,
|
511
693
|
expect: expect,
|
@@ -522,12 +704,16 @@ module QingStor
|
|
522
704
|
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5,
|
523
705
|
x_qs_fetch_if_unmodified_since: x_qs_fetch_if_unmodified_since,
|
524
706
|
x_qs_fetch_source: x_qs_fetch_source,
|
707
|
+
x_qs_meta_data: x_qs_meta_data,
|
525
708
|
x_qs_move_source: x_qs_move_source,
|
709
|
+
x_qs_storage_class: x_qs_storage_class,
|
526
710
|
body: body
|
527
711
|
request.send
|
528
712
|
end
|
529
713
|
|
530
|
-
def put_object_request(object_key,
|
714
|
+
def put_object_request(object_key, cache_control: '',
|
715
|
+
content_encoding: '',
|
716
|
+
content_length: nil,
|
531
717
|
content_md5: '',
|
532
718
|
content_type: '',
|
533
719
|
expect: '',
|
@@ -544,7 +730,9 @@ module QingStor
|
|
544
730
|
x_qs_encryption_customer_key_md5: '',
|
545
731
|
x_qs_fetch_if_unmodified_since: '',
|
546
732
|
x_qs_fetch_source: '',
|
733
|
+
x_qs_meta_data: [],
|
547
734
|
x_qs_move_source: '',
|
735
|
+
x_qs_storage_class: '',
|
548
736
|
body: nil)
|
549
737
|
properties[:'object-key'] = object_key
|
550
738
|
input = {
|
@@ -556,6 +744,8 @@ module QingStor
|
|
556
744
|
request_params: {
|
557
745
|
},
|
558
746
|
request_headers: {
|
747
|
+
'Cache-Control' => cache_control,
|
748
|
+
'Content-Encoding' => content_encoding,
|
559
749
|
'Content-Length' => content_length,
|
560
750
|
'Content-MD5' => content_md5,
|
561
751
|
'Content-Type' => content_type,
|
@@ -573,14 +763,17 @@ module QingStor
|
|
573
763
|
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5,
|
574
764
|
'X-QS-Fetch-If-Unmodified-Since' => x_qs_fetch_if_unmodified_since,
|
575
765
|
'X-QS-Fetch-Source' => x_qs_fetch_source,
|
766
|
+
'X-QS-MetaData' => x_qs_meta_data,
|
576
767
|
'X-QS-Move-Source' => x_qs_move_source,
|
768
|
+
'X-QS-Storage-Class' => x_qs_storage_class
|
577
769
|
},
|
578
770
|
request_elements: {
|
579
771
|
},
|
580
772
|
request_body: body,
|
773
|
+
|
581
774
|
status_code: [
|
582
|
-
201
|
583
|
-
]
|
775
|
+
201
|
776
|
+
]
|
584
777
|
}
|
585
778
|
|
586
779
|
put_object_input_validate input
|
@@ -591,6 +784,17 @@ module QingStor
|
|
591
784
|
|
592
785
|
def put_object_input_validate(input)
|
593
786
|
input.deep_stringify_keys!
|
787
|
+
|
788
|
+
if input['request_headers']['X-QS-Storage-Class'] && !input['request_headers']['X-QS-Storage-Class'].to_s.empty?
|
789
|
+
x_qs_storage_class_valid_values = %w[STANDARD STANDARD_IA]
|
790
|
+
unless x_qs_storage_class_valid_values.include? input['request_headers']['X-QS-Storage-Class'].to_s
|
791
|
+
raise ParameterValueNotAllowedError.new(
|
792
|
+
'X-QS-Storage-Class',
|
793
|
+
input['request_headers']['X-QS-Storage-Class'],
|
794
|
+
x_qs_storage_class_valid_values,
|
795
|
+
)
|
796
|
+
end
|
797
|
+
end
|
594
798
|
end
|
595
799
|
|
596
800
|
public
|
@@ -600,6 +804,15 @@ module QingStor
|
|
600
804
|
def upload_multipart(object_key, part_number: nil,
|
601
805
|
upload_id: '', content_length: nil,
|
602
806
|
content_md5: '',
|
807
|
+
x_qs_copy_range: '',
|
808
|
+
x_qs_copy_source: '',
|
809
|
+
x_qs_copy_source_encryption_customer_algorithm: '',
|
810
|
+
x_qs_copy_source_encryption_customer_key: '',
|
811
|
+
x_qs_copy_source_encryption_customer_key_md5: '',
|
812
|
+
x_qs_copy_source_if_match: '',
|
813
|
+
x_qs_copy_source_if_modified_since: '',
|
814
|
+
x_qs_copy_source_if_none_match: '',
|
815
|
+
x_qs_copy_source_if_unmodified_since: '',
|
603
816
|
x_qs_encryption_customer_algorithm: '',
|
604
817
|
x_qs_encryption_customer_key: '',
|
605
818
|
x_qs_encryption_customer_key_md5: '',
|
@@ -607,6 +820,15 @@ module QingStor
|
|
607
820
|
request = upload_multipart_request object_key, part_number: part_number,
|
608
821
|
upload_id: upload_id, content_length: content_length,
|
609
822
|
content_md5: content_md5,
|
823
|
+
x_qs_copy_range: x_qs_copy_range,
|
824
|
+
x_qs_copy_source: x_qs_copy_source,
|
825
|
+
x_qs_copy_source_encryption_customer_algorithm: x_qs_copy_source_encryption_customer_algorithm,
|
826
|
+
x_qs_copy_source_encryption_customer_key: x_qs_copy_source_encryption_customer_key,
|
827
|
+
x_qs_copy_source_encryption_customer_key_md5: x_qs_copy_source_encryption_customer_key_md5,
|
828
|
+
x_qs_copy_source_if_match: x_qs_copy_source_if_match,
|
829
|
+
x_qs_copy_source_if_modified_since: x_qs_copy_source_if_modified_since,
|
830
|
+
x_qs_copy_source_if_none_match: x_qs_copy_source_if_none_match,
|
831
|
+
x_qs_copy_source_if_unmodified_since: x_qs_copy_source_if_unmodified_since,
|
610
832
|
x_qs_encryption_customer_algorithm: x_qs_encryption_customer_algorithm,
|
611
833
|
x_qs_encryption_customer_key: x_qs_encryption_customer_key,
|
612
834
|
x_qs_encryption_customer_key_md5: x_qs_encryption_customer_key_md5,
|
@@ -617,6 +839,15 @@ module QingStor
|
|
617
839
|
def upload_multipart_request(object_key, part_number: nil,
|
618
840
|
upload_id: '', content_length: nil,
|
619
841
|
content_md5: '',
|
842
|
+
x_qs_copy_range: '',
|
843
|
+
x_qs_copy_source: '',
|
844
|
+
x_qs_copy_source_encryption_customer_algorithm: '',
|
845
|
+
x_qs_copy_source_encryption_customer_key: '',
|
846
|
+
x_qs_copy_source_encryption_customer_key_md5: '',
|
847
|
+
x_qs_copy_source_if_match: '',
|
848
|
+
x_qs_copy_source_if_modified_since: '',
|
849
|
+
x_qs_copy_source_if_none_match: '',
|
850
|
+
x_qs_copy_source_if_unmodified_since: '',
|
620
851
|
x_qs_encryption_customer_algorithm: '',
|
621
852
|
x_qs_encryption_customer_key: '',
|
622
853
|
x_qs_encryption_customer_key_md5: '',
|
@@ -630,21 +861,31 @@ module QingStor
|
|
630
861
|
request_uri: '/<bucket-name>/<object-key>',
|
631
862
|
request_params: {
|
632
863
|
'part_number' => part_number,
|
633
|
-
'upload_id' => upload_id
|
864
|
+
'upload_id' => upload_id
|
634
865
|
},
|
635
866
|
request_headers: {
|
636
|
-
'Content-Length'
|
637
|
-
'Content-MD5'
|
638
|
-
'X-QS-
|
639
|
-
'X-QS-
|
640
|
-
'X-QS-Encryption-Customer-
|
867
|
+
'Content-Length' => content_length,
|
868
|
+
'Content-MD5' => content_md5,
|
869
|
+
'X-QS-Copy-Range' => x_qs_copy_range,
|
870
|
+
'X-QS-Copy-Source' => x_qs_copy_source,
|
871
|
+
'X-QS-Copy-Source-Encryption-Customer-Algorithm' => x_qs_copy_source_encryption_customer_algorithm,
|
872
|
+
'X-QS-Copy-Source-Encryption-Customer-Key' => x_qs_copy_source_encryption_customer_key,
|
873
|
+
'X-QS-Copy-Source-Encryption-Customer-Key-MD5' => x_qs_copy_source_encryption_customer_key_md5,
|
874
|
+
'X-QS-Copy-Source-If-Match' => x_qs_copy_source_if_match,
|
875
|
+
'X-QS-Copy-Source-If-Modified-Since' => x_qs_copy_source_if_modified_since,
|
876
|
+
'X-QS-Copy-Source-If-None-Match' => x_qs_copy_source_if_none_match,
|
877
|
+
'X-QS-Copy-Source-If-Unmodified-Since' => x_qs_copy_source_if_unmodified_since,
|
878
|
+
'X-QS-Encryption-Customer-Algorithm' => x_qs_encryption_customer_algorithm,
|
879
|
+
'X-QS-Encryption-Customer-Key' => x_qs_encryption_customer_key,
|
880
|
+
'X-QS-Encryption-Customer-Key-MD5' => x_qs_encryption_customer_key_md5
|
641
881
|
},
|
642
882
|
request_elements: {
|
643
883
|
},
|
644
884
|
request_body: body,
|
885
|
+
|
645
886
|
status_code: [
|
646
|
-
201
|
647
|
-
]
|
887
|
+
201
|
888
|
+
]
|
648
889
|
}
|
649
890
|
|
650
891
|
upload_multipart_input_validate input
|