module Finix::Resource::ClassMethods

Public Instance Methods

construct_from_response(payload) click to toggle source

this is class method, not callable from instance

# File lib/finix/resources/resource.rb, line 106
def construct_from_response(payload)
  payload = Finix::Utils.indifferent_read_access payload
  links = payload.delete('_links') || {}
  instance = self.new payload
  instance.hydrate(links)
  instance
end
fetch(*arguments) click to toggle source
# File lib/finix/resources/resource.rb, line 114
def fetch(*arguments)
  if arguments.nil? or arguments.empty? or arguments[0].nil? or arguments[0].to_s.empty?
    href = Finix.get_href self
    # href = Finix.hypermedia_registry.key(self)
    return Finix::Utils.eval_class(self, Pagination).new :href => href
  end

  options = arguments.slice!(0) or {}
  if options.is_a? String and options =~ URI::regexp
    href = options
  else
    href = Finix.get_href(self) or Finix.get_href(self.class)
    if options.is_a? Hash
      options = Finix::Utils.indifferent_read_access options
      id = options.delete('id')
    elsif options.is_a? String
      id = options
    end
    href = "#{href}/#{id}" unless id.nil?
  end

  response = Finix.get href
  construct_from_response response.body
end
Also aliased as: find
find(*arguments)
Alias for: fetch
pagination(*args) click to toggle source
# File lib/finix/resources/resource.rb, line 139
def pagination(*args)
  href = Finix.get_href self
  # href = Finix.hypermedia_registry.key(self)
  opts = args.slice!(0) || {}
  opts[:href] = href
  Finix::Utils.eval_class(self, Pagination).new opts
end
retrieve(*args) click to toggle source
# File lib/finix/resources/resource.rb, line 149
def retrieve(*args)
  pager_or_resource = fetch *args

  if pager_or_resource.is_a? Pagination
    pager_or_resource.load! unless pager_or_resource.loaded
  end

  pager_or_resource
end