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