class Etsy::Variation::PropertySet

Public Class Methods

all() click to toggle source
# File lib/etsy/variation/property_set.rb, line 35
def self.all
  @all ||= get("/property_sets")
end
find_property_by_name(name) click to toggle source
# File lib/etsy/variation/property_set.rb, line 39
def self.find_property_by_name(name)
  property = all.properties.detect {|prop_id, prop| prop["name"] == name}
  if property
    property_id, property_data = property
    property_data
  end
end
qualifying_properties_for_property(name) click to toggle source
# File lib/etsy/variation/property_set.rb, line 47
def self.qualifying_properties_for_property(name)
  property = find_property_by_name(name)
  return nil unless property
  property_id = property["property_id"]

  qualifiers = all.qualifiers[property_id.to_s]
  return [] unless qualifiers

  qualifiers.map do |qualifier|
    qualifying_properties = all.qualifying_properties[qualifier.fetch("property_id").to_s]
    options = qualifier.fetch("options").inject({}) do |acc, opt_id|
      acc.merge({
        all.options.fetch(opt_id.to_s) => opt_id
      })
    end
    {
      "param" => qualifying_properties.fetch("param"),
      "description" => qualifying_properties.fetch("description"),
      "options" => options
    }
  end
end