arin-whois 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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