class Apruve::Client

Constants

DEFAULTS

Attributes

api_key[RW]

attr_reader :conn

config[RW]

attr_reader :conn

conn[RW]

attr_reader :conn

Public Class Methods

new(api_key, options={}) click to toggle source
# File lib/apruve/client.rb, line 27
def initialize(api_key, options={})
  @api_key = api_key.nil? ? api_key : api_key.strip
  @config = DEFAULTS.merge options
  build_conn
end

Public Instance Methods

build_conn() click to toggle source
# File lib/apruve/client.rb, line 34
def build_conn
  if config[:logger]
    logger = config[:logger]
  else
    logger = Logger.new(STDOUT)
    logger.level = Logger.const_get(config[:logging_level].to_s)
    config[:logger] = logger
  end

  Faraday::Response.register_middleware :handle_apruve_errors => lambda { Faraday::Response::RaiseApruveError }
  Faraday::Response.register_middleware :apruve_json_parser => lambda { FaradayMiddleware::ApruveParseJson }

  options = {
      :request => {
          :open_timeout => config[:connection_timeout],
          :timeout => config[:read_timeout]
      },
      :ssl => {
          :verify => @config[:ssl_verify] # Only set this to false for testing
      }
  }
  @conn = Faraday.new(url, options) do |builder|
    # Order is kinda important here...
    builder.response :raise_error # raise exceptions on 40x, 50x responses
    builder.use Apruve::FaradayErrorHandler
    builder.request :json
    builder.response :logger, logger
    builder.response :handle_apruve_errors
    builder.response :apruve_json_parser
    builder.adapter config[:faraday_adapter]
  end
  conn.path_prefix = "/api/#{@config[:version]}"
  conn.headers['User-Agent'] = "apruve-ruby/#{Apruve::VERSION}"
  conn.headers['Content-Type'] = 'application/json'
  conn.headers['Accept'] = "#{@config[:accept_type]};revision=#{@config[:version]}"
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/apruve/client.rb, line 79
def method_missing(method, *args, &block)
  if is_http_method? method
    conn.headers['Apruve-Api-Key'] = @api_key unless @api_key.nil?
    conn.send method, *args
  else
    super method, *args, &block
  end
end
url() click to toggle source
# File lib/apruve/client.rb, line 71
def url
  builder = (config[:scheme] == 'http') ? URI::HTTP : URI::HTTPS

  builder.build({:host => config[:host],
                 :port => config[:port],
                 :scheme => config[:scheme]})
end

Private Instance Methods

is_http_method?(method) click to toggle source
# File lib/apruve/client.rb, line 90
def is_http_method? method
  [:get, :post, :put, :delete, :patch].include? method
end
respond_to?(method, include_private = false) click to toggle source
Calls superclass method
# File lib/apruve/client.rb, line 94
def respond_to?(method, include_private = false)
  if is_http_method? method
    true
  else
    super method, include_private
  end
end