class ActiveRestClient::Connection

Attributes

base_url[RW]
session[RW]

Public Class Methods

new(base_url) click to toggle source
# File lib/active_rest_client/connection.rb, line 11
def initialize(base_url)
  @base_url                      = base_url
  @session                       = new_session
end

Public Instance Methods

delete(path, options={}) click to toggle source
# File lib/active_rest_client/connection.rb, line 69
def delete(path, options={})
  set_defaults(options)
  make_safe_request(path) do
    @session.delete(path) do |req|
      req.headers = req.headers.merge(options[:headers])
      sign_request(req, options[:api_auth])
    end
  end
end
get(path, options={}) click to toggle source
# File lib/active_rest_client/connection.rb, line 37
def get(path, options={})
  set_defaults(options)
  make_safe_request(path) do
    @session.get(path) do |req|
      req.headers = req.headers.merge(options[:headers])
      sign_request(req, options[:api_auth])
    end
  end
end
headers() click to toggle source
# File lib/active_rest_client/connection.rb, line 20
def headers
  @session.headers
end
make_safe_request(path, &block) click to toggle source
# File lib/active_rest_client/connection.rb, line 24
def make_safe_request(path, &block)
  block.call
rescue Faraday::Error::TimeoutError
  raise ActiveRestClient::TimeoutException.new("Timed out getting #{full_url(path)}")
rescue Faraday::Error::ConnectionFailed
  begin
    reconnect
    block.call
  rescue Faraday::Error::ConnectionFailed
    raise ActiveRestClient::ConnectionFailedException.new("Unable to connect to #{full_url(path)}")
  end
end
post(path, data, options={}) click to toggle source
# File lib/active_rest_client/connection.rb, line 58
def post(path, data, options={})
  set_defaults(options)
  make_safe_request(path) do
    @session.post(path) do |req|
      req.headers = req.headers.merge(options[:headers])
      req.body = data
      sign_request(req, options[:api_auth])
    end
  end
end
put(path, data, options={}) click to toggle source
# File lib/active_rest_client/connection.rb, line 47
def put(path, data, options={})
  set_defaults(options)
  make_safe_request(path) do
    @session.put(path) do |req|
      req.headers = req.headers.merge(options[:headers])
      req.body = data
      sign_request(req, options[:api_auth])
    end
  end
end
reconnect() click to toggle source
# File lib/active_rest_client/connection.rb, line 16
def reconnect
  @session         = new_session
end

Private Instance Methods

full_url(path) click to toggle source
# File lib/active_rest_client/connection.rb, line 85
def full_url(path)
  @session.build_url(path).to_s
end
new_session() click to toggle source
# File lib/active_rest_client/connection.rb, line 81
def new_session
  Faraday.new({url: @base_url}, &ActiveRestClient::Base.faraday_config)
end
set_defaults(options) click to toggle source
# File lib/active_rest_client/connection.rb, line 89
def set_defaults(options)
  options[:headers]   ||= {}
  options[:api_auth]  ||= {}
  return options
end
sign_request(request, api_auth) click to toggle source
# File lib/active_rest_client/connection.rb, line 95
def sign_request(request, api_auth)
  return if api_auth[:api_auth_access_id].nil? || api_auth[:api_auth_secret_key].nil?
  ApiAuth.sign!(
    request,
    api_auth[:api_auth_access_id],
    api_auth[:api_auth_secret_key])
end