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

Methods included from Logging

#log_from_response

Instance Method Details

#on_complete(env) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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}" }
  logger.error("#{self.class.name} Response Body:\n#{log_from_response(env)}")

  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



25
26
27
28
29
30
31
32
# File 'lib/ansible_tower_client/middleware/raise_tower_error.rb', line 25

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