zanders 2.3.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1e40bf9409d6d02ef10b37ea4775601ceb7c2cd
4
- data.tar.gz: f71f3e3d12781a6f2857a10527e9a2e318fc51e5
3
+ metadata.gz: 89bbfb0b8419f723b3961add32b0ab0dc1b6c70a
4
+ data.tar.gz: 0a8cbe3047e4e1331423f66d7b7b95513419c91e
5
5
  SHA512:
6
- metadata.gz: 5d9e843dca9c57e9b6d750154f5d42d169c8518cefdc1a982f705948833dccb660cb4e92f64d09a15c9f67fe0ab1de22a70b4e91b05e54da0b16045cb99d4f5d
7
- data.tar.gz: a81640e4b9b752fa676ede380d5b963ded5cee5393cf6b1ced0cb1c6f5b7b3f9fb5adb826387ef042e3606015af63d0c404ee78157bc83d33fb1360c5bfd5674
6
+ metadata.gz: 74ed395a7d1f728a9f4d0c2f65d8ecc4ce552b4f266e86fff6a15034945a2c4b81a822b81b6d4f3bbb2465005228d8fa00bbc56c581c2a1bdcd01836aba92c93
7
+ data.tar.gz: 66a084e8ef02b7acb4211a27c38baf098cdbd44cc3dcca31e765aa82f9dbf9966cd56807daf9ca279ea62c6a540f47d16a3219e87d8a3e8e671cd9111bf2c48e
data/lib/zanders/base.rb CHANGED
@@ -49,8 +49,6 @@ module Zanders
49
49
  ftp.chdir(Zanders.config.ftp_directory)
50
50
  ftp.getbinaryfile(filename, tempfile.path)
51
51
 
52
- tempfile.close
53
-
54
52
  tempfile
55
53
  ensure
56
54
  ftp.close
@@ -1,71 +1,55 @@
1
1
  module Zanders
2
2
  class Catalog < Base
3
3
 
4
- CATALOG_FILENAME = "zandersinv.xml"
4
+ CATALOG_FILENAME = 'zandersinv.xml'
5
+ ITEM_NODE_NAME = 'ZandersDataOut'
5
6
 
6
7
  def initialize(options = {})
7
8
  requires!(options, :username, :password)
8
9
  @options = options
9
10
  end
10
11
 
11
- def self.all(chunk_size = 15, options = {}, &block)
12
+ def self.all(options = {}, &block)
12
13
  requires!(options, :username, :password)
13
- new(options).all(chunk_size, &block)
14
+ new(options).all &block
14
15
  end
15
16
 
16
- def all(chunk_size, &block)
17
- tempfile = get_file(CATALOG_FILENAME)
18
- xml_doc = Nokogiri::XML(tempfile.open)
17
+ def all(&block)
18
+ tempfile = get_file(CATALOG_FILENAME)
19
19
 
20
- xml_doc.xpath("//ZandersDataOut").each do |item|
21
- map_hash(item)
20
+ Nokogiri::XML::Reader.from_io(tempfile).each do |node|
21
+ next unless node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT
22
+ next unless node.name == ITEM_NODE_NAME
23
+
24
+ yield map_hash(Nokogiri::XML::DocumentFragment.parse(node.inner_xml))
22
25
  end
23
26
 
27
+ tempfile.close
24
28
  tempfile.unlink
25
29
  end
26
30
 
27
31
  protected
28
32
 
29
33
  def map_hash(node)
30
- features = self.map_features(node)
31
-
32
- # product_type = case content_for(node, 'ITEMPRODUCTTYPE')
33
- # when 'PD', 'PR'
34
- # :ammunition
35
- # else
36
- # nil
37
- # end
34
+ features = map_features(node)
38
35
 
39
36
  {
40
- name: content_for(node, 'ITEMDESCRIPTION'),
41
- upc: content_for(node, 'ITEMUPC'),
42
- item_identifier: content_for(node, 'ITEMNO'),
43
- quantity: content_for(node, 'ITEMQTYAVAIL'),
44
- price: content_for(node, 'ITEMPRICE'),
45
- short_description: content_for(node, 'ITEMDESCRIPTION'),
46
- long_description: long_description,
47
- category: content_for(node, 'ITEMCATEGORYNAME'),
48
- # product_type: product_type,
49
- mfg_number: content_for(node, 'ITEMMPN'),
50
- weight: content_for(node, 'ITEMWEIGHT'),
51
- caliber: features[:caliber],
52
- map_price: content_for(node, 'ITEMMAPPRICE'),
53
- brand: content_for(node, 'ITEMMANUFACTURER'),
54
- features: features
37
+ name: content_for(node, 'ITEMDESCRIPTION'),
38
+ upc: content_for(node, 'ITEMUPC'),
39
+ item_identifier: content_for(node, 'ITEMNO'),
40
+ quantity: content_for(node, 'ITEMQTYAVAIL'),
41
+ price: content_for(node, 'ITEMPRICE'),
42
+ short_description: content_for(node, 'ITEMDESCRIPTION'),
43
+ category: content_for(node, 'ITEMCATEGORYNAME'),
44
+ mfg_number: content_for(node, 'ITEMMPN'),
45
+ weight: content_for(node, 'ITEMWEIGHT'),
46
+ caliber: features[:caliber],
47
+ map_price: content_for(node, 'ITEMMAPPRICE'),
48
+ brand: content_for(node, 'ITEMMANUFACTURER'),
49
+ features: features
55
50
  }
56
51
  end
57
52
 
58
- def get_description(item_number)
59
- description = @descriptions.find { |x| x[0] == item_number }
60
-
61
- if description
62
- description = description.last
63
- description.slice!("FEATURES")
64
- end
65
-
66
- description
67
- end
68
-
69
53
  def map_features(node)
70
54
  features = Hash.new
71
55
 
@@ -79,16 +63,5 @@ module Zanders
79
63
  features.symbolize_keys!
80
64
  end
81
65
 
82
- def load_descriptions
83
- connect(@options) do |ftp|
84
- csv_tempfile = Tempfile.new
85
-
86
- ftp.chdir(Zanders.config.ftp_directory)
87
- ftp.getbinaryfile('detaildesctext.csv', csv_tempfile.path)
88
-
89
- @descriptions = CSV.read(csv_tempfile, { :col_sep => '~', :quote_char => "\x00" })
90
- end
91
- end
92
-
93
66
  end
94
67
  end
@@ -5,13 +5,12 @@ module Zanders
5
5
 
6
6
  def initialize(options = {})
7
7
  requires!(options, :username, :password)
8
-
9
8
  @options = options
10
9
  end
11
10
 
12
- def self.all(chunk_size = 100, options = {}, &block)
11
+ def self.all(options = {}, &block)
13
12
  requires!(options, :username, :password)
14
- new(options).all(chunk_size, &block)
13
+ new(options).all &block
15
14
  end
16
15
 
17
16
  def self.get_quantity_file(options = {})
@@ -19,39 +18,33 @@ module Zanders
19
18
  new(options).get_quantity_file
20
19
  end
21
20
 
22
- def self.quantity(chunk_size = 100, options = {}, &block)
23
- requires!(options, :username, :password)
24
- new(options).all(chunk_size, &block)
25
- end
26
-
27
- def self.get_file(options = {})
21
+ def self.quantity(options = {}, &block)
28
22
  requires!(options, :username, :password)
29
- new(options).get_file
23
+ new(options).all &block
30
24
  end
31
25
 
32
- def all(chunk_size, &block)
33
- tempfile = get_file(INVENTORY_FILENAME)
34
- xml_doc = Nokogiri::XML(tempfile.open)
26
+ def all(&block)
27
+ tempfile = get_file(INVENTORY_FILENAME)
35
28
 
36
- xml_doc.xpath('//ZandersDataOut').each do |item|
37
- map_hash(item)
29
+ Nokogiri::XML(tempfile).xpath('//ZandersDataOut').each do |item|
30
+ yield map_hash(item)
38
31
  end
39
32
 
33
+ tempfile.close
40
34
  tempfile.unlink
41
35
  end
42
36
 
43
37
  def get_quantity_file
44
- inventory_tempfile = get_file(INVENTORY_FILENAME)
45
- tempfile = Tempfile.new
46
- xml_doc = Nokogiri::XML(inventory_tempfile.open)
38
+ inventory_tempfile = get_file(INVENTORY_FILENAME)
39
+ tempfile = Tempfile.new
47
40
 
48
- xml_doc.xpath('//ZandersDataOut').each do |item|
41
+ Nokogiri::XML(inventory_tempfile).xpath('//ZandersDataOut').each do |item|
49
42
  tempfile.puts("#{content_for(item, 'ITEMNO')},#{content_for(item, 'AVAILABLE')}")
50
43
  end
51
44
 
45
+ inventory_tempfile.close
52
46
  inventory_tempfile.unlink
53
47
  tempfile.close
54
-
55
48
  tempfile.path
56
49
  end
57
50
 
@@ -59,9 +52,9 @@ module Zanders
59
52
 
60
53
  def map_hash(node)
61
54
  {
62
- item_identifier: content_for(node, 'ITEMNO'),
63
- quantity: content_for(node, 'AVAILABLE'),
64
- price: content_for(node, 'ITEMPRICE')
55
+ item_identifier: content_for(node, 'ITEMNO'),
56
+ quantity: content_for(node, 'AVAILABLE'),
57
+ price: content_for(node, 'ITEMPRICE')
65
58
  }
66
59
  end
67
60
 
@@ -1,3 +1,3 @@
1
1
  module Zanders
2
- VERSION = "2.3.0".freeze
2
+ VERSION = '3.0.0'.freeze
3
3
  end
data/zanders.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_runtime_dependency "smarter_csv", "~> 1.1.4"
28
28
 
29
+ spec.add_development_dependency "activesupport", "~> 5"
29
30
  spec.add_development_dependency "bundler", "~> 1.14"
30
31
  spec.add_development_dependency "rake", "~> 10.0"
31
32
  spec.add_development_dependency "rspec", "~> 3.3"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zanders
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Knight
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-10 00:00:00.000000000 Z
11
+ date: 2018-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.1.4
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -158,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
172
  version: '0'
159
173
  requirements: []
160
174
  rubyforge_project:
161
- rubygems_version: 2.5.1
175
+ rubygems_version: 2.6.12
162
176
  signing_key:
163
177
  specification_version: 4
164
178
  summary: Ruby library for Zanders