Class: HookSniff::ResponseMetadata

Inherits:
Object
  • Object
show all
Defined in:
lib/hooksniff/response_metadata.rb

Overview

Response metadata from the last API request.

Access via client.last_response after any API call.

Examples:

endpoints = client.endpoint.list
puts client.last_response.request_id
puts client.last_response.rate_limit_remaining

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status_code:, request_id: nil, rate_limit_remaining: nil, rate_limit_reset: nil, headers: {}) ⇒ ResponseMetadata

Returns a new instance of ResponseMetadata.



28
29
30
31
32
33
34
# File 'lib/hooksniff/response_metadata.rb', line 28

def initialize(status_code:, request_id: nil, rate_limit_remaining: nil, rate_limit_reset: nil, headers: {})
  @status_code = status_code
  @request_id = request_id
  @rate_limit_remaining = rate_limit_remaining
  @rate_limit_reset = rate_limit_reset
  @headers = headers
end

Instance Attribute Details

#headersHash (readonly)

Returns All response headers.

Returns:

  • (Hash)

    All response headers



26
27
28
# File 'lib/hooksniff/response_metadata.rb', line 26

def headers
  @headers
end

#rate_limit_remainingInteger? (readonly)

Returns x-ratelimit-remaining header.

Returns:

  • (Integer, nil)

    x-ratelimit-remaining header



20
21
22
# File 'lib/hooksniff/response_metadata.rb', line 20

def rate_limit_remaining
  @rate_limit_remaining
end

#rate_limit_resetInteger? (readonly)

Returns x-ratelimit-reset header (Unix timestamp).

Returns:

  • (Integer, nil)

    x-ratelimit-reset header (Unix timestamp)



23
24
25
# File 'lib/hooksniff/response_metadata.rb', line 23

def rate_limit_reset
  @rate_limit_reset
end

#request_idString? (readonly)

Returns x-request-id header.

Returns:

  • (String, nil)

    x-request-id header



17
18
19
# File 'lib/hooksniff/response_metadata.rb', line 17

def request_id
  @request_id
end

#status_codeInteger (readonly)

Returns HTTP status code.

Returns:

  • (Integer)

    HTTP status code



14
15
16
# File 'lib/hooksniff/response_metadata.rb', line 14

def status_code
  @status_code
end

Class Method Details

.from_http_response(response) ⇒ Object

Create from a Net::HTTP response.



37
38
39
40
41
42
43
44
45
46
# File 'lib/hooksniff/response_metadata.rb', line 37

def self.from_http_response(response)
  headers = response.to_hash.transform_values { |v| v.is_a?(Array) ? v.first : v }
  new(
    status_code: response.code.to_i,
    request_id: headers["x-request-id"],
    rate_limit_remaining: headers["x-ratelimit-remaining"]&.to_i,
    rate_limit_reset: headers["x-ratelimit-reset"]&.to_i,
    headers: headers
  )
end