class Ashikawa::Core::FaradayFactory

Create Faraday objects

Constants

DEFAULTS

Defaults for the options of create connection

DEFAULT_REQUEST_MIDDLEWARES

Request middlewares that will be prepended

DEFAULT_RESPONSE_MIDDLEWARES

Response middlewares that will be prepended

Attributes

debug_headers[RW]

Debug headers to be used by Faraday

@api private

Public Class Methods

create_connection(url, options) click to toggle source

Create a Faraday object

@param [String] url The complete URL of the ArangoDB instance @option options [Object] adapter The Faraday adapter you want to use. Defaults to Default Adapter @option options [Object] logger The logger you want to use. Defaults to no logger. @option options [Array] additional_request_middlewares Additional request middlewares @option options [Array] additional_response_middlewares Additional response middlewares @option options [Array] additional_middlewares Additional middlewares @api private @example Create a FaradayObject with the given configuration

faraday = FaradayFactory.new('http://localhost:8529/_db/mydb/_api', logger: my_logger)
# File lib/ashikawa-core/faraday_factory.rb, line 34
def self.create_connection(url, options)
  options = DEFAULTS.merge(options)
  faraday = new(
    options.fetch(:adapter),
    options.fetch(:additional_request_middlewares),
    options.fetch(:additional_response_middlewares),
    options.fetch(:additional_middlewares)
  )
  faraday.debug_headers = options.fetch(:debug_headers) { false }
  faraday.logger = options.fetch(:logger) if options.key?(:logger)
  faraday.faraday_for(url)
end
new(adapter, additional_request_middlewares, additional_response_middlewares, additional_middlewares) click to toggle source

Create a new Faraday Factory with additional middlewares

@param [Adapter] adapter The adapter to use @param [Array] additional_request_middlewares Additional request middlewares @param [Array] additional_response_middlewares Additional response middlewares @param [Array] additional_middlewares Additional middlewares @api private

# File lib/ashikawa-core/faraday_factory.rb, line 59
def initialize(adapter, additional_request_middlewares, additional_response_middlewares, additional_middlewares)
  @adapter = adapter
  @request_middlewares = DEFAULT_REQUEST_MIDDLEWARES + additional_request_middlewares
  @response_middlewares = DEFAULT_RESPONSE_MIDDLEWARES + additional_response_middlewares
  @additional_middlewares = additional_middlewares
end

Public Instance Methods

faraday_for(url) click to toggle source

Create the Faraday for the given URL

@param [String] url @return [Faraday] @api private

# File lib/ashikawa-core/faraday_factory.rb, line 79
def faraday_for(url)
  Faraday.new(url) do |connection|
    @request_middlewares.each { |middleware| connection.request(*middleware) }
    @response_middlewares.each { |middleware| connection.response(*middleware) }
    @additional_middlewares.each { |middleware| connection.use(*middleware) }
    connection.adapter(*@adapter)
  end
end
logger=(logger) click to toggle source

Logger to be used by Faraday

@param [Logger] logger The logger you want to use @api private

# File lib/ashikawa-core/faraday_factory.rb, line 70
def logger=(logger)
  @response_middlewares << [:minimal_logger, logger, debug_headers: debug_headers]
end