class Sourcescrub::Models::CompanyItems

Tag

Attributes

domain[RW]
items[RW]
total[RW]
type[RW]

Public Instance Methods

parse_response_items(domain, kclass_name, response) click to toggle source
# File lib/sourcescrub/models/concerns/company_items.rb, line 10
def parse_response_items(domain, kclass_name, response)
  headers = response.dig('headers')
  headers&.keys&.each do |attr_name|
    self.class.send(:define_method, attr_name.gsub('-', '_').to_sym) do
      headers[attr_name]
    end
  end

  dynamic_define_method(self, 'domain', domain)
  dynamic_define_method(self, 'type', kclass_name)
  dynamic_define_method(self, 'total', response.dig(total_key) || 0)
  dynamic_define_method(self, 'items', company_items(kclass_name, response.dig(items_key) || []))
  self
end

Private Instance Methods

company_items(kclass_name, items) click to toggle source
# File lib/sourcescrub/models/concerns/company_items.rb, line 27
def company_items(kclass_name, items)
  items.each_with_object([]) do |item, results|
    results << kclass_name.new.parse_response(item)
  end
end
items_key() click to toggle source
# File lib/sourcescrub/models/concerns/company_items.rb, line 42
def items_key
  case type_name
  when 'Person'
    'peopleAllocations'
  else
    'items'
  end
end
total_key() click to toggle source
# File lib/sourcescrub/models/concerns/company_items.rb, line 33
def total_key
  case type_name
  when 'Person'
    'totalPeople'
  else
    'total'
  end
end
type_name() click to toggle source
# File lib/sourcescrub/models/concerns/company_items.rb, line 51
def type_name
  type.name.split('::')[-1]
end