Class: CoreLibrary::HttpResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/apimatic-core/http/response/http_response.rb

Overview

Http response received.

Constant Summary collapse

BODY_PARAM_POINTER =
'$response.body'.freeze
HEADER_PARAM_POINTER =
'$response.headers'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status_code, reason_phrase, headers, raw_body, request) ⇒ HttpResponse

The constructor

Parameters:

  • status_code (Integer)

    The status code returned by the server.

  • reason_phrase (String)

    The reason phrase returned by the server.

  • headers (Hash)

    The headers sent by the server in the response.

  • raw_body (String)

    The raw body of the response.

  • request (HttpRequest)

    The request that resulted in this response.



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/apimatic-core/http/response/http_response.rb', line 15

def initialize(status_code,
               reason_phrase,
               headers,
               raw_body,
               request)
  @status_code = status_code
  @reason_phrase = reason_phrase
  @headers = headers
  @raw_body = raw_body
  @request = request
end

Instance Attribute Details

#headersObject (readonly)

Returns the value of attribute headers.



7
8
9
# File 'lib/apimatic-core/http/response/http_response.rb', line 7

def headers
  @headers
end

#raw_bodyObject (readonly)

Returns the value of attribute raw_body.



7
8
9
# File 'lib/apimatic-core/http/response/http_response.rb', line 7

def raw_body
  @raw_body
end

#reason_phraseObject (readonly)

Returns the value of attribute reason_phrase.



7
8
9
# File 'lib/apimatic-core/http/response/http_response.rb', line 7

def reason_phrase
  @reason_phrase
end

#requestObject (readonly)

Returns the value of attribute request.



7
8
9
# File 'lib/apimatic-core/http/response/http_response.rb', line 7

def request
  @request
end

#status_codeObject (readonly)

Returns the value of attribute status_code.



7
8
9
# File 'lib/apimatic-core/http/response/http_response.rb', line 7

def status_code
  @status_code
end

Instance Method Details

#get_value_by_json_pointer(json_pointer) ⇒ Object?

Resolves a JSON pointer against either the response body or response headers.

This method is useful when extracting a specific value from an API response using a JSON pointer. It determines whether to extract from the body or headers based on the prefix in the pointer.

Parameters:

  • json_pointer (String)

    A JSON pointer string (e.g., ‘/body/data/id’ or ‘/headers/x-request-id’).

Returns:

  • (Object, nil)

    The value located at the specified JSON pointer, or nil if not found or prefix is unrecognized.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/apimatic-core/http/response/http_response.rb', line 35

def get_value_by_json_pointer(json_pointer)
  param_pointer, field_pointer = JsonPointerHelper.split_into_parts(json_pointer)

  value = case param_pointer
          when HEADER_PARAM_POINTER
            JsonPointerHelper.get_value_by_json_pointer(@headers, field_pointer)
          when BODY_PARAM_POINTER
            JsonPointerHelper.get_value_by_json_pointer(
              ApiHelper.json_deserialize(@raw_body),
              field_pointer
            )
          else
            nil
          end

  value.nil? || (value.is_a? JsonPointer::NotFound) ? nil : value
end