Class: FlexCommerceApi::JsonApiClientExtension::FlexibleConnection

Inherits:
JsonApiClient::Connection
  • Object
show all
Defined in:
lib/flex_commerce_api/json_api_client_extension/flexible_connection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) {|_self| ... } ⇒ FlexibleConnection

Returns a new instance of FlexibleConnection.

Yields:

  • (_self)

Yield Parameters:



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/flex_commerce_api/json_api_client_extension/flexible_connection.rb', line 7

def initialize(options = {})
  site = options.fetch(:site)
  adapter_options = Array(options.fetch(:adapter, Faraday.default_adapter))
  add_json_api_extension = options.fetch(:add_json_api_extension, true)
  authenticate = options.fetch(:authenticate, true)
  include_previewed = options.fetch :include_previewed, false
  @faraday = Faraday.new(site) { |builder|
    builder.request :json
    builder.use JsonApiClientExtension::SaveRequestBodyMiddleware
    builder.use JsonApiClientExtension::ForwardedForMiddleware
    builder.use JsonApiClientExtension::JsonFormatMiddleware if add_json_api_extension
    builder.use JsonApiClientExtension::PreviewedRequestMiddleware if include_previewed
    builder.use JsonApiClient::Middleware::JsonRequest
    # Surrogate Key middleware should always be above HTTP caching to ensure we're reading headers
    # from the original response not the 304 responses
    builder.use JsonApiClientExtension::CaptureSurrogateKeysMiddleware
    # disable the cache when HTTP cache is set to false
    unless false == options[:http_cache]
      builder.use :http_cache, cache_options(options)
    end
    builder.use JsonApiClientExtension::StatusMiddleware
    builder.use JsonApiClient::Middleware::ParseJson
    builder.use JsonApiClientExtension::LoggingMiddleware unless FlexCommerceApi.logger.nil?
    builder.adapter *adapter_options
    builder.options[:open_timeout] = options.fetch(:open_timeout)
    builder.options[:timeout] = options.fetch(:timeout)
  }
  faraday.basic_auth(ApiBase.username, ApiBase.password) if authenticate

  yield(self) if block_given?
end

Instance Attribute Details

#last_responseObject

Returns the value of attribute last_response.



6
7
8
# File 'lib/flex_commerce_api/json_api_client_extension/flexible_connection.rb', line 6

def last_response
  @last_response
end

Instance Method Details

#run(*args) ⇒ Object



39
40
41
42
43
# File 'lib/flex_commerce_api/json_api_client_extension/flexible_connection.rb', line 39

def run(*args)
  super.tap do |response|
    self.last_response = response
  end
end