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