class Google::Cloud::Error

Base google-cloud exception class.
#

def self.from_error error

Other tags:
    Private: - Create a new error object from a client error
def self.from_error error
  klass = if error.respond_to? :code
            grpc_error_class_for error.code
          elsif error.respond_to? :status_code
            gapi_error_class_for error.status_code
          else
            self
          end
  klass.new error.message
end

def self.gapi_error_class_for http_status_code

Other tags:
    Private: - Identify the subclass for a Google API Client error
def self.gapi_error_class_for http_status_code
  # The http status codes mapped to their error classes.
  {
    400 => InvalidArgumentError, # FailedPreconditionError/OutOfRangeError
    401 => UnauthenticatedError,
    403 => PermissionDeniedError,
    404 => NotFoundError,
    409 => AlreadyExistsError, # AbortedError
    412 => FailedPreconditionError,
    429 => ResourceExhaustedError,
    499 => CanceledError,
    500 => InternalError, # UnknownError/DataLossError
    501 => UnimplementedError,
    503 => UnavailableError,
    504 => DeadlineExceededError
  }[http_status_code] || self
end

def self.grpc_error_class_for grpc_error_code

Other tags:
    Private: - Identify the subclass for a gRPC error
def self.grpc_error_class_for grpc_error_code
  # The gRPC status code 0 is for a successful response.
  # So there is no error subclass for a 0 status code, use current class.
  [
    self, CanceledError, UnknownError, InvalidArgumentError,
    DeadlineExceededError, NotFoundError, AlreadyExistsError,
    PermissionDeniedError, ResourceExhaustedError,
    FailedPreconditionError, AbortedError, OutOfRangeError,
    UnimplementedError, InternalError, UnavailableError, DataLossError,
    UnauthenticatedError
  ][grpc_error_code] || self
end

def body

Returns:
  • (Object, nil) -
def body
  return nil unless cause.respond_to? :body
  cause.body
end

def code

Returns:
  • (Object, nil) -
def code
  return nil unless cause.respond_to? :code
  cause.code
end

def details

Returns:
  • (Object, nil) -
def details
  return nil unless cause.respond_to? :details
  cause.details
end

def domain

Returns:
  • (Object, nil) -
def domain
  return nil unless error_info.respond_to? :domain
  error_info.domain
end

def error_info

Returns:
  • (::Google::Rpc::ErrorInfo, nil) -
def error_info
  @error_info ||= begin
    check_property = lambda do |prop|
      if prop.is_a? Array
        error_infos = prop.find_all { |status| status.is_a? ::Google::Rpc::ErrorInfo }
        if error_infos.length == 1
          error_infos[0]
        end
      end
    end
    check_property.call(status_details) || check_property.call(details)
  end
end

def error_metadata

Returns:
  • (Hash, nil) -
def error_metadata
  return nil unless error_info.respond_to? :metadata
  error_info.metadata.to_h
end

def header

Returns:
  • (Object, nil) -
def header
  return nil unless cause.respond_to? :header
  cause.header
end

def initialize msg = nil

Parameters:
  • msg (String, nil) -- an error message
def initialize msg = nil
  super
end

def metadata

Returns:
  • (Object, nil) -
def metadata
  return nil unless cause.respond_to? :metadata
  cause.metadata
end

def reason

Returns:
  • (Object, nil) -
def reason
  return nil unless error_info.respond_to? :reason
  error_info.reason
end

def status_code

Returns:
  • (Object, nil) -
def status_code
  return nil unless cause.respond_to? :status_code
  cause.status_code
end

def status_details

Returns:
  • (Object, nil) -
def status_details
  return nil unless cause.respond_to? :status_details
  cause.status_details
end