class Felis::API
Attributes
account_id[RW]
base_uri[RW]
debug[RW]
private_key[RW]
public_key[RW]
timeout[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/felis/api.rb, line 9 def initialize(options = {}) @base_uri = options.fetch(:base_uri, "https://api.e2ma.net") @account_id = options.fetch(:account_id, ENV['EMMA_ACCOUNT_ID'] || nil) @private_key = options.fetch(:private_key, ENV['EMMA_PRIVATE_KEY'] || nil) @public_key = options.fetch(:public_key, ENV['EMMA_PUBLIC_KEY'] || nil) @debug = options.fetch(:debug, false) @timeout = options.fetch(:timeout, 30) @defaults = { basic_auth: { username: @public_key, password: @private_key } } setup_base_uri end
Public Instance Methods
delete(path, query = {})
click to toggle source
HTTP DELETE Request
# File lib/felis/api.rb, line 38 def delete(path, query = {}) request(:delete, path, query) end
get(path, query = {})
click to toggle source
HTTP GET Request
# File lib/felis/api.rb, line 23 def get(path, query = {}) request(:get, path, query) end
post(path, params = {})
click to toggle source
HTTP POST Request
# File lib/felis/api.rb, line 28 def post(path, params = {}) request(:post, path, params) end
put(path, params = {})
click to toggle source
HTTP PUT Request
# File lib/felis/api.rb, line 33 def put(path, params = {}) request(:put, path, params) end
Private Instance Methods
request(method, path, params = {})
click to toggle source
# File lib/felis/api.rb, line 44 def request(method, path, params = {}) self.class.debug_output($stderr) if @debug uri = "#{self.class.base_uri}#{path}" setup_http_body(method, params) begin response = self.class.send(method.to_sym, uri, @defaults) @parsed_response = nil if response.body @parsed_response = MultiJson.load(response.body) if should_raise_error? error = EmmaError.new(@parsed_response["error"]) raise error end end @parsed_response rescue MultiJson::LoadError => e error = EmmaError.new(e) raise error end end
setup_base_uri()
click to toggle source
# File lib/felis/api.rb, line 81 def setup_base_uri self.class.base_uri "#{@base_uri}/#{@account_id}" end
setup_http_body(method, params)
click to toggle source
# File lib/felis/api.rb, line 71 def setup_http_body(method, params) @defaults.reject! { |k, v| [:query, :body].include? k } unless params.empty? @defaults.merge!({query: params}).tap { |h| h.delete(:body) } if [:get, :delete].include? method.to_sym @defaults.merge!({body: MultiJson.dump(params)}).tap { |h| h.delete(:query) } if [:put, :post].include? method.to_sym end @defaults.merge!({timeout: @timeout}) end
should_raise_error?()
click to toggle source
# File lib/felis/api.rb, line 85 def should_raise_error? @parsed_response.is_a?(Hash) && @parsed_response['error'] end