aliyun-sdk 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -105,35 +105,11 @@ module Aliyun
105
105
  false
106
106
  end
107
107
 
108
- def inspect
109
- "@buffer: " + @buffer[0, 32].inspect + "...#{@buffer.size} bytes"
110
- end
111
- end
112
-
113
- # RestClient requires the payload to respones to :read(bytes)
114
- # and return a stream.
115
- # We are not doing the real read here, just return a
116
- # readable stream for RestClient playload.rb treats it as:
117
- # def read(bytes=nil)
118
- # @stream.read(bytes)
119
- # end
120
- # alias :to_s :read
121
- # net_http_do_request(http, req, payload ? payload.to_s : nil,
122
- # &@block_response)
123
- class StreamPayload
124
- def initialize(crc_enable = false, init_crc = 0, &block)
125
- @stream = StreamWriter.new(crc_enable, init_crc, &block)
126
- end
127
-
128
- def read(bytes = nil)
129
- @stream
130
- end
131
-
132
108
  def close
133
109
  end
134
110
 
135
- def closed?
136
- false
111
+ def inspect
112
+ "@buffer: " + @buffer[0, 32].inspect + "...#{@buffer.size} bytes"
137
113
  end
138
114
  end
139
115
 
@@ -281,44 +257,44 @@ module Aliyun
281
257
  headers[:params] = (sub_res || {}).merge(http_options[:query] || {})
282
258
 
283
259
  block_response = ->(r) { handle_response(r, &block) } if block
284
- r = RestClient::Request.execute(
260
+ request = RestClient::Request.new(
285
261
  :method => verb,
286
262
  :url => get_request_url(bucket, object),
287
263
  :headers => headers,
288
264
  :payload => http_options[:body],
289
265
  :block_response => block_response,
290
266
  :open_timeout => @config.open_timeout || OPEN_TIMEOUT,
291
- :timeout => @config.read_timeout || READ_TIMEOUT
292
- ) do |response, request, result, &blk|
293
-
294
- if response.code >= 300
295
- e = ServerError.new(response)
267
+ :read_timeout => @config.read_timeout || READ_TIMEOUT
268
+ )
269
+ response = request.execute do |resp, &blk|
270
+ if resp.code >= 300
271
+ e = ServerError.new(resp)
296
272
  logger.error(e.to_s)
297
273
  raise e
298
274
  else
299
- response.return!(request, result, &blk)
275
+ resp.return!(&blk)
300
276
  end
301
277
  end
302
278
 
303
279
  # If streaming read_body is used, we need to create the
304
280
  # RestClient::Response ourselves
305
- unless r.is_a?(RestClient::Response)
306
- if r.code.to_i >= 300
307
- r = RestClient::Response.create(
308
- RestClient::Request.decode(r['content-encoding'], r.body),
309
- r, nil, nil)
310
- e = ServerError.new(r)
281
+ unless response.is_a?(RestClient::Response)
282
+ if response.code.to_i >= 300
283
+ response = RestClient::Response.create(
284
+ RestClient::Request.decode(response['content-encoding'], response.body),
285
+ response, request)
286
+ e = ServerError.new(response)
311
287
  logger.error(e.to_s)
312
288
  raise e
313
289
  end
314
- r = RestClient::Response.create(nil, r, nil, nil)
315
- r.return!
290
+ response = RestClient::Response.create(nil, response, request)
291
+ response.return!
316
292
  end
317
293
 
318
- logger.debug("Received HTTP response, code: #{r.code}, headers: " \
319
- "#{r.headers}, body: #{r.body}")
294
+ logger.debug("Received HTTP response, code: #{response.code}, headers: " \
295
+ "#{response.headers}, body: #{response.body}")
320
296
 
321
- r
297
+ response
322
298
  end
323
299
 
324
300
  def get_user_agent
@@ -535,7 +535,7 @@ module Aliyun
535
535
  headers[CALLBACK_HEADER] = opts[:callback].serialize
536
536
  end
537
537
 
538
- payload = HTTP::StreamPayload.new(@config.upload_crc_enable, opts[:init_crc], &block)
538
+ payload = HTTP::StreamWriter.new(@config.upload_crc_enable, opts[:init_crc], &block)
539
539
  r = @http.put(
540
540
  {:bucket => bucket_name, :object => object_name},
541
541
  {:headers => headers, :body => payload})
@@ -547,7 +547,7 @@ module Aliyun
547
547
  end
548
548
 
549
549
  if @config.upload_crc_enable && !r.headers[:x_oss_hash_crc64ecma].nil?
550
- data_crc = payload.read.data_crc
550
+ data_crc = payload.data_crc
551
551
  Aliyun::OSS::Util.crc_check(data_crc, r.headers[:x_oss_hash_crc64ecma], 'put')
552
552
  end
553
553
 
@@ -593,16 +593,17 @@ module Aliyun
593
593
 
594
594
  headers.merge!(to_lower_case(opts[:headers])) if opts.key?(:headers)
595
595
 
596
- payload = HTTP::StreamPayload.new(@config.upload_crc_enable && !opts[:init_crc].nil?, opts[:init_crc], &block)
596
+ payload = HTTP::StreamWriter.new(
597
+ @config.upload_crc_enable && !opts[:init_crc].nil?, opts[:init_crc], &block)
597
598
 
598
599
  r = @http.post(
599
600
  {:bucket => bucket_name, :object => object_name, :sub_res => sub_res},
600
601
  {:headers => headers, :body => payload})
601
602
 
602
- if @config.upload_crc_enable &&
603
- !r.headers[:x_oss_hash_crc64ecma].nil? &&
603
+ if @config.upload_crc_enable &&
604
+ !r.headers[:x_oss_hash_crc64ecma].nil? &&
604
605
  !opts[:init_crc].nil?
605
- data_crc = payload.read.data_crc
606
+ data_crc = payload.data_crc
606
607
  Aliyun::OSS::Util.crc_check(data_crc, r.headers[:x_oss_hash_crc64ecma], 'append')
607
608
  end
608
609
 
@@ -780,7 +781,7 @@ module Aliyun
780
781
  {:bucket => bucket_name, :object => object_name,
781
782
  :sub_res => sub_res},
782
783
  {:headers => headers}
783
- ) do |chunk|
784
+ ) do |chunk|
784
785
  if block_given?
785
786
  # crc enable and no range and oss server support crc
786
787
  data_crc = Aliyun::OSS::Util.crc(chunk, data_crc) if @config.download_crc_enable && range.nil?
@@ -1110,13 +1111,13 @@ module Aliyun
1110
1111
 
1111
1112
  sub_res = {'partNumber' => part_no, 'uploadId' => txn_id}
1112
1113
 
1113
- payload = HTTP::StreamPayload.new(@config.upload_crc_enable, &block)
1114
+ payload = HTTP::StreamWriter.new(@config.upload_crc_enable, &block)
1114
1115
  r = @http.put(
1115
1116
  {:bucket => bucket_name, :object => object_name, :sub_res => sub_res},
1116
1117
  {:body => payload})
1117
1118
 
1118
1119
  if @config.upload_crc_enable && !r.headers[:x_oss_hash_crc64ecma].nil?
1119
- data_crc = payload.read.data_crc
1120
+ data_crc = payload.data_crc
1120
1121
  Aliyun::OSS::Util.crc_check(data_crc, r.headers[:x_oss_hash_crc64ecma], 'put')
1121
1122
  end
1122
1123
 
@@ -88,14 +88,14 @@ module Aliyun
88
88
  :method => 'POST',
89
89
  :url => @config.endpoint || ENDPOINT,
90
90
  :payload => query
91
- ) do |response, request, result, &blk|
91
+ ) do |response, &blk|
92
92
 
93
93
  if response.code >= 300
94
94
  e = ServerError.new(response)
95
95
  logger.error(e.to_s)
96
96
  raise e
97
97
  else
98
- response.return!(request, result, &blk)
98
+ response.return!(&blk)
99
99
  end
100
100
  end
101
101
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aliyun
4
4
 
5
- VERSION = "0.5.0"
5
+ VERSION = "0.6.0"
6
6
 
7
7
  end # Aliyun
@@ -356,7 +356,7 @@ module Aliyun
356
356
 
357
357
  context "acl, logging, website, referer, lifecycle" do
358
358
  it "should update acl" do
359
- query = {'acl' => ''}
359
+ query = {'acl' => nil}
360
360
  stub_request(:put, request_path).with(:query => query)
361
361
 
362
362
  @protocol.put_bucket_acl(@bucket, ACL::PUBLIC_READ)
@@ -366,7 +366,7 @@ module Aliyun
366
366
  end
367
367
 
368
368
  it "should get acl" do
369
- query = {'acl' => ''}
369
+ query = {'acl' => nil}
370
370
  return_acl = ACL::PUBLIC_READ
371
371
  stub_request(:get, request_path)
372
372
  .with(:query => query)
@@ -380,7 +380,7 @@ module Aliyun
380
380
  end
381
381
 
382
382
  it "should enable logging" do
383
- query = {'logging' => ''}
383
+ query = {'logging' => nil}
384
384
  stub_request(:put, request_path).with(:query => query)
385
385
 
386
386
  logging_opts = BucketLogging.new(
@@ -393,7 +393,7 @@ module Aliyun
393
393
  end
394
394
 
395
395
  it "should disable logging" do
396
- query = {'logging' => ''}
396
+ query = {'logging' => nil}
397
397
  stub_request(:put, request_path).with(:query => query)
398
398
 
399
399
  logging_opts = BucketLogging.new(:enable => false)
@@ -404,7 +404,7 @@ module Aliyun
404
404
  end
405
405
 
406
406
  it "should get logging" do
407
- query = {'logging' => ''}
407
+ query = {'logging' => nil}
408
408
  logging_opts = BucketLogging.new(
409
409
  :enable => true,
410
410
  :target_bucket => 'target-bucket', :target_prefix => 'foo')
@@ -421,7 +421,7 @@ module Aliyun
421
421
  end
422
422
 
423
423
  it "should delete logging" do
424
- query = {'logging' => ''}
424
+ query = {'logging' => nil}
425
425
  stub_request(:delete, request_path).with(:query => query)
426
426
 
427
427
  @protocol.delete_bucket_logging(@bucket)
@@ -431,7 +431,7 @@ module Aliyun
431
431
  end
432
432
 
433
433
  it "should update website" do
434
- query = {'website' => ''}
434
+ query = {'website' => nil}
435
435
  stub_request(:put, request_path).with(:query => query)
436
436
 
437
437
  website_opts = BucketWebsite.new(
@@ -443,7 +443,7 @@ module Aliyun
443
443
  end
444
444
 
445
445
  it "should get website" do
446
- query = {'website' => ''}
446
+ query = {'website' => nil}
447
447
  website_opts = BucketWebsite.new(
448
448
  :enable => true, :index => 'index.html', :error => 'error.html')
449
449
 
@@ -459,7 +459,7 @@ module Aliyun
459
459
  end
460
460
 
461
461
  it "should delete website" do
462
- query = {'website' => ''}
462
+ query = {'website' => nil}
463
463
  stub_request(:delete, request_path).with(:query => query)
464
464
 
465
465
  @protocol.delete_bucket_website(@bucket)
@@ -469,7 +469,7 @@ module Aliyun
469
469
  end
470
470
 
471
471
  it "should update referer" do
472
- query = {'referer' => ''}
472
+ query = {'referer' => nil}
473
473
  stub_request(:put, request_path).with(:query => query)
474
474
 
475
475
  referer_opts = BucketReferer.new(
@@ -481,7 +481,7 @@ module Aliyun
481
481
  end
482
482
 
483
483
  it "should get referer" do
484
- query = {'referer' => ''}
484
+ query = {'referer' => nil}
485
485
  referer_opts = BucketReferer.new(
486
486
  :allow_empty => true, :whitelist => ['xxx', 'yyy'])
487
487
 
@@ -497,7 +497,7 @@ module Aliyun
497
497
  end
498
498
 
499
499
  it "should update lifecycle" do
500
- query = {'lifecycle' => ''}
500
+ query = {'lifecycle' => nil}
501
501
  stub_request(:put, request_path).with(:query => query)
502
502
 
503
503
  rules = (1..5).map do |i|
@@ -513,7 +513,7 @@ module Aliyun
513
513
  end
514
514
 
515
515
  it "should get lifecycle" do
516
- query = {'lifecycle' => ''}
516
+ query = {'lifecycle' => nil}
517
517
  return_rules = (1..5).map do |i|
518
518
  LifeCycleRule.new(
519
519
  :id => i, :enable => i % 2 == 0, :prefix => "foo#{i}",
@@ -532,7 +532,7 @@ module Aliyun
532
532
  end
533
533
 
534
534
  it "should delete lifecycle" do
535
- query = {'lifecycle' => ''}
535
+ query = {'lifecycle' => nil}
536
536
  stub_request(:delete, request_path).with(:query => query)
537
537
 
538
538
  @protocol.delete_bucket_lifecycle(@bucket)
@@ -542,7 +542,7 @@ module Aliyun
542
542
  end
543
543
 
544
544
  it "should set cors" do
545
- query = {'cors' => ''}
545
+ query = {'cors' => nil}
546
546
  stub_request(:put, request_path).with(:query => query)
547
547
 
548
548
  rules = (1..5).map do |i|
@@ -559,7 +559,7 @@ module Aliyun
559
559
  end
560
560
 
561
561
  it "should get cors" do
562
- query = {'cors' => ''}
562
+ query = {'cors' => nil}
563
563
  return_rules = (1..5).map do |i|
564
564
  CORSRule.new(
565
565
  :allowed_origins => (1..3).map {|x| "origin-#{x}"},
@@ -580,7 +580,7 @@ module Aliyun
580
580
  end
581
581
 
582
582
  it "should delete cors" do
583
- query = {'cors' => ''}
583
+ query = {'cors' => nil}
584
584
 
585
585
  stub_request(:delete, request_path).with(:query => query)
586
586
 
@@ -120,7 +120,7 @@ module Aliyun
120
120
 
121
121
  context "bucket operations" do
122
122
  it "should get acl" do
123
- query = {'acl' => ''}
123
+ query = {'acl' => nil}
124
124
  return_acl = ACL::PUBLIC_READ
125
125
 
126
126
  stub_request(:get, bucket_url)
@@ -135,7 +135,7 @@ module Aliyun
135
135
  end
136
136
 
137
137
  it "should set acl" do
138
- query = {'acl' => ''}
138
+ query = {'acl' => nil}
139
139
 
140
140
  stub_request(:put, bucket_url).with(:query => query)
141
141
 
@@ -146,7 +146,7 @@ module Aliyun
146
146
  end
147
147
 
148
148
  it "should delete logging setting" do
149
- query = {'logging' => ''}
149
+ query = {'logging' => nil}
150
150
 
151
151
  stub_request(:delete, bucket_url).with(:query => query)
152
152
 
@@ -303,7 +303,7 @@ module Aliyun
303
303
 
304
304
  it "should set custom headers when append object" do
305
305
  key = 'ruby'
306
- query = {'append' => '', 'position' => 11}
306
+ query = {'append' => nil, 'position' => 11}
307
307
  stub_request(:post, object_url(key)).with(:query => query)
308
308
 
309
309
  @bucket.append_object(
@@ -362,7 +362,7 @@ module Aliyun
362
362
 
363
363
  it "should append object from file" do
364
364
  key = 'ruby'
365
- query = {'append' => '', 'position' => 11}
365
+ query = {'append' => nil, 'position' => 11}
366
366
  stub_request(:post, object_url(key)).with(:query => query)
367
367
 
368
368
  content = (1..10).map{ |i| i.to_s.rjust(9, '0') }.join("\n")
@@ -378,7 +378,7 @@ module Aliyun
378
378
 
379
379
  it "should append object with acl" do
380
380
  key = 'ruby'
381
- query = {'append' => '', 'position' => 11}
381
+ query = {'append' => nil, 'position' => 11}
382
382
  stub_request(:post, object_url(key)).with(:query => query)
383
383
 
384
384
  @bucket.append_object(key, 11, :acl => ACL::PUBLIC_READ_WRITE)
@@ -497,7 +497,7 @@ module Aliyun
497
497
  query_1 = {
498
498
  :prefix => 'list-',
499
499
  'encoding-type' => 'url',
500
- 'uploads' => ''
500
+ 'uploads' => nil
501
501
  }
502
502
  return_up_1 = (1..5).map{ |i| Multipart::Transaction.new(
503
503
  :id => "txn-#{i}",
@@ -513,7 +513,7 @@ module Aliyun
513
513
  :prefix => 'list-',
514
514
  'upload-id-marker' => 'txn-5',
515
515
  'encoding-type' => 'url',
516
- 'uploads' => ''
516
+ 'uploads' => nil
517
517
  }
518
518
  return_up_2 = (6..8).map{ |i| Multipart::Transaction.new(
519
519
  :id => "txn-#{i}",
@@ -247,7 +247,7 @@ module Aliyun
247
247
  end
248
248
 
249
249
  it "should test bucket existence" do
250
- query = {'acl' => ''}
250
+ query = {'acl' => nil}
251
251
  return_acl = ACL::PUBLIC_READ
252
252
  stub_request(:get, bucket_url)
253
253
  .with(:query => query)
@@ -26,8 +26,8 @@ module Aliyun
26
26
  def crc_protocol
27
27
  Protocol.new(
28
28
  Config.new(:endpoint => @endpoint,
29
- :access_key_id => 'xxx',
30
- :access_key_secret => 'yyy',
29
+ :access_key_id => 'xxx',
30
+ :access_key_secret => 'yyy',
31
31
  :upload_crc_enable => true,
32
32
  :download_crc_enable => true))
33
33
  end
@@ -111,7 +111,7 @@ module Aliyun
111
111
  context "Initiate multipart upload" do
112
112
 
113
113
  it "should POST to create transaction" do
114
- query = {'uploads' => ''}
114
+ query = {'uploads' => nil}
115
115
  stub_request(:post, request_path).with(:query => query)
116
116
 
117
117
  @protocol.initiate_multipart_upload(
@@ -129,7 +129,7 @@ module Aliyun
129
129
  end
130
130
 
131
131
  it "should return transaction id" do
132
- query = {'uploads' => ''}
132
+ query = {'uploads' => nil}
133
133
  return_txn_id = 'zyx'
134
134
  stub_request(:post, request_path).
135
135
  with(:query => query).
@@ -143,7 +143,7 @@ module Aliyun
143
143
  end
144
144
 
145
145
  it "should raise Exception on error" do
146
- query = {'uploads' => ''}
146
+ query = {'uploads' => nil}
147
147
 
148
148
  code = 'InvalidArgument'
149
149
  message = 'Invalid argument.'
@@ -462,7 +462,7 @@ module Aliyun
462
462
 
463
463
  it "should GET to list multiparts" do
464
464
  request_path = "#{@bucket}.#{@endpoint}/"
465
- query = {'uploads' => ''}
465
+ query = {'uploads' => nil}
466
466
 
467
467
  stub_request(:get, request_path).with(:query => query)
468
468
 
@@ -475,7 +475,7 @@ module Aliyun
475
475
  it "should send extra params when list multiparts" do
476
476
  request_path = "#{@bucket}.#{@endpoint}/"
477
477
  query = {
478
- 'uploads' => '',
478
+ 'uploads' => nil,
479
479
  'prefix' => 'foo-',
480
480
  'upload-id-marker' => 'id-marker',
481
481
  'key-marker' => 'key-marker',
@@ -501,7 +501,7 @@ module Aliyun
501
501
  it "should get multipart transactions" do
502
502
  request_path = "#{@bucket}.#{@endpoint}/"
503
503
  query = {
504
- 'uploads' => '',
504
+ 'uploads' => nil,
505
505
  'prefix' => 'foo-',
506
506
  'upload-id-marker' => 'id-marker',
507
507
  'key-marker' => 'key-marker',
@@ -548,7 +548,7 @@ module Aliyun
548
548
  it "should decode object key" do
549
549
  request_path = "#{@bucket}.#{@endpoint}/"
550
550
  query = {
551
- 'uploads' => '',
551
+ 'uploads' => nil,
552
552
  'prefix' => 'foo-',
553
553
  'upload-id-marker' => 'id-marker',
554
554
  'key-marker' => 'key-marker',
@@ -614,7 +614,7 @@ module Aliyun
614
614
 
615
615
  it "should raise Exception on error" do
616
616
  request_path = "#{@bucket}.#{@endpoint}/"
617
- query = {'uploads' => ''}
617
+ query = {'uploads' => nil}
618
618
 
619
619
  code = 'InvalidArgument'
620
620
  message = 'Invalid argument.'