Sha256: 009209aa6c8de411c9bdf49d5c3b0947f179bca837b62c5408ee0ddda46064a9

Contents?: true

Size: 1.61 KB

Versions: 6

Compression:

Stored size: 1.61 KB

Contents

require "logger"
require "uri"
require "faraday"
require "faraday_middleware"
require "balanced_exception_middleware"


module Balanced
  class Client

    DEFAULTS = {
      :scheme => 'http',
      :host => 'localhost',
      :port => 5000,
      :version => '1',
      :logging_level => 'WARN',
    }

    attr_reader :conn
    attr_accessor :api_key, :config

    def initialize(api_key, options={})
      @api_key = api_key.nil? ? api_key : api_key.strip
      @config = DEFAULTS.merge options
      build_conn
    end

    def build_conn
      logger = Logger.new(STDOUT)
      logger.level = Logger.const_get(DEFAULTS[:logging_level].to_s)

      Faraday.register_middleware :response,
          :handle_balanced_errors => lambda {Faraday::Response::RaiseBalancedError}

      @conn = Faraday.new url do |cxn|
        cxn.request  :json

        cxn.response :logger, logger
        cxn.response :handle_balanced_errors
        cxn.response :json
        # cxn.response :raise_error  # raise exceptions on 40x, 50x responses
        cxn.adapter  Faraday.default_adapter
      end
      conn.path_prefix = '/'
      conn.headers['User-Agent'] = "balanced-ruby/#{Balanced::VERSION}"
    end

    #def inspect  # :nodoc:
      #"<Balanced::Client @api_key=#{api_key}, @url=#{url}>"
    #end

    def url
      URI::HTTPS.build :host => config[:host], :port => config[:port]
    end

    private

    def method_missing(method, *args, &block)
      case method
      when :get, :post, :put, :delete
        conn.basic_auth(api_key, '') unless api_key.nil?
        conn.send method, *args
      else
        super
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
balanced-0.3.10 lib/balanced/client.rb
balanced-0.3.8 lib/balanced/client.rb
balanced-0.3.7 lib/balanced/client.rb
balanced-0.3.6 lib/balanced/client.rb
balanced-0.3.5 lib/balanced/client.rb
balanced-0.3.4 lib/balanced/client.rb