Class: Aliyun::ESS::Error

Inherits:
Object
  • Object
show all
Defined in:
lib/aliyun/ess/error.rb,
lib/aliyun/ess/response.rb

Overview

Requests whose response code is between 300 and 599 and contain an <Error></Error> in their body are wrapped in an Error::Response. This Error::Response contains an Error object which raises an exception that corresponds to the error in the response body. The exception object contains the ErrorResponse, so in all cases where a request happens, you can rescue ResponseError and have access to the ErrorResponse and its Error object which contains information about the ResponseError.

begin
  Bucket.create(..)
rescue ResponseError => exception
 exception.response
 # => <Error::Response>
 exception.response.error
 # => <Error>
end

Defined Under Namespace

Classes: Response

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(error, response = nil) ⇒ Error

Returns a new instance of Error.



33
34
35
36
37
38
# File 'lib/aliyun/ess/error.rb', line 33

def initialize(error, response = nil)
  @error     = error
  @response  = response
  @container = Aliyun::ESS
  find_or_create_exception!
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object (private)



73
74
75
76
77
78
79
80
# File 'lib/aliyun/ess/error.rb', line 73

def method_missing(method, *args, &block)
  # We actually want nil if the attribute is nil. So we use has_key? rather than [] + ||.
  if error.has_key?(method.to_s)
    error[method.to_s]
  else
    super
  end
end

Instance Attribute Details

#containerObject (readonly)

Returns the value of attribute container.



31
32
33
# File 'lib/aliyun/ess/error.rb', line 31

def container
  @container
end

#errorObject (readonly)

Returns the value of attribute error.



31
32
33
# File 'lib/aliyun/ess/error.rb', line 31

def error
  @error
end

#exceptionObject (readonly)

Returns the value of attribute exception.



31
32
33
# File 'lib/aliyun/ess/error.rb', line 31

def exception
  @exception
end

#responseObject

:stopdoc:



30
31
32
# File 'lib/aliyun/ess/error.rb', line 30

def response
  @response
end

Instance Method Details

#codeObject



44
45
46
# File 'lib/aliyun/ess/error.rb', line 44

def code
  @code ||= error['code'].sub('.', '::')
end

#raiseObject



40
41
42
# File 'lib/aliyun/ess/error.rb', line 40

def raise
  Kernel.raise exception.new(message, response)
end