class Fulfil::Request

Public Class Methods

new(url) click to toggle source
# File lib/fulfil/request.rb, line 9
def initialize(url)
  check_auth_params
  @options ={
    base_url:  (Fulfil::BASE_URL % {subdomain: Fulfil.authentication[:subdomain]}) << url,
    api_key:  Fulfil.authentication[:api_key]
  }
end

Public Instance Methods

all(data) click to toggle source
# File lib/fulfil/request.rb, line 21
def all(data)
  request :get, data
end
find(data) click to toggle source
# File lib/fulfil/request.rb, line 25
def find(data)
  request :get, data
end
get(id) click to toggle source
# File lib/fulfil/request.rb, line 17
def get(id)
  request :get, {}, "/#{id}"
end

Private Instance Methods

check_auth_params() click to toggle source

USed to check if auth is done properly before making calls

# File lib/fulfil/request.rb, line 37
def check_auth_params
  if (Fulfil.authentication.nil? || Fulfil.authentication[:subdomain].empty? || Fulfil.authentication[:api_key].empty?)
    raise Fulfil::AuthenticationError, "Please set your subdomain and api key"
  end
end
create_response(response) click to toggle source

Recursively builds response as object of Fulfil::Base class.

# File lib/fulfil/request.rb, line 69
def create_response response
  json = JSON.parse(response.body_str)
  if json.is_a?(Array)
    result = json.map {|result| Fulfil::Base.new(result)}
  else
    result = Fulfil::Base.new(json)
    if result.type == "UserError"
      raise Fulfil::UserError, result.message
    end
  end
  result
end
parse_response(response) click to toggle source
# File lib/fulfil/request.rb, line 60
def parse_response response
    if response.response_code == 401
      raise Fulfil::UnauthorizedError, "Unauthorized access"
    else
      create_response response
    end
end
request(http_method, data={}, url="") click to toggle source

Issue request and get response

# File lib/fulfil/request.rb, line 44
def request(http_method, data={}, url="")
  final_url = @options[:base_url] << url
    begin
      case http_method
          when :get
            response = Curl.get(final_url, data) do |http|
              http.headers['x-api-key'] = @options[:api_key]
              http.headers['Accept'] = 'application/json'
            end
      end
    rescue Curl::Err::HostResolutionError
      raise Fulfil::HostResolutionError, "Invalid Subdomain"
    end
  parse_response response
end