rsr_group 2.4.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4e4f34827e9ede124f8e486883383b27e56db84
4
- data.tar.gz: 1b4d50d861555d20ac59957d897d83a39e2011d8
3
+ metadata.gz: 2d660007bcdfce8880a51ab15665a8d83b55fe4f
4
+ data.tar.gz: 15faf1b6e152b3a6acb91102905b44c056de3162
5
5
  SHA512:
6
- metadata.gz: 16a6c131821a8f87184a5d3d0e6bbc04865e8ebb382cfdd6b37d8a614024d908d1c2eacbecaeb2a7ee4981eaba167fe3e770f3e31c5863cb69f8084c2bbf1bde
7
- data.tar.gz: d43927890db8f102bd1ab35ff67db8e75c847d6cfa32cad3f524b81a12e569cedbf94158b70f34b9932d399bf214bfc04a72151e57f3dfcc4c3356a5b8cb61a7
6
+ metadata.gz: 2a7cc57d289350b4bf86604c841b0b3f014f39616cf49ec9a5e6abbb52d85d8ff774f3d18e3422cb279d56672d9070aba00681eeb6d80f1ee918b7540a949d48
7
+ data.tar.gz: 98b7e8ac62f25143ab3c7969b0da796882fe6b55ff473d32a363e764833778ed47fb156e6e99d28e359b534d6f577f17765064d53027ddaeeae93ff1e41cbeff
@@ -12,12 +12,12 @@ module RsrGroup
12
12
  @options = options
13
13
  end
14
14
 
15
- def self.all(chunk_size = 15, options = {}, &block)
15
+ def self.all(options = {}, &block)
16
16
  requires!(options, :username, :password)
17
- new(options).all(chunk_size, &block)
17
+ new(options).all &block
18
18
  end
19
19
 
20
- def all(chunk_size, &block)
20
+ def all(&block)
21
21
  connect(@options) do |ftp|
22
22
  begin
23
23
  csv_tempfile = Tempfile.new
@@ -30,8 +30,8 @@ module RsrGroup
30
30
  ftp.getbinaryfile(INVENTORY_FILENAME, csv_tempfile.path)
31
31
  end
32
32
 
33
- CSV.readlines(csv_tempfile, col_sep: ';', quote_char: "\x00").to_enum.with_index(1).each do |row, current_line|
34
- process_row(row)
33
+ CSV.foreach(csv_tempfile, { col_sep: ';', quote_char: "\x00" }).each do |row|
34
+ yield(process_row(row))
35
35
  end
36
36
  end
37
37
 
@@ -54,7 +54,7 @@ module RsrGroup
54
54
  name: sanitize(row[2]),
55
55
  model: sanitize(row[9]),
56
56
  short_description: sanitize(row[2]),
57
- category: row[3].nil? ? row[3] : RsrGroup::Department.new(row[3]).name,
57
+ category: row[3].nil? ? nil : RsrGroup::Department.new(row[3]).name,
58
58
  brand: sanitize(row[10]),
59
59
  map_price: sanitize(row[70]),
60
60
  price: sanitize(row[6]),
@@ -9,7 +9,7 @@ module RsrGroup
9
9
  KEYDEALER_FILENAME = 'rsrinventory-keydlr-new.txt'.freeze
10
10
 
11
11
  DEFAULT_SMART_OPTS = {
12
- chunk_size: 100,
12
+ chunk_size: 500,
13
13
  convert_values_to_numeric: false,
14
14
  col_sep: ";",
15
15
  quote_char: "|",
@@ -34,17 +34,17 @@ module RsrGroup
34
34
  new(options).get_quantity_file
35
35
  end
36
36
 
37
- def self.quantity(chunk_size, options = {}, &block)
37
+ def self.quantity(options = {}, &block)
38
38
  requires!(options, :username, :password)
39
- new(options).quantity(chunk_size, &block)
39
+ new(options).quantity &block
40
40
  end
41
41
 
42
- def self.all(chunk_size, options = {}, &block)
42
+ def self.all(options = {}, &block)
43
43
  requires!(options, :username, :password)
44
- new(options).all(chunk_size, &block)
44
+ new(options).all &block
45
45
  end
46
46
 
47
- def all(chunk_size, &block)
47
+ def all(&block)
48
48
  connect(@options) do |ftp|
49
49
  tempfile = Tempfile.new
50
50
 
@@ -59,7 +59,7 @@ module RsrGroup
59
59
  ftp.getbinaryfile(INVENTORY_FILENAME, tempfile.path)
60
60
  end
61
61
 
62
- SmarterCSV.process(tempfile, DEFAULT_SMART_OPTS.merge(chunk_size: chunk_size)) do |chunk|
62
+ SmarterCSV.process(tempfile, DEFAULT_SMART_OPTS) do |chunk|
63
63
  chunk.each do |item|
64
64
  yield(item)
65
65
  end
@@ -73,7 +73,7 @@ module RsrGroup
73
73
  def get_quantity_file
74
74
  connect(@options) do |ftp|
75
75
  quantity_tempfile = Tempfile.new
76
- tempfile = Tempfile.new
76
+ tempfile = Tempfile.new(['quantity-', '.csv'])
77
77
 
78
78
  # Is this a key dealer?
79
79
  if ftp.nlst.include?(KEYDEALER_DIR)
@@ -86,6 +86,8 @@ module RsrGroup
86
86
  ftp.getbinaryfile(QTY_FILENAME, quantity_tempfile.path)
87
87
  end
88
88
 
89
+ ftp.close
90
+
89
91
  SmarterCSV.process(quantity_tempfile.open, {
90
92
  chunk_size: 100,
91
93
  force_utf8: true,
@@ -93,18 +95,16 @@ module RsrGroup
93
95
  user_provided_headers: [:item_identifier, :quantity]
94
96
  }) do |chunk|
95
97
  chunk.each do |item|
96
- tempfile.puts("#{item[:item_identifier]}, #{item[:quantity]}")
98
+ tempfile.puts("#{item[:item_identifier]},#{item[:quantity].to_i}")
97
99
  end
98
100
  end
99
101
 
100
102
  quantity_tempfile.unlink
101
- ftp.close
102
-
103
103
  tempfile.path
104
104
  end
105
105
  end
106
106
 
107
- def quantity(chunk_size, &block)
107
+ def quantity(&block)
108
108
  connect(@options) do |ftp|
109
109
  tempfile = Tempfile.new
110
110
 
@@ -112,23 +112,30 @@ module RsrGroup
112
112
  if ftp.nlst.include?(KEYDEALER_DIR)
113
113
  ftp.chdir(KEYDEALER_DIR)
114
114
  # Pull from the FTP and save as a temp file
115
- ftp.getbinaryfile(KEYDEALER_FILENAME, tempfile.path)
115
+ ftp.getbinaryfile(QTY_FILENAME, tempfile.path)
116
116
  else
117
117
  ftp.chdir(INVENTORY_DIR)
118
118
  # Pull from the FTP and save as a temp file
119
- ftp.getbinaryfile(INVENTORY_FILENAME, tempfile.path)
119
+ ftp.getbinaryfile(QTY_FILENAME, tempfile.path)
120
120
  end
121
+ ftp.close
121
122
 
122
- SmarterCSV.process(tempfile, DEFAULT_SMART_OPTS.merge(chunk_size: chunk_size)) do |chunk|
123
- chunk.each do |item|
124
- item = Hash[*item.select {|k,v| [:item_identifier, :quantity].include?(k)}.flatten]
123
+ smart_opts = {
124
+ col_sep: ",",
125
+ headers_in_file: false,
126
+ user_provided_headers: [
127
+ :item_identifier,
128
+ :quantity
129
+ ]
130
+ }
125
131
 
132
+ SmarterCSV.process(tempfile, smart_opts) do |chunk|
133
+ chunk.each do |item|
126
134
  yield(item)
127
135
  end
128
136
  end
129
137
 
130
138
  tempfile.unlink
131
- ftp.close
132
139
  end
133
140
  end
134
141
 
@@ -1,3 +1,3 @@
1
1
  module RsrGroup
2
- VERSION = '2.4.0'.freeze
2
+ VERSION = '3.0.1'.freeze
3
3
  end
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_runtime_dependency "smarter_csv", "~> 1.1.4"
28
28
 
29
29
  spec.add_development_dependency "bundler", "~> 1.12"
30
+ spec.add_development_dependency "memory_profiler", "~> 0.9"
30
31
  spec.add_development_dependency "rake", "~> 10.0"
31
32
  spec.add_development_dependency "rspec", "~> 3.0"
32
33
  spec.add_development_dependency "webmock", "~> 1.20"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsr_group
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Campbell
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: smarter_csv
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: memory_profiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -134,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
148
  version: '0'
135
149
  requirements: []
136
150
  rubyforge_project:
137
- rubygems_version: 2.5.1
151
+ rubygems_version: 2.6.12
138
152
  signing_key:
139
153
  specification_version: 4
140
154
  summary: RSR Group Ruby library