Class: IIJ::Sakagura::Core::Middleware::RaiseError

Inherits:
Faraday::Response::Middleware
  • Object
show all
Defined in:
lib/iij/sakagura/core/middleware/iij_sakagura_raise_error.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ RaiseError

Returns a new instance of RaiseError.



10
11
12
# File 'lib/iij/sakagura/core/middleware/iij_sakagura_raise_error.rb', line 10

def initialize(app)
  super(app)
end

Instance Method Details

#on_complete(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/iij/sakagura/core/middleware/iij_sakagura_raise_error.rb', line 14

def on_complete(env)
  case env[:status]
  when 200...300
    nil
  when 400
    raise IIJ::Sakagura::Core::Error::BadRequest, response_values(env)
  when 401
    raise IIJ::Sakagura::Core::Error::Unauthorized, response_values(env)
  when 403
    raise IIJ::Sakagura::Core::Error::Forbidden, response_values(env)
  when 404
    raise IIJ::Sakagura::Core::Error::NotFound, response_values(env)
  when 400...500
    raise IIJ::Sakagura::Core::Error::ClientError, response_values(env)
  when 500
    raise IIJ::Sakagura::Core::Error::SystemError, response_values(env)
  when 502
    raise IIJ::Sakagura::Core::Error::BadGateway, response_values(env)
  when 503
    raise IIJ::Sakagura::Core::Error::ServiceUnavailable, response_values(env)
  when 500...600
    raise IIJ::Sakagura::Core::Error::ServerError, response_values(env)
  end

  parse_body(env)
end

#parse_body(env) ⇒ Object



45
46
47
48
49
# File 'lib/iij/sakagura/core/middleware/iij_sakagura_raise_error.rb', line 45

def parse_body(env)
  if env[:body].has_key? "ErrorResponse"
    raise IIJ::Sakagura::Core::Error::BackendError, response_values(env)
  end
end

#response_values(env) ⇒ Object



41
42
43
# File 'lib/iij/sakagura/core/middleware/iij_sakagura_raise_error.rb', line 41

def response_values(env)
  {:status => env[:status], :headers => env[:response_headers], :body => env[:body]}
end