zanders 2.1.7 → 2.1.8

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: efbbbc2eb1c9a222cc6b59ab405a8ac98c2d0a73
4
- data.tar.gz: 07eb83db1be238ad6db26f0542a9cbe6a4816079
3
+ metadata.gz: a56bb1a37046d0b3c7806f55b16730d9e7df33f1
4
+ data.tar.gz: 1fa5c42dc66b12ce54114a1f658ad79e2b866e18
5
5
  SHA512:
6
- metadata.gz: 7177a011f4ec81cbd5d8bbfda5e60f87a0a9f6f8f572300c123e6f69a3adc7e67d377cd582df6d18b17a6730910c1830765a13a516efa1cebf71bcec696ea894
7
- data.tar.gz: 676b75af97e62a424c5e9d51f413cb1cef180653bb2d31c4bca1a1df9195ddafca49fee26157956297263e91e6c56f8c9909c43010fb9d8914ac81838c9cf6c5
6
+ metadata.gz: e3008835d7ceaa86c6db6319d6c5e4eff5a27cea2af11fa42a2e9fc92f79993cc5f1aac65f112a50505fb4930b797f3df3aa57ad8773fb9cf3f8731bcc375444
7
+ data.tar.gz: 08d4b65f33db7ac65b3e19d02cb1ff92cc81f7d1efe30e818b8099cec88bf02b5f78807ac4e92330613daafa419272ba654ffb45c2e97b1d292cdb62c6e69de3
@@ -1,16 +1,7 @@
1
1
  module Zanders
2
2
  class Inventory < Base
3
3
 
4
- INVENTORY_FILENAME = "liveinv.csv"
5
-
6
- DEFAULT_SMART_OPTS = {
7
- convert_values_to_numeric: false,
8
- key_mapping: {
9
- available: :quantity,
10
- itemnumber: :item_identifier
11
- },
12
- remove_unmapped_keys: true
13
- }
4
+ INVENTORY_FILENAME = "liveinv.xml"
14
5
 
15
6
  def initialize(options = {})
16
7
  requires!(options, :username, :password)
@@ -29,25 +20,47 @@ module Zanders
29
20
  end
30
21
 
31
22
  def all(chunk_size, &block)
23
+ chunker = Zanders::Chunker.new(chunk_size)
24
+
32
25
  connect(@options) do |ftp|
33
26
  begin
34
- csv_tempfile = Tempfile.new
27
+ tempfile = Tempfile.new
35
28
 
36
29
  ftp.chdir(Zanders.config.ftp_directory)
37
- ftp.getbinaryfile(INVENTORY_FILENAME, csv_tempfile.path)
30
+ ftp.getbinaryfile(INVENTORY_FILENAME, tempfile.path)
31
+
32
+ xml_doc = Nokogiri::XML(tempfile)
33
+
34
+ xml_doc.xpath('//ZandersDataOut').each do |item|
35
+ if chunker.is_full?
36
+ yield(chunker.chunk)
38
37
 
39
- opts = DEFAULT_SMART_OPTS.merge(chunk_size: chunk_size)
38
+ chunker.reset!
39
+ else
40
+ chunker.add(map_hash(item))
41
+ end
42
+ end
40
43
 
41
- SmarterCSV.process(csv_tempfile, opts) do |chunk|
42
- yield(chunk)
44
+ if chunker.chunk_count > 0
45
+ yield(chunker.chunk)
43
46
  end
44
47
 
45
- csv_tempfile.unlink
48
+ tempfile.unlink
46
49
  ensure
47
50
  ftp.close
48
51
  end
49
52
  end
50
53
  end
51
54
 
55
+ private
56
+
57
+ def map_hash(node)
58
+ {
59
+ item_identifier: content_for(node, 'ITEMNO'),
60
+ quantity: content_for(node, 'AVAILABLE'),
61
+ price: content_for(node, 'ITEMPRICE')
62
+ }
63
+ end
64
+
52
65
  end
53
66
  end
@@ -1,3 +1,3 @@
1
1
  module Zanders
2
- VERSION = "2.1.7".freeze
2
+ VERSION = "2.1.8".freeze
3
3
  end
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.1.7
4
+ version: 2.1.8
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-04-10 00:00:00.000000000 Z
11
+ date: 2018-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  version: '0'
145
145
  requirements: []
146
146
  rubyforge_project:
147
- rubygems_version: 2.6.12
147
+ rubygems_version: 2.5.1
148
148
  signing_key:
149
149
  specification_version: 4
150
150
  summary: Ruby library for Zanders