class Yao::ServerError

Attributes

env[R]
status[R]

Public Class Methods

detect(env) click to toggle source
# File lib/yao/error.rb, line 14
def self.detect(env)
  case env.status
  when 400
    if env.body && env.body["computeFault"]
      ComputeFault.new(extract_message(env.body), env)
    elsif env.body && env.body.to_a.join.include?('NetworkNotFound')
      NetworkNotFound.new(extract_message(env.body), env)
    else
      BadRequest.new(extract_message(env.body), env)
    end
  when 401
    Unauthorized.new(extract_message(env.body), env)
  when 404
    if env.body && env.body["itemNotFound"]
      ItemNotFound.new(extract_message(env.body), env)
    else
      NotFound.new("The resource could not be found.", env)
    end
  when 405
    BadMethod.new(extract_message(env.body), env)
  when 409
    if env.body && env.body["buildInProgress"]
      BuildInProgress.new(extract_message(env.body), env)
    else
      Conflict.new(extract_message(env.body), env)
    end
  when 413
    OverLimit.new(extract_message(env.body), env)
  when 415
    BadMediaType.new(extract_message(env.body), env)
  when 422
    UnprocessableEntity.new(extract_message(env.body), env)
  when 500
    ComputeFault.new(extract_message(env.body), env)
  when 503
    if env.body && env.body[" serverCapacityUnavailable"]
      ServerCapacityUnavailable.new(extract_message(env.body), env)
    else
      ServiceUnavailable.new(extract_message(env.body), env)
    end
  else
    new(extract_message(env.body), env)
  end
rescue => e
  new("Detection failed - %s" % e.message, env)
end
extract_message(body) click to toggle source
# File lib/yao/error.rb, line 61
def self.extract_message(body)
  body.values.first["message"] or raise
rescue
  "Something is wrong. - %s" % body.inspect
end
new(message, requested_env) click to toggle source
Calls superclass method
# File lib/yao/error.rb, line 7
def initialize(message, requested_env)
  @status = requested_env.status
  @env = requested_env
  super(message)
end