ipcat 2.0.6 → 2.0.7

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: 21e54956ca41119389b62903d6872e7dce742272
4
- data.tar.gz: 3d56004a1f23edcd06cd9f31dcf16d538217a433
3
+ metadata.gz: 504383114dd0844a4a5f91ebb4afa296fe098003
4
+ data.tar.gz: f818cb7072a8c8882198751871283a91ddc1cdca
5
5
  SHA512:
6
- metadata.gz: 9de9057240544f1235e4e8d3bb6c6bf4dccde402149e00935b3e18992c9b39c1f8467e4634f448a00c5a1fa10d0f3ad0a4d8a173d990c7e7ff21b9c784447c2f
7
- data.tar.gz: 991115aea5bc04680de0370c281098c3ec63756382b714ae17848c333f960c118fb7a7c3356baeea7cbcf0e8dfa961b74c9f1f61aea72fa2b324b5425e0d576e
6
+ metadata.gz: 1aed19167372bb4b8d18e035783ee8d0130c2ed50791e708cec1add11310825a18a215f009ef1ecbef20201001799684a4a07f153ba0111e9fd6b20d2f073d2c
7
+ data.tar.gz: 981cb897772de0aa94732fc3caf968b289879e2b82016e7a9ef350b0b9eed103b33fd5f8fbf2e9dce13afca439a940e5a63cdc43ce02494e2afc051927ffb7e2
data/Rakefile CHANGED
@@ -1,35 +1,34 @@
1
- require "rubygems"
2
- require "bundler/setup"
3
- require "bundler/gem_tasks"
4
- require "rake/testtask"
1
+ # frozen_string_literal: true
5
2
 
6
- $:.unshift './lib'
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+ require 'bundler/gem_tasks'
6
+ require 'rake/testtask'
7
+
8
+ $LOAD_PATH.unshift './lib'
7
9
  require 'ipcat'
8
10
  Rake::TestTask.new do |t|
9
- t.pattern = "spec/*_spec.rb"
11
+ t.pattern = 'spec/*_spec.rb'
10
12
  end
11
13
 
12
- task :default => :test
14
+ task default: :test
13
15
 
14
16
  desc 'Regenerate data/datacenters'
15
17
  task :generate_dataset do
16
-
17
- $:.unshift './lib'
18
+ $LOAD_PATH.unshift './lib'
18
19
  require 'ipcat'
19
20
  IPCat.load_csv!
20
- File.open("data/datacenters", 'w') {|f| f << Marshal.dump(IPCat.ranges) }
21
+ File.open('data/datacenters', 'w') { |f| f << Marshal.dump(IPCat.ranges) }
21
22
  end
22
23
 
23
- desc "Run benchmark"
24
+ desc 'Run benchmark'
24
25
  task :bench do
25
-
26
26
  require 'benchmark'
27
27
  # random ips
28
- ips = 100_000.times.map{ rand(2**32) }
28
+ ips = Array.new(100_000) { rand(2**32) }
29
29
  Benchmark.bm do |x|
30
- x.report("IPCat.bsearch (100k)") {
30
+ x.report('IPCat.bsearch (100k)') do
31
31
  ips.each { |ip| IPCat.bsearch(ip) }
32
- }
33
-
32
+ end
34
33
  end
35
34
  end
Binary file
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ##
2
4
  # IPCat
3
5
  # Ruby lib for https://github.com/client9/ipcat/
@@ -6,13 +8,12 @@ require 'ipaddr'
6
8
  require 'ipcat/iprange'
7
9
  require 'ipcat/version'
8
10
 
9
-
10
11
  class IPCat
11
12
  class << self
12
13
  def datacenter?(ip)
13
14
  bsearch(ip_to_integer(ip))
14
15
  end
15
- alias_method :classify, :datacenter?
16
+ alias classify datacenter?
16
17
 
17
18
  def ip_to_integer(ip)
18
19
  Integer === ip ? ip : IPAddr.new(ip).to_i
@@ -26,15 +27,15 @@ class IPCat
26
27
  @ranges = new_ranges
27
28
  end
28
29
 
29
- def load_csv!(path='https://raw.github.com/client9/ipcat/master/datacenters.csv')
30
+ def load_csv!(path = 'https://raw.github.com/client9/ipcat/master/datacenters.csv')
30
31
  reset_ranges!
31
32
 
32
33
  require 'open-uri'
33
34
  open(path).readlines.each do |line|
34
35
  first, last, name, url = line.split(',')
35
- self.ranges << IPRange.new(first, last, name, url).freeze
36
+ ranges << IPRange.new(first, last, name, url).freeze
36
37
  end
37
- self.ranges.freeze
38
+ ranges.freeze
38
39
  end
39
40
 
40
41
  def load!
@@ -50,15 +51,15 @@ class IPCat
50
51
  end
51
52
 
52
53
  # Assume ranges is an array of comparable objects
53
- def bsearch(needle, haystack=ranges, first=0, last=ranges.size-1)
54
+ def bsearch(needle, haystack = ranges, first = 0, last = ranges.size - 1)
54
55
  return nil if last < first # not found, or empty range
55
56
 
56
- cur = first + (last - first)/2
57
+ cur = first + (last - first) / 2
57
58
  case haystack[cur] <=> needle
58
59
  when -1 # needle is larger than cur value
59
- bsearch(needle, haystack, cur+1, last)
60
+ bsearch(needle, haystack, cur + 1, last)
60
61
  when 1 # needle is smaller than cur value
61
- bsearch(needle, haystack, first, cur-1)
62
+ bsearch(needle, haystack, first, cur - 1)
62
63
  when 0
63
64
  haystack[cur]
64
65
  end
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class IPCat
2
4
  class IPRange
3
-
4
5
  attr_accessor :first, :last, :name, :url
5
6
 
6
- def initialize(first, last, name=nil, url=nil)
7
+ def initialize(first, last, name = nil, url = nil)
7
8
  @first = IPCat.ip_to_integer(first)
8
9
  @last = IPCat.ip_to_integer(last)
9
- @name, @url = name, url
10
- raise ArgumentError.new("first must be <= last") if @first > @last
10
+ @name = name
11
+ @url = url
12
+ raise ArgumentError, 'first must be <= last' if @first > @last
11
13
  end
12
14
 
13
15
  def <=>(obj)
@@ -21,6 +23,7 @@ class IPCat
21
23
  end
22
24
 
23
25
  protected
26
+
24
27
  def compare_with_integer(i)
25
28
  if first > i
26
29
  1
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class IPCat
2
- VERSION = '2.0.6'
4
+ VERSION = '2.0.7'
3
5
  end
@@ -1,11 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'spec_helper'
2
4
  require 'minitest/benchmark'
3
5
 
4
6
  describe 'IPCat.bsearch Benchmark' do
5
-
6
7
  # Makes +n+ IPRanges
7
8
  def make_ranges(n)
8
- ips = (n*2).times.map{ rand(2**32) }.sort
9
+ ips = Array.new((n * 2)) { rand(2**32) }.sort
9
10
  ranges = []
10
11
  ips.each_slice(2) do |first, last|
11
12
  ranges << IPCat::IPRange.new(first, last)
@@ -15,20 +16,18 @@ describe 'IPCat.bsearch Benchmark' do
15
16
  end
16
17
 
17
18
  before do
18
- @ips = 1000.times.map{ rand(2**32) }
19
- @ranges = bench_range.inject({}) {|h, n|
19
+ @ips = Array.new(1000) { rand(2**32) }
20
+ @ranges = bench_range.each_with_object({}) do |n, h|
20
21
  h[n] = make_ranges(n)
21
- h
22
- }
22
+ end
23
23
  end
24
24
 
25
- it("should be logarithmic") do
25
+ it('should be logarithmic') do
26
26
  assert_performance_logarithmic 0.95 do |n|
27
27
  IPCat.reset_ranges!(@ranges[n])
28
- @ips.each { |ip|
28
+ @ips.each do |ip|
29
29
  10.times { IPCat.bsearch(ip) }
30
- }
30
+ end
31
31
  end
32
32
  end
33
-
34
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'spec_helper'
2
4
 
3
5
  describe 'IPCat::IPRange' do
@@ -11,16 +13,15 @@ describe 'IPCat::IPRange' do
11
13
  end
12
14
 
13
15
  describe '#initialize' do
14
- it "should fail if last < first" do
15
- ->{ IPCat::IPRange.new(2, 1) }.must_raise ArgumentError
16
+ it 'should fail if last < first' do
17
+ -> { IPCat::IPRange.new(2, 1) }.must_raise ArgumentError
16
18
  end
17
19
  end
18
20
 
19
21
  describe '#<=> for integers' do
20
- it("should match first") { (range <=> range.first).must_equal 0 }
21
- it("should match last") { (range <=> range.last).must_equal 0 }
22
- it("should match first-1") { (range <=> range.first - 1).must_equal 1 }
23
- it("should match last+1") { (range <=> range.last + 1).must_equal(-1) }
22
+ it('should match first') { (range <=> range.first).must_equal 0 }
23
+ it('should match last') { (range <=> range.last).must_equal 0 }
24
+ it('should match first-1') { (range <=> range.first - 1).must_equal 1 }
25
+ it('should match last+1') { (range <=> range.last + 1).must_equal(-1) }
24
26
  end
25
27
  end
26
-
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'spec_helper'
2
4
 
3
5
  describe 'IPCat' do
4
-
5
6
  before do
6
7
  IPCat.reset_ranges!
7
8
  start = IPAddr.new('1.2.3.0').to_i
@@ -10,15 +11,14 @@ describe 'IPCat' do
10
11
  end
11
12
 
12
13
  describe '#ranges' do
13
- it("has a range") { IPCat.ranges.size.must_equal 1 }
14
+ it('has a range') { IPCat.ranges.size.must_equal 1 }
14
15
  end
15
16
 
16
17
  describe '#datacenter?' do
17
- it("should match 1.2.3.0") { IPCat.datacenter?('1.2.3.0').must_be_instance_of IPCat::IPRange }
18
- it("should match 1.2.3.1") { IPCat.datacenter?('1.2.3.1').must_be_instance_of IPCat::IPRange }
19
- it("should match 1.2.3.1") { IPCat.datacenter?('1.2.3.1').must_be_instance_of IPCat::IPRange }
20
- it("should not match 1.1.1.1") { IPCat.datacenter?('1.1.1.1').must_be_nil }
21
- it("should not match 2.2.2.2") { IPCat.datacenter?('2.2.2.2').must_be_nil }
18
+ it('should match 1.2.3.0') { IPCat.datacenter?('1.2.3.0').must_be_instance_of IPCat::IPRange }
19
+ it('should match 1.2.3.1') { IPCat.datacenter?('1.2.3.1').must_be_instance_of IPCat::IPRange }
20
+ it('should match 1.2.3.1') { IPCat.datacenter?('1.2.3.1').must_be_instance_of IPCat::IPRange }
21
+ it('should not match 1.1.1.1') { IPCat.datacenter?('1.1.1.1').must_be_nil }
22
+ it('should not match 2.2.2.2') { IPCat.datacenter?('2.2.2.2').must_be_nil }
22
23
  end
23
-
24
24
  end
@@ -1,7 +1,9 @@
1
- require "rubygems"
2
- require "bundler/setup"
1
+ # frozen_string_literal: true
3
2
 
4
- require "minitest/autorun"
5
- require "minitest/pride"
3
+ require 'rubygems'
4
+ require 'bundler/setup'
6
5
 
7
- require "ipcat"
6
+ require 'minitest/autorun'
7
+ require 'minitest/pride'
8
+
9
+ require 'ipcat'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipcat
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: 2.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Suggs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-27 00:00:00.000000000 Z
11
+ date: 2017-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  requirements: []
76
76
  rubyforge_project:
77
- rubygems_version: 2.5.1
77
+ rubygems_version: 2.6.11
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: dataset for categorizing IP addresses in ruby