class Rexpense::Resources::Base

Attributes

http[RW]

Public Class Methods

new(http) click to toggle source
# File lib/rexpense/resources/base.rb, line 7
def initialize(http)
  @http = http
end

Private Instance Methods

build_search_endpoint(params) click to toggle source
# File lib/rexpense/resources/base.rb, line 13
def build_search_endpoint(params)
  return URI.encode("#{endpoint_base}") if params.empty?
  query_string = uri_query(params).join("&")
  URI.encode("#{endpoint_base}?#{query_string}")
end
entity_klass_name() click to toggle source
# File lib/rexpense/resources/base.rb, line 47
def entity_klass_name
  self.class.to_s.gsub("Resources", "Entities")
end
query_value(key, value) click to toggle source
# File lib/rexpense/resources/base.rb, line 27
def query_value(key, value)
  [].tap do |query|
    if value.is_a?(Array)
      value.each { |v| query << "q[#{key}][]=#{v}" }
    else
      query << "q[#{key}]=#{value}"
    end
  end
end
respond_with_collection(response) click to toggle source
# File lib/rexpense/resources/base.rb, line 37
def respond_with_collection(response)
  collection_klass = Rexpense::Entities.const_get("#{entity_klass_name}Collection")
  collection_klass.build(response)
end
respond_with_object(response, key=nil) click to toggle source
# File lib/rexpense/resources/base.rb, line 42
def respond_with_object(response, key=nil)
  entity_klass = Rexpense::Entities.const_get(entity_klass_name)
  entity_klass.new(response.parsed_body(key))
end
uri_query(params) click to toggle source
# File lib/rexpense/resources/base.rb, line 19
def uri_query(params)
  page = params.delete(:page)
  query = []
  params.each { |k, v| query += query_value(k, v) }
  query << "page=#{page}" if page
  query
end