arin-whois 1.1.0 → 1.2.0

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.
data/Gemfile CHANGED
@@ -3,8 +3,8 @@ gem 'rest-client'
3
3
  gem 'hashie'
4
4
 
5
5
  group :development do
6
- gem "rspec", "~> 2.3.0"
7
- gem "bundler", "~> 1.0.0"
6
+ gem "rspec", "~> 2.8.0"
7
+ gem "bundler"
8
8
  gem "jeweler", "~> 1.6.0"
9
9
  gem "simplecov", ">= 0"
10
10
  end
@@ -13,14 +13,14 @@ GEM
13
13
  rake (0.9.2.2)
14
14
  rest-client (1.6.7)
15
15
  mime-types (>= 1.16)
16
- rspec (2.3.0)
17
- rspec-core (~> 2.3.0)
18
- rspec-expectations (~> 2.3.0)
19
- rspec-mocks (~> 2.3.0)
20
- rspec-core (2.3.1)
21
- rspec-expectations (2.3.0)
16
+ rspec (2.8.0)
17
+ rspec-core (~> 2.8.0)
18
+ rspec-expectations (~> 2.8.0)
19
+ rspec-mocks (~> 2.8.0)
20
+ rspec-core (2.8.0)
21
+ rspec-expectations (2.8.0)
22
22
  diff-lcs (~> 1.1.2)
23
- rspec-mocks (2.3.0)
23
+ rspec-mocks (2.8.0)
24
24
  simplecov (0.6.1)
25
25
  multi_json (~> 1.0)
26
26
  simplecov-html (~> 0.5.3)
@@ -30,9 +30,9 @@ PLATFORMS
30
30
  ruby
31
31
 
32
32
  DEPENDENCIES
33
- bundler (~> 1.0.0)
33
+ bundler
34
34
  hashie
35
35
  jeweler (~> 1.6.0)
36
36
  rest-client
37
- rspec (~> 2.3.0)
37
+ rspec (~> 2.8.0)
38
38
  simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "arin-whois"
8
- s.version = "1.1.0"
8
+ s.version = "1.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ian Morgan"]
12
- s.date = "2012-04-10"
12
+ s.date = "2012-07-25"
13
13
  s.description = "Ruby wrapper for ARIN's REST interface to whois/POC data"
14
14
  s.email = "ian@ruby-code.com"
15
15
  s.extra_rdoc_files = [
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.homepage = "http://github.com/seeingidog/arin-whois"
34
34
  s.licenses = ["MIT"]
35
35
  s.require_paths = ["lib"]
36
- s.rubygems_version = "1.8.10"
36
+ s.rubygems_version = "1.8.24"
37
37
  s.summary = "Ruby wrapper for ARIN's REST interface to whois/POC data"
38
38
 
39
39
  if s.respond_to? :specification_version then
@@ -42,23 +42,23 @@ Gem::Specification.new do |s|
42
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
43
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
44
44
  s.add_runtime_dependency(%q<hashie>, [">= 0"])
45
- s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
46
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
45
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
46
+ s.add_development_dependency(%q<bundler>, [">= 0"])
47
47
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
48
48
  s.add_development_dependency(%q<simplecov>, [">= 0"])
49
49
  else
50
50
  s.add_dependency(%q<rest-client>, [">= 0"])
51
51
  s.add_dependency(%q<hashie>, [">= 0"])
52
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
53
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
52
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
53
+ s.add_dependency(%q<bundler>, [">= 0"])
54
54
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
55
55
  s.add_dependency(%q<simplecov>, [">= 0"])
56
56
  end
57
57
  else
58
58
  s.add_dependency(%q<rest-client>, [">= 0"])
59
59
  s.add_dependency(%q<hashie>, [">= 0"])
60
- s.add_dependency(%q<rspec>, ["~> 2.3.0"])
61
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
61
+ s.add_dependency(%q<bundler>, [">= 0"])
62
62
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
63
63
  s.add_dependency(%q<simplecov>, [">= 0"])
64
64
  end
@@ -8,51 +8,59 @@ module ARIN
8
8
  RestClient::Resource.new 'http://whois.arin.net/rest'
9
9
  end
10
10
 
11
+ def self.get_resource(rootel, query)
12
+ begin
13
+ resource["#{rootel}/#{query}.json"].get
14
+ rescue RestClient::ResourceNotFound
15
+ raise RecordNotFound
16
+ end
17
+ end
18
+
11
19
  def self.parse_and_objectify(rootel, query)
12
- Hashie::Mash.new(JSON.parse(resource["#{rootel}/#{query}.json"].get)[rootel])
20
+ Hashie::Mash.new(JSON.parse(get_resource(rootel, query))[rootel])
21
+ end
22
+
23
+ def self.root_element(classname)
24
+ classname.split('::').last.downcase
13
25
  end
14
26
  end
15
27
 
28
+ class RecordNotFound < StandardError
29
+ end
30
+
16
31
  class POC < Base
17
-
18
32
  def self.find(query)
19
- rootel = 'poc'
20
- parse_and_objectify(rootel, query)
33
+ parse_and_objectify(root_element(self.name), query)
21
34
  end
22
35
  end
23
36
 
24
37
  class Org < Base
25
38
  def self.find(query)
26
- rootel = 'org'
27
- parse_and_objectify(rootel, query)
39
+ parse_and_objectify(root_element(self.name), query)
28
40
  end
29
41
  end
30
42
 
31
43
  class Net < Base
32
44
  def self.find(query)
33
- rootel = 'net'
34
- parse_and_objectify(rootel, query)
45
+ parse_and_objectify(root_element(self.name), query)
35
46
  end
36
47
  end
37
48
 
38
49
  class ASN < Base
39
50
  def self.find(query)
40
- rootel = 'asn'
41
- parse_and_objectify(rootel, query)
51
+ parse_and_objectify(root_element(self.name), query)
42
52
  end
43
53
  end
44
54
 
45
55
  class Customer < Base
46
56
  def self.find(query)
47
- rootel = 'customer'
48
- parse_and_objectify(rootel, query)
57
+ parse_and_objectify(root_element(self.name), query)
49
58
  end
50
59
  end
51
60
 
52
61
  class Rdns < Base
53
62
  def self.find(query)
54
- rootel = 'rdns'
55
- parse_and_objectify(rootel, query)
63
+ parse_and_objectify(root_element(self.name), query)
56
64
  end
57
65
  end
58
66
  end
@@ -4,4 +4,12 @@ describe "ArinWhois" do
4
4
  it "should query ARIN for an AS number result" do
5
5
  ARIN::ASN.find(32244).name.values.first.should == "LIQUID-WEB-INC"
6
6
  end
7
+
8
+ it "should query for org records" do
9
+ ARIN::Org.find("LQWB").name.values.first.should == "Liquid Web, Inc."
10
+ end
11
+
12
+ it "should return a not found error for a 404" do
13
+ lambda {ARIN::Org.find("LQWBZZZ")}.should raise_error ARIN::RecordNotFound
14
+ end
7
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arin-whois
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-10 00:00:00.000000000Z
12
+ date: 2012-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &2161783680 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2161783680
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: hashie
27
- requirement: &2161782740 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,32 +37,47 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2161782740
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec
38
- requirement: &2161781560 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
42
52
  - !ruby/object:Gem::Version
43
- version: 2.3.0
53
+ version: 2.8.0
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *2161781560
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.8.0
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: bundler
49
- requirement: &2161780740 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
- - - ~>
67
+ - - ! '>='
53
68
  - !ruby/object:Gem::Version
54
- version: 1.0.0
69
+ version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *2161780740
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: jeweler
60
- requirement: &2161779680 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ~>
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 1.6.0
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2161779680
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.6.0
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: simplecov
71
- requirement: &2161778020 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2161778020
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  description: Ruby wrapper for ARIN's REST interface to whois/POC data
81
111
  email: ian@ruby-code.com
82
112
  executables: []
@@ -112,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
142
  version: '0'
113
143
  segments:
114
144
  - 0
115
- hash: -4322084907860887839
145
+ hash: -4094311308806368107
116
146
  required_rubygems_version: !ruby/object:Gem::Requirement
117
147
  none: false
118
148
  requirements:
@@ -121,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
151
  version: '0'
122
152
  requirements: []
123
153
  rubyforge_project:
124
- rubygems_version: 1.8.10
154
+ rubygems_version: 1.8.24
125
155
  signing_key:
126
156
  specification_version: 3
127
157
  summary: Ruby wrapper for ARIN's REST interface to whois/POC data