Class: AnsibleTowerClient::Middleware::RaiseTowerError

Inherits:
Faraday::Response::Middleware
  • Object
show all
Includes:
Logging
Defined in:
lib/ansible_tower_client/middleware/raise_tower_error.rb

Constant Summary collapse

CLIENT_ERROR_STATUSES =
400...600

Instance Method Summary collapse

Instance Method Details

#on_complete(env) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ansible_tower_client/middleware/raise_tower_error.rb', line 7

def on_complete(env)
  return unless CLIENT_ERROR_STATUSES.include?(env[:status])
  logger.debug { "#{self.class.name} Raw Response:\n#{env.pretty_inspect}" }
  message   = JSON.parse(env.body).pretty_inspect rescue nil
  message ||= env.body
  logger.error("#{self.class.name} Response Body:\n#{message}")

  case env[:status]
  when 402
    raise AnsibleTowerClient::UnlicensedFeatureError
  when 404
    raise AnsibleTowerClient::ResourceNotFoundError, response_values(env)
  when 407
    # mimic the behavior that we get with proxy requests with HTTPS
    raise AnsibleTowerClient::ConnectionError, %(407 "Proxy Authentication Required ")
  else
    raise AnsibleTowerClient::ClientError, env.body
  end
end

#response_values(env) ⇒ Object



27
28
29
# File 'lib/ansible_tower_client/middleware/raise_tower_error.rb', line 27

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