aws 2.1.4 → 2.1.5

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.
Files changed (2) hide show
  1. data/lib/awsbase/right_awsbase.rb +76 -59
  2. metadata +1 -1
@@ -29,7 +29,7 @@ module Aws
29
29
  require 'uri'
30
30
 
31
31
  class AwsUtils #:nodoc:
32
- @@digest1 = OpenSSL::Digest::Digest.new("sha1")
32
+ @@digest1 = OpenSSL::Digest::Digest.new("sha1")
33
33
  @@digest256 = nil
34
34
  if OpenSSL::OPENSSL_VERSION_NUMBER > 0x00908000
35
35
  @@digest256 = OpenSSL::Digest::Digest.new("sha256") rescue nil # Some installation may not support sha256
@@ -74,7 +74,7 @@ module Aws
74
74
  # select a signing method (make an old openssl working with sha1)
75
75
  # make 'HmacSHA256' to be a default one
76
76
  service_hash['SignatureMethod'] = 'HmacSHA256' unless ['HmacSHA256', 'HmacSHA1'].include?(service_hash['SignatureMethod'])
77
- service_hash['SignatureMethod'] = 'HmacSHA1' unless @@digest256
77
+ service_hash['SignatureMethod'] = 'HmacSHA1' unless @@digest256
78
78
  # select a digest
79
79
  digest = (service_hash['SignatureMethod'] == 'HmacSHA256' ? @@digest256 : @@digest1)
80
80
  # form string to sign
@@ -83,7 +83,7 @@ module Aws
83
83
  end.join('&')
84
84
  string_to_sign = "#{http_verb.to_s.upcase}\n#{host.downcase}\n#{uri}\n#{canonical_string}"
85
85
  # sign the string
86
- signature = escape_sig(Base64.encode64(OpenSSL::HMAC.digest(digest, aws_secret_access_key, string_to_sign)).strip)
86
+ signature = escape_sig(Base64.encode64(OpenSSL::HMAC.digest(digest, aws_secret_access_key, string_to_sign)).strip)
87
87
  "#{canonical_string}&Signature=#{signature}"
88
88
  end
89
89
 
@@ -191,9 +191,11 @@ module Aws
191
191
  DEFAULT_SIGNATURE_VERSION = '2'
192
192
 
193
193
  @@caching = false
194
+
194
195
  def self.caching
195
196
  @@caching
196
197
  end
198
+
197
199
  def self.caching=(caching)
198
200
  @@caching = caching
199
201
  end
@@ -222,21 +224,21 @@ module Aws
222
224
  def init(service_info, aws_access_key_id, aws_secret_access_key, params={}) #:nodoc:
223
225
  @params = params
224
226
  raise AwsError.new("AWS access keys are required to operate on #{service_info[:name]}") \
225
- if aws_access_key_id.blank? || aws_secret_access_key.blank?
226
- @aws_access_key_id = aws_access_key_id
227
+ if aws_access_key_id.blank? || aws_secret_access_key.blank?
228
+ @aws_access_key_id = aws_access_key_id
227
229
  @aws_secret_access_key = aws_secret_access_key
228
230
  # if the endpoint was explicitly defined - then use it
229
231
  if @params[:endpoint_url]
230
- @params[:server] = URI.parse(@params[:endpoint_url]).host
231
- @params[:port] = URI.parse(@params[:endpoint_url]).port
232
- @params[:service] = URI.parse(@params[:endpoint_url]).path
232
+ @params[:server] = URI.parse(@params[:endpoint_url]).host
233
+ @params[:port] = URI.parse(@params[:endpoint_url]).port
234
+ @params[:service] = URI.parse(@params[:endpoint_url]).path
233
235
  @params[:protocol] = URI.parse(@params[:endpoint_url]).scheme
234
- @params[:region] = nil
236
+ @params[:region] = nil
235
237
  else
236
- @params[:server] ||= service_info[:default_host]
237
- @params[:server] = "#{@params[:region]}.#{@params[:server]}" if @params[:region]
238
- @params[:port] ||= service_info[:default_port]
239
- @params[:service] ||= service_info[:default_service]
238
+ @params[:server] ||= service_info[:default_host]
239
+ @params[:server] = "#{@params[:region]}.#{@params[:server]}" if @params[:region]
240
+ @params[:port] ||= service_info[:default_port]
241
+ @params[:service] ||= service_info[:default_service]
240
242
  @params[:protocol] ||= service_info[:default_protocol]
241
243
  end
242
244
  if !@params[:multi_thread].nil? && @params[:connection_mode].nil? # user defined this
@@ -247,7 +249,7 @@ module Aws
247
249
  @params[:connection_mode] = :per_request if @params[:connection_mode] == :default
248
250
  @logger = @params[:logger]
249
251
  @logger = RAILS_DEFAULT_LOGGER if !@logger && defined?(RAILS_DEFAULT_LOGGER)
250
- @logger = Logger.new(STDOUT) if !@logger
252
+ @logger = Logger.new(STDOUT) if !@logger
251
253
  @logger.info "New #{self.class.name} using #{@params[:connection_mode].to_s}-connection mode"
252
254
  @error_handler = nil
253
255
  @cache = {}
@@ -288,9 +290,9 @@ module Aws
288
290
  unless @cache[function] && @cache[function][:response_md5] == response_md5
289
291
  # well, the response is new, reset cache data
290
292
  update_cache(function, {:response_md5 => response_md5,
291
- :timestamp => Time.now,
292
- :hits => 0,
293
- :parsed => nil})
293
+ :timestamp => Time.now,
294
+ :hits => 0,
295
+ :parsed => nil})
294
296
  else
295
297
  # aha, cache hits, update the data and throw an exception if needed
296
298
  @cache[function][:hits] += 1
@@ -321,8 +323,8 @@ module Aws
321
323
  end
322
324
 
323
325
  def request_info_impl(connection, benchblock, request, parser, &block) #:nodoc:
324
- @connection = connection
325
- @last_request = request[:request]
326
+ @connection = connection
327
+ @last_request = request[:request]
326
328
  @last_response = nil
327
329
  response=nil
328
330
  blockexception = nil
@@ -345,7 +347,7 @@ module Aws
345
347
  response.read_body(&block)
346
348
  else
347
349
  @error_handler = AWSErrorHandler.new(self, parser, :errors_list => self.class.amazon_problems) unless @error_handler
348
- check_result = @error_handler.check(request)
350
+ check_result = @error_handler.check(request)
349
351
  if check_result
350
352
  @error_handler = nil
351
353
  return check_result
@@ -378,7 +380,7 @@ module Aws
378
380
  return parser.result
379
381
  else
380
382
  @error_handler = AWSErrorHandler.new(self, parser, :errors_list => self.class.amazon_problems) unless @error_handler
381
- check_result = @error_handler.check(request)
383
+ check_result = @error_handler.check(request)
382
384
  if check_result
383
385
  @error_handler = nil
384
386
  return check_result
@@ -413,6 +415,12 @@ module Aws
413
415
  @last_response && @last_response.body.to_s[%r{<requestId>(.+?)</requestId>}] && $1
414
416
  end
415
417
 
418
+ def hash_params(prefix, list) #:nodoc:
419
+ groups = {}
420
+ list.each_index{|i| groups.update("#{prefix}.#{i+1}"=>list[i])} if list
421
+ return groups
422
+ end
423
+
416
424
  end
417
425
 
418
426
 
@@ -436,9 +444,9 @@ module Aws
436
444
  attr_reader :request_data
437
445
 
438
446
  def initialize(errors=nil, http_code=nil, request_id=nil, request_data=nil)
439
- @errors = errors
440
- @request_id = request_id
441
- @http_code = http_code
447
+ @errors = errors
448
+ @request_id = request_id
449
+ @http_code = http_code
442
450
  @request_data = request_data
443
451
  msg = @errors.is_a?(Array) ? @errors.map{|code, msg| "#{code}: #{msg}"}.join("; ") : @errors.to_s
444
452
  msg += "\nREQUEST(#{@request_data})" unless @request_data.nil?
@@ -469,14 +477,14 @@ module Aws
469
477
  puts error_text if options[:puts]
470
478
  # Log the error
471
479
  if options[:log]
472
- request = aws.last_request ? aws.last_request.path : '-none-'
480
+ request = aws.last_request ? aws.last_request.path : '-none-'
473
481
  response = aws.last_response ? "#{aws.last_response.code} -- #{aws.last_response.message} -- #{aws.last_response.body}" : '-none-'
474
482
  aws.logger.error error_text
475
483
  aws.logger.error "Request was: #{request}"
476
484
  aws.logger.error "Response was: #{response}"
477
485
  end
478
486
  end
479
- raise if options[:raise] # re-raise an exception
487
+ raise if options[:raise] # re-raise an exception
480
488
  return nil
481
489
  end
482
490
 
@@ -494,33 +502,41 @@ module Aws
494
502
  DEFAULT_CLOSE_ON_4XX_PROBABILITY = 10
495
503
 
496
504
  @@reiteration_start_delay = 0.2
505
+
497
506
  def self.reiteration_start_delay
498
507
  @@reiteration_start_delay
499
508
  end
509
+
500
510
  def self.reiteration_start_delay=(reiteration_start_delay)
501
511
  @@reiteration_start_delay = reiteration_start_delay
502
512
  end
503
513
 
504
514
  @@reiteration_time = 5
515
+
505
516
  def self.reiteration_time
506
517
  @@reiteration_time
507
518
  end
519
+
508
520
  def self.reiteration_time=(reiteration_time)
509
521
  @@reiteration_time = reiteration_time
510
522
  end
511
523
 
512
524
  @@close_on_error = true
525
+
513
526
  def self.close_on_error
514
527
  @@close_on_error
515
528
  end
529
+
516
530
  def self.close_on_error=(close_on_error)
517
531
  @@close_on_error = close_on_error
518
532
  end
519
533
 
520
534
  @@close_on_4xx_probability = DEFAULT_CLOSE_ON_4XX_PROBABILITY
535
+
521
536
  def self.close_on_4xx_probability
522
537
  @@close_on_4xx_probability
523
538
  end
539
+
524
540
  def self.close_on_4xx_probability=(close_on_4xx_probability)
525
541
  @@close_on_4xx_probability = close_on_4xx_probability
526
542
  end
@@ -531,26 +547,26 @@ module Aws
531
547
  # :close_on_error = true | false
532
548
  # :close_on_4xx_probability = 1-100
533
549
  def initialize(aws, parser, params={}) #:nodoc:
534
- @aws = aws # Link to RightEc2 | RightSqs | RightS3 instance
535
- @parser = parser # parser to parse Amazon response
536
- @started_at = Time.now
537
- @stop_at = @started_at + (params[:reiteration_time] || @@reiteration_time)
538
- @errors_list = params[:errors_list] || []
550
+ @aws = aws # Link to RightEc2 | RightSqs | RightS3 instance
551
+ @parser = parser # parser to parse Amazon response
552
+ @started_at = Time.now
553
+ @stop_at = @started_at + (params[:reiteration_time] || @@reiteration_time)
554
+ @errors_list = params[:errors_list] || []
539
555
  @reiteration_delay = @@reiteration_start_delay
540
- @retries = 0
556
+ @retries = 0
541
557
  # close current HTTP(S) connection on 5xx, errors from list and 4xx errors
542
- @close_on_error = params[:close_on_error].nil? ? @@close_on_error : params[:close_on_error]
558
+ @close_on_error = params[:close_on_error].nil? ? @@close_on_error : params[:close_on_error]
543
559
  @close_on_4xx_probability = params[:close_on_4xx_probability] || @@close_on_4xx_probability
544
560
  end
545
561
 
546
562
  # Returns false if
547
- def check(request) #:nodoc:
548
- result = false
549
- error_found = false
563
+ def check(request) #:nodoc:
564
+ result = false
565
+ error_found = false
550
566
  redirect_detected= false
551
- error_match = nil
567
+ error_match = nil
552
568
  last_errors_text = ''
553
- response = @aws.last_response
569
+ response = @aws.last_response
554
570
  # log error
555
571
  request_text_data = "#{request[:server]}:#{request[:port]}#{request[:request].path}"
556
572
  # is this a redirect?
@@ -563,13 +579,13 @@ module Aws
563
579
  @aws.logger.warn("##### #{@aws.class.name} request: #{request_text_data} ####")
564
580
  end
565
581
  # Check response body: if it is an Amazon XML document or not:
566
- if redirect_detected || (response.body && response.body[/<\?xml/]) # ... it is a xml document
582
+ if redirect_detected || (response.body && response.body[/<\?xml/]) # ... it is a xml document
567
583
  @aws.class.bench_xml.add! do
568
584
  error_parser = RightErrorResponseParser.new
569
585
  error_parser.parse(response)
570
- @aws.last_errors = error_parser.errors
586
+ @aws.last_errors = error_parser.errors
571
587
  @aws.last_request_id = error_parser.requestID
572
- last_errors_text = @aws.last_errors.flatten.join("\n")
588
+ last_errors_text = @aws.last_errors.flatten.join("\n")
573
589
  # on redirect :
574
590
  if redirect_detected
575
591
  location = response['location']
@@ -577,15 +593,15 @@ module Aws
577
593
  @aws.logger.info("##### #{@aws.class.name} redirect requested: #{response.code} #{response.message} #####")
578
594
  @aws.logger.info("##### New location: #{location} #####")
579
595
  # ... fix the connection data
580
- request[:server] = URI.parse(location).host
596
+ request[:server] = URI.parse(location).host
581
597
  request[:protocol] = URI.parse(location).scheme
582
- request[:port] = URI.parse(location).port
598
+ request[:port] = URI.parse(location).port
583
599
  end
584
600
  end
585
- else # ... it is not a xml document(probably just a html page?)
586
- @aws.last_errors = [[response.code, "#{response.message} (#{request_text_data})"]]
601
+ else # ... it is not a xml document(probably just a html page?)
602
+ @aws.last_errors = [[response.code, "#{response.message} (#{request_text_data})"]]
587
603
  @aws.last_request_id = '-undefined-'
588
- last_errors_text = response.message
604
+ last_errors_text = response.message
589
605
  end
590
606
  # now - check the error
591
607
  unless redirect_detected
@@ -690,7 +706,7 @@ module Aws
690
706
  end
691
707
  end
692
708
 
693
- class AwsParser #:nodoc:
709
+ class AwsParser #:nodoc:
694
710
  # default parsing library
695
711
  DEFAULT_XML_LIBRARY = 'rexml'
696
712
  # a list of supported parsers
@@ -700,20 +716,21 @@ module Aws
700
716
  def self.xml_lib
701
717
  @@xml_lib
702
718
  end
719
+
703
720
  def self.xml_lib=(new_lib_name)
704
721
  @@xml_lib = new_lib_name
705
722
  end
706
723
 
707
724
  attr_accessor :result
708
- attr_reader :xmlpath
725
+ attr_reader :xmlpath
709
726
  attr_accessor :xml_lib
710
727
 
711
728
  def initialize(params={})
712
729
  @xmlpath = ''
713
- @result = false
714
- @text = ''
730
+ @result = false
731
+ @text = ''
715
732
  @xml_lib = params[:xml_lib] || @@xml_lib
716
- @logger = params[:logger]
733
+ @logger = params[:logger]
717
734
  reset
718
735
  end
719
736
 
@@ -769,15 +786,15 @@ module Aws
769
786
  # Parse the xml text
770
787
  case @xml_lib
771
788
  when 'libxml'
772
- xml = XML::SaxParser.new
789
+ xml = XML::SaxParser.new
773
790
  xml.string = xml_text
774
791
  # check libxml-ruby version
775
792
  if XML::Parser::VERSION >= '0.5.1.0'
776
793
  xml.callbacks = RightSaxParserCallback.new(self)
777
794
  else
778
795
  xml.on_start_element{|name, attr_hash| self.tag_start(name, attr_hash)}
779
- xml.on_characters{ |text| self.text(text)}
780
- xml.on_end_element{ |name| self.tag_end(name)}
796
+ xml.on_characters{ |text| self.text(text)}
797
+ xml.on_end_element{ |name| self.tag_end(name)}
781
798
  end
782
799
  xml.parse
783
800
  else
@@ -829,7 +846,7 @@ module Aws
829
846
  #</Error>
830
847
 
831
848
  class RightErrorResponseParser < AwsParser #:nodoc:
832
- attr_accessor :errors # array of hashes: error/message
849
+ attr_accessor :errors # array of hashes: error/message
833
850
  attr_accessor :requestID
834
851
  # attr_accessor :endpoint, :host_id, :bucket
835
852
  def tagend(name)
@@ -837,14 +854,14 @@ module Aws
837
854
  when 'RequestID';
838
855
  @requestID = @text
839
856
  when 'Code';
840
- @code = @text
857
+ @code = @text
841
858
  when 'Message';
842
- @message = @text
859
+ @message = @text
843
860
  # when 'Endpoint' ; @endpoint = @text
844
861
  # when 'HostId' ; @host_id = @text
845
862
  # when 'Bucket' ; @bucket = @text
846
863
  when 'Error';
847
- @errors << [ @code, @message ]
864
+ @errors << [ @code, @message ]
848
865
  end
849
866
  end
850
867
 
@@ -855,7 +872,7 @@ module Aws
855
872
 
856
873
  # Dummy parser - does nothing
857
874
  # Returns the original params back
858
- class RightDummyParser # :nodoc:
875
+ class RightDummyParser # :nodoc:
859
876
  attr_accessor :result
860
877
 
861
878
  def parse(response, params={})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Reeder