Class: DockerSwarm::Middleware::ErrorHandler

Inherits:
Excon::Middleware::Base
  • Object
show all
Defined in:
lib/docker_swarm/middleware/error_handler.rb

Instance Method Summary collapse

Instance Method Details

#response_call(env) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/docker_swarm/middleware/error_handler.rb', line 6

def response_call(env)
  return @stack.response_call(env) unless env[:response]

  status = env[:response][:status]
  body = env[:response][:body]

  return @stack.response_call(env) if (200..299).include?(status)

  error_msg = error_message(body)
  log_business_error(env, status, error_msg)

  case status
  when 400 then raise ::DockerSwarm::BadRequest, error_msg
  when 401 then raise ::DockerSwarm::Unauthorized, error_msg
  when 403 then raise ::DockerSwarm::Forbidden, error_msg
  when 404 then raise ::DockerSwarm::NotFound, error_msg
  when 406 then raise ::DockerSwarm::NotAcceptable, error_msg
  when 408 then raise ::DockerSwarm::RequestTimeout, error_msg
  when 409 then raise ::DockerSwarm::Conflict, error_msg
  when 422 then raise ::DockerSwarm::UnprocessableEntity, body
  when 429 then raise ::DockerSwarm::TooManyRequests, error_msg
  when 500 then raise ::DockerSwarm::InternalServerError, error_msg
  when 502 then raise ::DockerSwarm::BadGateway, error_msg
  when 503 then raise ::DockerSwarm::ServiceUnavailable, error_msg
  when 504 then raise ::DockerSwarm::GatewayTimeout, error_msg
  else
    raise ::DockerSwarm::Error, "HTTP #{status}: #{error_msg}"
  end
end