Class: Etsy::Variation::PropertySet

Inherits:
Object
  • Object
show all
Includes:
Model
Defined in:
lib/etsy/variation/property_set.rb

Class Method Summary collapse

Methods included from Model

included, #initialize, #result, #secret, #token

Class Method Details

.allObject



35
36
37
# File 'lib/etsy/variation/property_set.rb', line 35

def self.all
  @all ||= get("/property_sets")
end

.find_property_by_name(name) ⇒ Object



39
40
41
42
43
44
45
# 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) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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