macker 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/data/{oui_1499079803.txt → oui_1499162218.txt} +1548 -1542
- data/lib/macker.rb +39 -20
- data/lib/macker/address.rb +1 -1
- data/lib/macker/version.rb +1 -1
- metadata +3 -3
data/lib/macker.rb
CHANGED
@@ -101,7 +101,7 @@ module Macker
|
|
101
101
|
# @return [Address] MAC address with data
|
102
102
|
def generate(opts = {})
|
103
103
|
expire! if config.auto_expiration
|
104
|
-
return generate_by_iso_code(opts.delete(:iso_code), opts) if opts[:iso_code]
|
104
|
+
return generate_by_iso_code(opts.delete(:iso_code).upcase, opts) if opts[:iso_code]
|
105
105
|
vendor = opts.delete(:vendor)
|
106
106
|
case vendor
|
107
107
|
when nil, false
|
@@ -259,26 +259,10 @@ module Macker
|
|
259
259
|
address = vendor.strip.delete("\t").split("\n")
|
260
260
|
iso_code = address[-1].strip
|
261
261
|
next unless @prefix_table[mac_prefix].nil?
|
262
|
-
@prefix_table[mac_prefix] =
|
263
|
-
.strip
|
264
|
-
.gsub(/\s+/, ' ')
|
265
|
-
.split(/ |\_|\-/)
|
266
|
-
.map(&:capitalize)
|
267
|
-
.join(' '),
|
268
|
-
address: address[2..-1].map { |a| a
|
269
|
-
.strip
|
270
|
-
.gsub(/\s+/, ' ')
|
271
|
-
.gsub(/,(?![\s])/, ', ')
|
272
|
-
.gsub(/\,+$/, '')
|
273
|
-
.split(/ |\_|\-/)
|
274
|
-
.map(&:capitalize)
|
275
|
-
.join(' ')
|
276
|
-
},
|
277
|
-
iso_code: iso_code.length == 2 ? iso_code.upcase : nil
|
278
|
-
}
|
262
|
+
@prefix_table[mac_prefix] = add_vendor(base16_fields, address, iso_code)
|
279
263
|
end
|
280
|
-
@iso_code_table = @prefix_table
|
281
|
-
@vendor_table = @prefix_table
|
264
|
+
@iso_code_table = hash_invert(@prefix_table, :iso_code)
|
265
|
+
@vendor_table = hash_invert(@prefix_table, :name)
|
282
266
|
@prefix_table
|
283
267
|
end
|
284
268
|
|
@@ -392,4 +376,39 @@ module Macker
|
|
392
376
|
File.join(File.dirname(file_path),
|
393
377
|
File.basename(file_path).gsub(/_\d+\.txt/, "_#{Time.now.to_i}.txt")))
|
394
378
|
end
|
379
|
+
|
380
|
+
private
|
381
|
+
|
382
|
+
# Invert hash with given key to use.
|
383
|
+
# @param hash [Hash] source hash
|
384
|
+
# @param new_key [Symbol] key for the inverted hash
|
385
|
+
# @return [Hash] inverted hash
|
386
|
+
def hash_invert(hash, new_key)
|
387
|
+
hash.each_with_object({}) { |(key, value), out| (out[value[new_key]] ||= []) << value.merge(prefix: key) }
|
388
|
+
end
|
389
|
+
|
390
|
+
# Perform vendor hash
|
391
|
+
# @param base16_fields [Array] preifx and name field line
|
392
|
+
# @param address [Array] address lines
|
393
|
+
# @param iso_code [String] last line, iso code
|
394
|
+
# @return [Hash] new vendor
|
395
|
+
def add_vendor(base16_fields, address, iso_code)
|
396
|
+
{ name: base16_fields[-1]
|
397
|
+
.strip
|
398
|
+
.gsub(/\s+/, ' ')
|
399
|
+
.split(/ |\_|\-/)
|
400
|
+
.map(&:capitalize)
|
401
|
+
.join(' '),
|
402
|
+
address: address[2..-1].map { |a| a
|
403
|
+
.strip
|
404
|
+
.gsub(/\s+/, ' ')
|
405
|
+
.gsub(/,(?![\s])/, ', ')
|
406
|
+
.gsub(/\,+$/, '')
|
407
|
+
.split(/ |\_|\-/)
|
408
|
+
.map(&:capitalize)
|
409
|
+
.join(' ')
|
410
|
+
},
|
411
|
+
iso_code: iso_code.length == 2 ? iso_code.upcase : nil
|
412
|
+
}
|
413
|
+
end
|
395
414
|
end
|
data/lib/macker/address.rb
CHANGED
@@ -30,7 +30,7 @@ module Macker
|
|
30
30
|
else
|
31
31
|
raise(InvalidAddress, "Incompatible type for address initialization: #{mac.class}")
|
32
32
|
end
|
33
|
-
raise(InvalidAddress, "Invalid MAC address: #{self
|
33
|
+
raise(InvalidAddress, "Invalid MAC address: #{self}") unless valid?
|
34
34
|
@name ||= opts.fetch(:name, nil)
|
35
35
|
@address ||= opts.fetch(:address, nil)
|
36
36
|
@iso_code ||= opts.fetch(:iso_code, nil)
|
data/lib/macker/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: macker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Egon Zemmer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -79,7 +79,7 @@ files:
|
|
79
79
|
- LICENSE.txt
|
80
80
|
- README.md
|
81
81
|
- Rakefile
|
82
|
-
- data/
|
82
|
+
- data/oui_1499162218.txt
|
83
83
|
- lib/macker.rb
|
84
84
|
- lib/macker/address.rb
|
85
85
|
- lib/macker/config.rb
|