module Xfers::APIOperations

Public Class Methods

create_auth_headers(connect_key) click to toggle source
# File lib/xfers/api_operations.rb, line 4
def self.create_auth_headers(connect_key)
  connect_key.nil? ? {'X-XFERS-USER-API-KEY' => Xfers.get_api_key} : {'X-XFERS-APP-API-KEY' => connect_key}
end
delete(resource_url, connect_key=nil, params=nil) click to toggle source
# File lib/xfers/api_operations.rb, line 65
def self.delete(resource_url, connect_key=nil, params=nil)
  RestClient::Request.execute(method: :delete, url: "#{Xfers.get_api_base}#{resource_url}", payload: params,
                                  headers: create_auth_headers(connect_key)) {
      |r, request, result, &block|
    handle_api_error(JSON.parse(r.body), r.code) if r.code != 200
    parse_and_symbolize(r.body)
  }
end
get(params={}, resource_url=nil, connect_key=nil) click to toggle source
# File lib/xfers/api_operations.rb, line 38
def self.get(params={}, resource_url=nil, connect_key=nil)
  RestClient::Request.execute(method: :get, url: "#{Xfers.get_api_base}#{resource_url}",
                              payload: params, headers: create_auth_headers(connect_key)) {
      |r, request, result, &block|
    handle_api_error(JSON.parse(r.body), r.code) if r.code != 200
    parse_and_symbolize(r.body)
  }
end
handle_api_error(msg, status_code) click to toggle source
# File lib/xfers/api_operations.rb, line 8
def self.handle_api_error(msg, status_code)
  case status_code
  when 400
    raise InvalidRequestError.new msg, status_code
  when 401
    raise AuthenticationError.new msg, status_code
  when 500
    raise InternalServerError.new msg, status_code
  else
    raise XfersError.new msg, status_code
  end
end
parse_and_symbolize(json_string) click to toggle source
# File lib/xfers/api_operations.rb, line 21
def self.parse_and_symbolize(json_string)
  parsed = JSON.parse(json_string)
  begin
    if parsed.kind_of?(Array)
      arr = []
      parsed.each { |item|
        arr.push Hash[item.map{ |k, v| [k.to_sym, v] }]
      }
      arr
    else
      Hash[parsed.map{ |k, v| [k.to_sym, v] }]
    end
  rescue NoMethodError
    parsed
  end
end
post(params={}, resource_url=nil, connect_key=nil) click to toggle source
# File lib/xfers/api_operations.rb, line 47
def self.post(params={}, resource_url=nil, connect_key=nil)
  RestClient::Request.execute(method: :post, url: "#{Xfers.get_api_base}#{resource_url}",
                                  payload: params, headers: create_auth_headers(connect_key)) {
      |r, request, result, &block|
    handle_api_error(JSON.parse(r.body), r.code) if r.code != 200
    parse_and_symbolize(r.body)
  }
end
put(params={}, resource_url=nil, connect_key=nil) click to toggle source
# File lib/xfers/api_operations.rb, line 56
def self.put(params={}, resource_url=nil, connect_key=nil)
  RestClient::Request.execute(method: :put, url: "#{Xfers.get_api_base}#{resource_url}",
                                  payload: params, headers: create_auth_headers(connect_key)) {
      |r, request, result, &block|
    handle_api_error(JSON.parse(r.body), r.code) if r.code != 200
    parse_and_symbolize(r.body)
  }
end