Class: Helio::HelioClient::RequestLogContext

Inherits:
Object
  • Object
show all
Defined in:
lib/helio/helio_client.rb

Overview

RequestLogContext stores information about a request that’s begin made so that we can log certain information. It’s useful because it means that we don’t have to pass around as many parameters.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#api_idObject

Returns the value of attribute api_id.



452
453
454
# File 'lib/helio/helio_client.rb', line 452

def api_id
  @api_id
end

#api_tokenObject

Returns the value of attribute api_token.



453
454
455
# File 'lib/helio/helio_client.rb', line 453

def api_token
  @api_token
end

#api_versionObject

Returns the value of attribute api_version.



454
455
456
# File 'lib/helio/helio_client.rb', line 454

def api_version
  @api_version
end

#bodyObject

Returns the value of attribute body.



451
452
453
# File 'lib/helio/helio_client.rb', line 451

def body
  @body
end

#idempotency_keyObject

Returns the value of attribute idempotency_key.



455
456
457
# File 'lib/helio/helio_client.rb', line 455

def idempotency_key
  @idempotency_key
end

#methodObject

Returns the value of attribute method.



456
457
458
# File 'lib/helio/helio_client.rb', line 456

def method
  @method
end

#pathObject

Returns the value of attribute path.



457
458
459
# File 'lib/helio/helio_client.rb', line 457

def path
  @path
end

#query_paramsObject

Returns the value of attribute query_params.



458
459
460
# File 'lib/helio/helio_client.rb', line 458

def query_params
  @query_params
end

#request_idObject

Returns the value of attribute request_id.



459
460
461
# File 'lib/helio/helio_client.rb', line 459

def request_id
  @request_id
end

Instance Method Details

#dup_from_response(resp) ⇒ Object

The idea with this method is that we might want to update some of context information because a response that we’ve received from the API contains information that’s more authoritative than what we started with for a request. For example, we should trust whatever came back in a ‘Helio-Version` header beyond what configuration information that we might have had available.



467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
# File 'lib/helio/helio_client.rb', line 467

def dup_from_response(resp)
  return self if resp.nil?

  # Faraday's API is a little unusual. Normally it'll produce a response
  # object with a `headers` method, but on error what it puts into
  # `e.response` is an untyped `Hash`.
  headers = if resp.is_a?(Faraday::Response)
              resp.headers
            else
              resp[:headers]
            end

  context = dup
  context.api_id = headers["X-API-ID"]
  context.api_version = headers["Helio-Version"]
  context.idempotency_key = headers["Idempotency-Key"]
  context.request_id = headers["Request-Id"]
  context
end