class StackerBee::Connection

Attributes

configuration[RW]

Public Class Methods

new(config) click to toggle source
# File lib/stacker_bee/connection.rb, line 13
def initialize(config)
  self.configuration = config

  uri = URI.parse(configuration.url)
  uri.path = ''
  fail ConnectionError, 'no protocol specified' unless uri.scheme

  initialize_faraday(
    url: uri.to_s,
    ssl: { verify: configuration.ssl_verify? }
  )
end

Public Instance Methods

get(path, params) click to toggle source
# File lib/stacker_bee/connection.rb, line 44
def get(path, params)
  @faraday.get(path, params)
rescue Faraday::Error::ConnectionFailed => error
  configuration.logger.error error if configuration.logger
  raise ConnectionError,
        "Failed to connect to #{configuration.url}, #{error}"
end
initialize_faraday(options) click to toggle source
# File lib/stacker_bee/connection.rb, line 26
def initialize_faraday(options)
  @faraday = Faraday.new(options) do |faraday|
    faraday.use HTTPMiddleware::Detokenizer
    faraday.use HTTPMiddleware::SignedQuery, configuration.secret_key
    configuration.faraday_middlewares.call faraday

    unless using_adapter?(faraday.builder.handlers)
      faraday.adapter Faraday.default_adapter  # Net::HTTP
    end
  end
end
using_adapter?(handlers) click to toggle source
# File lib/stacker_bee/connection.rb, line 38
def using_adapter?(handlers)
  handlers.find do |handler|
    handler.klass.ancestors.include?(Faraday::Adapter)
  end
end