class Elmas::ResultSet

Attributes

records[R]

Public Class Methods

new(parsed_response) click to toggle source
# File lib/elmas/result_set.rb, line 7
def initialize(parsed_response)
  @parsed_response = parsed_response

  @records = if @parsed_response.results
               @parsed_response.results.map do |attributes|
                 resource_class.send(:new, attributes)
               end
             else
               [resource_class.send(:new, @parsed_response.result)]
             end
end

Public Instance Methods

first() click to toggle source
# File lib/elmas/result_set.rb, line 28
def first
  records.first
end
next_page() click to toggle source
# File lib/elmas/result_set.rb, line 19
def next_page
  return unless next_page_url
  next_page = Elmas.get(next_page_url, use_raw_path: true)
  return unless next_page

  response = Elmas::Response.new(next_page)
  response.results
end

Protected Instance Methods

next_page_url() click to toggle source
# File lib/elmas/result_set.rb, line 34
def next_page_url
  @parsed_response.next_page_url
end
resource_class() click to toggle source
# File lib/elmas/result_set.rb, line 47
def resource_class
  @resource_class ||= begin
    constant_name = type.classify
    raise NameError unless constant_name =~ /\A[a-zA-Z0-9]+\z/

    klass = Elmas.const_get(constant_name, false)
    raise NameError unless klass.included_modules.include?(Elmas::Resource)

    klass
  rescue NameError
    Elmas.info("Unknown resource encountered, proceed as usual but further resource details might have to be implemented")
    Class.new { include Elmas::Resource }
  end
end
type() click to toggle source
# File lib/elmas/result_set.rb, line 38
def type
  if @parsed_response.metadata
    c_type = @parsed_response.metadata["type"]
  elsif @parsed_response.results.any?
    c_type = @parsed_response.results.first["__metadata"]["type"]
  end
  c_type.split(".").last
end