ipaddr_range_set 0.10.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +5 -0
- data/README.md +4 -1
- data/lib/ipaddr_range_set.rb +7 -2
- data/lib/ipaddr_range_set/version.rb +1 -1
- data/test/test_ip_addr_range_set.rb +8 -4
- metadata +8 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ec00c0b3c751451810209932ce2bed617eff7a32
|
4
|
+
data.tar.gz: 23d123fe53c6a1b4cf20a49d1677120e3a7d2b54
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eaaa198ba4f8279dd5e7fc695a897dc0133f95081f38f71a9a9cb55105498ab638ee691e0068277d65a0ea73b26172047503106a7317715eefb624b925256fa0
|
7
|
+
data.tar.gz: ae0e7544efef39c72de76941a42f3fda1c92c86ab468aed2c98ca9fdff98d34894916f654e437d009fb1caefd37ffcc57f1a29a7e28d79d6f291df621056b627
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
ipaddr_range_set
|
2
2
|
================
|
3
|
+
[![Build Status](https://travis-ci.org/jrochkind/ipaddr_range_set.png)](https://travis-ci.org/jrochkind/ipaddr_range_set)
|
4
|
+
|
5
|
+
|
3
6
|
|
4
7
|
convenience class to create a set of possibly discontiguous IP address range
|
5
8
|
segments, and check if an IP address is in the set. ruby 1.9.3+ only.
|
@@ -93,4 +96,4 @@ is done (should it be? I have no idea, don't really understand ipv6 use cases).
|
|
93
96
|
## thanks
|
94
97
|
|
95
98
|
to whoever wrote IPAddr in ruby stdlib, nice to have it, this is just a
|
96
|
-
convenience wrapper over it, really.
|
99
|
+
convenience wrapper over it, really.
|
data/lib/ipaddr_range_set.rb
CHANGED
@@ -3,6 +3,11 @@ require "ipaddr_range_set/version"
|
|
3
3
|
require 'ipaddr'
|
4
4
|
|
5
5
|
class IPAddrRangeSet
|
6
|
+
# In ruby 2.0, they introduced IPAddr::InvalidAddressError, before
|
7
|
+
# that it was just ArgumentError. Let's throw it if we've got it
|
8
|
+
# to be consistent.
|
9
|
+
ArgErrorClass = (defined? IPAddr::InvalidAddressError) ? IPAddr::InvalidAddressError : ArgumentError
|
10
|
+
|
6
11
|
|
7
12
|
# Zero or more segment arguments, which can be input in a variety of
|
8
13
|
# of formats.
|
@@ -52,7 +57,7 @@ class IPAddrRangeSet
|
|
52
57
|
octets = segment.split('.')
|
53
58
|
|
54
59
|
if (octets.rindex {|o| o =~ /\d+/}) > octets.rindex("*")
|
55
|
-
raise
|
60
|
+
raise ArgErrorClass.new("Invalid splat range, all *s have to come before all concrete octets")
|
56
61
|
end
|
57
62
|
|
58
63
|
splats = 0
|
@@ -85,7 +90,7 @@ class IPAddrRangeSet
|
|
85
90
|
segments.each do |segment|
|
86
91
|
# important to use cover? and not include? on Ranges, to avoid
|
87
92
|
# terribly inefficient check. But if segment is an IPAddr, you want include?
|
88
|
-
if segment.respond_to?(:cover)
|
93
|
+
if segment.respond_to?(:cover?)
|
89
94
|
return true if segment.cover? ip_addr
|
90
95
|
else
|
91
96
|
return true if segment.include? ip_addr
|
@@ -75,15 +75,19 @@ class TestIpAddrRange < Test::Unit::TestCase
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def test_bad_input
|
78
|
-
|
78
|
+
# ruby 2.0 IPAddr::InvalidAddressError is a subclass of ArgumentError,
|
79
|
+
# but minitest assert_raise insists on exact kind
|
80
|
+
exception_class = (defined? IPAddr::InvalidAddressError) ? IPAddr::InvalidAddressError : ArgumentError
|
81
|
+
|
82
|
+
assert_raise(exception_class) { IPAddrRangeSet.new("foo")}
|
79
83
|
|
80
|
-
assert_raise(
|
84
|
+
assert_raise(exception_class) { IPAddrRangeSet.new("124.*")}
|
81
85
|
|
82
86
|
# splats have to be at end
|
83
|
-
assert_raise(
|
87
|
+
assert_raise(exception_class) { IPAddrRangeSet.new("124.*.1.1")}
|
84
88
|
|
85
89
|
# Not a valid ipv4, make sure we catch it on ranges
|
86
|
-
assert_raise(
|
90
|
+
assert_raise(exception_class) { IPAddrRangeSet.new("124.999.1.1".."125.0.0.1") }
|
87
91
|
end
|
88
92
|
|
89
93
|
def test_multi_arg
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipaddr_range_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jonathan Rochkind
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description:
|
15
14
|
email:
|
@@ -18,6 +17,7 @@ executables: []
|
|
18
17
|
extensions: []
|
19
18
|
extra_rdoc_files: []
|
20
19
|
files:
|
20
|
+
- .travis.yml
|
21
21
|
- Gemfile
|
22
22
|
- README.md
|
23
23
|
- Rakefile
|
@@ -27,29 +27,27 @@ files:
|
|
27
27
|
- test/test_ip_addr_range_set.rb
|
28
28
|
homepage: https://github.com/jrochkind/ipaddr_range_set
|
29
29
|
licenses: []
|
30
|
+
metadata: {}
|
30
31
|
post_install_message:
|
31
32
|
rdoc_options: []
|
32
33
|
require_paths:
|
33
34
|
- lib
|
34
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
36
|
requirements:
|
37
|
-
- -
|
37
|
+
- - '>='
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
41
|
requirements:
|
43
|
-
- -
|
42
|
+
- - '>='
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '0'
|
46
45
|
requirements: []
|
47
46
|
rubyforge_project:
|
48
|
-
rubygems_version:
|
47
|
+
rubygems_version: 2.0.3
|
49
48
|
signing_key:
|
50
|
-
specification_version:
|
49
|
+
specification_version: 4
|
51
50
|
summary: convenience class to create a set of possibly discontiguous IP address range
|
52
51
|
segments, and check if an IP address is in the set.
|
53
52
|
test_files:
|
54
53
|
- test/test_ip_addr_range_set.rb
|
55
|
-
has_rdoc:
|