lib/lipseys/catalog.rb in lipseys-1.0.0.pre vs lib/lipseys/catalog.rb in lipseys-1.0.1.pre

- old
+ new

@@ -59,54 +59,59 @@ # } class Catalog < Base API_URL = 'https://www.lipseys.com/API/catalog.ashx' - def initialize(options = {}) requires!(options, :email, :password) @email = options[:email] @password = options[:password] end - def self.all(options = {}) new(options).all end + def self.all_as_chunks(size, options = {}, &block) + new(options).all_as_chunks(size, &block) + end + + def self.accessories(options = {}) + new(options).accessories + end + + def self.firearms(options = {}) + new(options).firearms + end + + def self.nfa(options = {}) + new(options).nfa + end + + def self.optics(options = {}) + new(options).optics + end + def all - params = { - email: @email, - pass: @password - } - tempfile = stream_to_tempfile(API_URL, params) + tempfile = stream_to_tempfile(API_URL, default_params) items = Array.new Lipseys::Parser.parse(tempfile, 'Item') do |node| items.push(map_hash(node)) end items end - def self.all_as_chunks(size, options = {}, &block) - new(options).all_as_chunks(size, &block) - end - def all_as_chunks(size, &block) - params = { - email: @email, - pass: @password - } - chunker = Lipseys::Chunker.new(size) - tempfile = stream_to_tempfile(API_URL, params) + chunker = Lipseys::Chunker.new(size) + tempfile = stream_to_tempfile(API_URL, default_params) Lipseys::Parser.parse(tempfile, 'Item') do |node| if chunker.is_full? yield(chunker.chunk) - chunker.reset else chunker.add(map_hash(node)) end end @@ -119,48 +124,38 @@ end tempfile.unlink end - def self.firearms(options = {}) - new(options).firearms + def accessories + get_items('ACCESSORY') end def firearms get_items('FIREARM') end - def self.nfa(options = {}) - new(options).nfa - end - def nfa get_items('NFA') end - def self.optics(options = {}) - new(options).optics - end - def optics get_items('OPTIC') end - def self.accessories(options = {}) - new(options).accessories - end + private - def accessories - get_items('ACCESSORY') + def default_params + { + email: @email, + pass: @password + } end - private - def get_items(item_type = nil) - params = { email: @email, pass: @password } - params[:itemtype] = item_type unless item_type.nil? + default_params[:itemtype] = item_type unless item_type.nil? - xml_doc = get_response_xml(API_URL, params) + xml_doc = get_response_xml(API_URL, default_params) items = Array.new xml_doc.css('LipseysCatalog/Item').each do |item| items.push(map_hash(item))