Exception: Footrest::HttpError::ErrorBase

Inherits:
StandardError
  • Object
show all
Defined in:
lib/footrest/http_error.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response = nil) ⇒ ErrorBase

Returns a new instance of ErrorBase.


10
11
12
13
14
15
16
17
# File 'lib/footrest/http_error.rb', line 10

def initialize(response=nil)
  @response = response
  @status = @response[:status]
  @body = @response[:body]
  @method = @response[:method]

  super("HTTP ERROR: #{status} (#{status_message}) #{method} #{url}\n#{errors}\n#{headers}")
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body


8
9
10
# File 'lib/footrest/http_error.rb', line 8

def body
  @body
end

#methodObject (readonly)

Returns the value of attribute method


8
9
10
# File 'lib/footrest/http_error.rb', line 8

def method
  @method
end

#responseObject (readonly)

Returns the value of attribute response


8
9
10
# File 'lib/footrest/http_error.rb', line 8

def response
  @response
end

#statusObject (readonly)

Returns the value of attribute status


8
9
10
# File 'lib/footrest/http_error.rb', line 8

def status
  @status
end

Instance Method Details

#errorsObject


36
37
38
39
40
# File 'lib/footrest/http_error.rb', line 36

def errors
  JSON::pretty_generate(JSON::parse(@body)["errors"])
rescue
  @body
end

#headersObject


27
28
29
30
31
32
33
34
# File 'lib/footrest/http_error.rb', line 27

def headers
  JSON::pretty_generate(
    request: sanitized_request_headers,
    response: @response.response_headers
  )
rescue => e
  "[Unable to show headers: #{e}]"
end

#request_headersObject


51
52
53
# File 'lib/footrest/http_error.rb', line 51

def request_headers
  @response.request_headers
end

#sanitized_request_headersObject


46
47
48
49
# File 'lib/footrest/http_error.rb', line 46

def sanitized_request_headers
  return request_headers unless request_headers['Authorization']
  request_headers.merge('Authorization' => truncated_authorization_value)
end

#status_messageObject


42
43
44
# File 'lib/footrest/http_error.rb', line 42

def status_message
  HTTP_STATUS_CODES.fetch(status, 'UNKNOWN STATUS')
end

#truncated_authorization_valueObject


55
56
57
58
59
60
# File 'lib/footrest/http_error.rb', line 55

def truncated_authorization_value
  bearer, token = request_headers['Authorization'].split(/\s+/)
  token_parts = token.split('~')
  token_parts[-1] = token_parts.last[0, 4]
  "Bearer #{token_parts.join('~')}..."
end

#urlObject


23
24
25
# File 'lib/footrest/http_error.rb', line 23

def url
  @response.url.to_s
end