module Assembla::Connection

Specifies Http connection options

Constants

ALLOWED_OPTIONS

Public Instance Methods

caching?() click to toggle source
# File lib/assembla_api/connection.rb, line 36
def caching?
  !@connection.nil?
end
clear_cache() click to toggle source
# File lib/assembla_api/connection.rb, line 32
def clear_cache
  @connection = nil
end
connection(api, options = {}) click to toggle source

Creates http connection

Returns a Fraday::Connection object

# File lib/assembla_api/connection.rb, line 54
def connection(api, options = {})
  connection_options = default_options(options)
  clear_cache unless options.empty?
  builder = api.stack ? api.stack : stack(options.merge!(api: api))
  connection_options.merge!(builder: builder)
  if ENV['DEBUG']
    p "Connection options : \n"
    pp connection_options
  end
  @connection ||= Faraday.new(connection_options)
end
default_options(options = {}) click to toggle source
# File lib/assembla_api/connection.rb, line 17
def default_options(options = {})
  accept = options[:headers] && options[:headers][:accept]
  {
    headers: {
      ACCEPT         =>  accept || 'application/vnd.assembla.v1+json,' \
                        'application/vnd.assembla.beta+json;q=0.5,' \
                        'application/json;q=0.1',
      ACCEPT_CHARSET => 'utf-8',
      USER_AGENT     => options[:user_agent]
    },
    ssl: options[:ssl],
    url: options[:endpoint]
  }
end
stack(options = {}) click to toggle source

Exposes middleware builder to facilitate custom stacks and easy addition of new extensions such as cache adapter.

@api public

# File lib/assembla_api/connection.rb, line 44
def stack(options = {})
  @stack ||= begin
    builder_class = defined?(Faraday::RackBuilder) ? Faraday::RackBuilder : Faraday::Builder
    builder_class.new(&Assembla.default_middleware(options))
  end
end