class OrionWholesale::Category

Category item response structure:

{
  code:        "...",  # ':category_code' in Catalog response.
  description: "..."   # ':category_description' in Catalog response.
}

Public Class Methods

all(options = {}, &block) click to toggle source
# File lib/orion_wholesale/category.rb, line 15
def self.all(options = {}, &block)
  requires!(options, :username, :password)
  new(options).all(&block)
end
new(options = {}) click to toggle source
# File lib/orion_wholesale/category.rb, line 10
def initialize(options = {})
  requires!(options, :username, :password)
  @options = options
end

Public Instance Methods

all() { |category| ... } click to toggle source

Returns an array of hashes with category details.

# File lib/orion_wholesale/category.rb, line 21
def all(&block)
  categories = []

  # Categories are listed in catalog xml, so fetch that.
  catalog = Catalog.new(@options)
  catalog.all do |item|
    categories << {
      code: item[:subcategory].gsub("&amp;", "").gsub(/[^A-Za-z0-9]/, "_").squeeze("_").downcase,
      description: item[:subcategory].gsub("&amp;", "&")
    }
  end

  categories.uniq! { |c| c[:code] }
  categories.sort_by! { |c| c[:code] }

  categories.each do |category|
    yield category
  end
end