class Puree::Extractor::Resource

Resource extractor.

Public Class Methods

new(config) click to toggle source

(see Puree::REST::Base#initialize)

# File lib/puree/extractor/resource.rb, line 10
def initialize(config)
  @config = config
end

Private Instance Methods

find(id:, api_resource_type:, xml_extractor_resource_type:) click to toggle source

@param id [String] @param api_resource_type [Symbol] @param xml_extractor_resource_type [Symbol]

# File lib/puree/extractor/resource.rb, line 19
def find(id:, api_resource_type:, xml_extractor_resource_type:)
  api_resource = make_api_resource api_resource_type
  response = api_resource.find id: id
  return unless response.code === 200
  xml_extractor = make_xml_extractor response.body, xml_extractor_resource_type
  xml_extractor.model
end
make_api_resource(resource_type) click to toggle source
# File lib/puree/extractor/resource.rb, line 27
def make_api_resource(resource_type)
  resource_class = "Puree::REST::#{Puree::Util::String.titleize(resource_type)}"
  Object.const_get(resource_class).new @config
end
make_xml_extractor(xml, resource_type) click to toggle source
# File lib/puree/extractor/resource.rb, line 32
def make_xml_extractor(xml, resource_type)
  resource_class = "Puree::XMLExtractor::#{Puree::Util::String.titleize(resource_type)}"
  Object.const_get(resource_class).new xml
end
random(api_resource_type, params = {}) click to toggle source
# File lib/puree/extractor/resource.rb, line 45
def random(api_resource_type, params = {})
  offset = rand(0..record_count(api_resource_type, params)-1)
  api_resource = make_api_resource api_resource_type
  params[:size] = 1
  params[:offset] = offset
  response = api_resource.all_complex params: params
  models = Puree::XMLExtractor::Collection.send "#{api_resource_type}s", response.to_s
  return nil if models.empty?
  models[0]
end
record_count(api_resource_type, params = {}) click to toggle source
# File lib/puree/extractor/resource.rb, line 37
def record_count(api_resource_type, params = {})
  api_resource = make_api_resource api_resource_type
  params[:size] =  0
  response = api_resource.all_complex params: params
  return unless response.code === 200
  Puree::XMLExtractor::Collection.count response.to_s
end