whois 3.3.0 → 3.3.1

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/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## Release 3.3.1
5
+
6
+ - SERVER: Updated .KR, .ES (GH-267) TLD definitions.
7
+
8
+ - NEW: Added whois.nic.es parser (GH-267). [Thanks @takama]
9
+
10
+ - NEW: Added whois.gandi.net parser (GH-261). [Thanks @takama]
11
+
12
+ - CHANGED: Updated whois.enom.com parsers to the new response format (GH-269). [Thanks @takama]
13
+
14
+
4
15
  ## Release 3.3.0
5
16
 
6
17
  - SERVER: Added .CF TLD definition.
data/data/tld.json CHANGED
@@ -422,9 +422,7 @@
422
422
  "adapter": "none"
423
423
  },
424
424
  ".es": {
425
- "host": null,
426
- "adapter": "web",
427
- "url": "https://www.nic.es/"
425
+ "host": "whois.nic.es"
428
426
  },
429
427
  ".et": {
430
428
  "host": null,
@@ -657,7 +655,7 @@
657
655
  "adapter": "none"
658
656
  },
659
657
  ".kr": {
660
- "host": "whois.nic.or.kr"
658
+ "host": "whois.kr"
661
659
  },
662
660
  ".kw": {
663
661
  "host": null,
data/lib/whois/errors.rb CHANGED
@@ -125,7 +125,6 @@ module Whois
125
125
 
126
126
  # Raised when attempting to access a property when the response is unavailable.
127
127
  #
128
- # @since 2.0.3
129
128
  # @see Whois::Record::Parser::Base#response_unavailable?
130
129
  class ResponseIsUnavailable < ResponseError
131
130
  end
@@ -0,0 +1,144 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/parser/base'
11
+ require 'whois/record/scanners/base_icann_compliant'
12
+
13
+
14
+ module Whois
15
+ class Record
16
+ class Parser
17
+
18
+ # Base parser for ICANN Compliant servers.
19
+ #
20
+ # @see http://www.icann.org/en/resources/registrars/raa/approved-with-specs-27jun13-en.htm#whois
21
+ #
22
+ # @author Simone Carletti
23
+ # @author Igor Dolzhikov <bluesriverz@gmail.com>
24
+ #
25
+
26
+ class BaseIcannCompliant < Base
27
+ include Scanners::Scannable
28
+
29
+ self.scanner = Scanners::BaseIcannCompliant
30
+
31
+
32
+ property_supported :domain do
33
+ node('domain:name', &:downcase)
34
+ end
35
+
36
+ property_supported :domain_id do
37
+ node('Registry Domain ID')
38
+ end
39
+
40
+
41
+ property_supported :status do
42
+ status = Array.wrap(node('Domain Status'))
43
+ if status.empty?
44
+ if available?
45
+ :available
46
+ else
47
+ :registered
48
+ end
49
+ end
50
+ end
51
+
52
+ property_supported :available? do
53
+ !!node('status:available')
54
+ end
55
+
56
+ property_supported :registered? do
57
+ !available?
58
+ end
59
+
60
+
61
+ property_supported :created_on do
62
+ node('Creation Date') do |value|
63
+ Time.parse(value)
64
+ end
65
+ end
66
+
67
+ property_supported :updated_on do
68
+ node('Updated Date') do |value|
69
+ Time.parse(value)
70
+ end
71
+ end
72
+
73
+ property_supported :expires_on do
74
+ node('Registrar Registration Expiration Date') do |value|
75
+ Time.parse(value)
76
+ end
77
+ end
78
+
79
+
80
+ property_supported :registrar do
81
+ return unless node('Registrar')
82
+ Record::Registrar.new(
83
+ id: node('Registrar IANA ID'),
84
+ name: node('Registrar'),
85
+ organization: node('Registrar'),
86
+ url: node('Registrar URL'),
87
+ )
88
+ end
89
+
90
+
91
+ property_supported :registrant_contacts do
92
+ build_contact('Registrant', Record::Contact::TYPE_REGISTRANT)
93
+ end
94
+
95
+ property_supported :admin_contacts do
96
+ build_contact('Admin', Record::Contact::TYPE_ADMINISTRATIVE)
97
+ end
98
+
99
+ property_supported :technical_contacts do
100
+ build_contact('Tech', Record::Contact::TYPE_TECHNICAL)
101
+ end
102
+
103
+
104
+ property_supported :nameservers do
105
+ Array.wrap(node('Name Server') || node('Name Servers')).reject(&:empty?).map do |name|
106
+ Nameserver.new(:name => name.downcase)
107
+ end
108
+ end
109
+
110
+
111
+ private
112
+
113
+ def build_contact(element, type)
114
+ node("#{element} Name") do
115
+ Record::Contact.new(
116
+ :type => type,
117
+ :id => node("Registry #{element} ID"),
118
+ :name => value_for_property(element, 'Name'),
119
+ :organization => value_for_property(element, 'Organization'),
120
+ :address => value_for_property(element, 'Street'),
121
+ :city => value_for_property(element, 'City'),
122
+ :zip => value_for_property(element, 'Postal Code'),
123
+ :state => value_for_property(element, 'State/Province'),
124
+ :country_code => value_for_property(element, 'Country'),
125
+ :phone => [ value_for_property(element, 'Phone'),
126
+ value_for_property(element, 'Phone Ext')
127
+ ].reject(&:empty?).join(' ext: '),
128
+ :fax => [ value_for_property(element, 'Fax'),
129
+ value_for_property(element, 'Fax Ext')
130
+ ].reject(&:empty?).join(' ext: '),
131
+ :email => value_for_property(element, 'Email')
132
+ )
133
+ end
134
+ end
135
+
136
+ def value_for_property(element, property)
137
+ Array.wrap(node("#{element} #{property}")).reject(&:empty?).join(', ')
138
+ end
139
+
140
+ end
141
+
142
+ end
143
+ end
144
+ end
@@ -19,7 +19,6 @@ module Whois
19
19
  # @see Whois::Record::Parser::Example
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
- # @since 2.4.0
23
22
  class WhoisDreamhostCom < Base
24
23
 
25
24
  property_not_supported :status
@@ -7,7 +7,7 @@
7
7
  #++
8
8
 
9
9
 
10
- require 'whois/record/parser/base'
10
+ require 'whois/record/parser/base_icann_compliant'
11
11
 
12
12
 
13
13
  module Whois
@@ -15,108 +15,7 @@ module Whois
15
15
  class Parser
16
16
 
17
17
  # Parser for the whois.enom.com server.
18
- #
19
- # @note This parser is just a stub and provides only a few basic methods
20
- # to check for domain availability and get domain status.
21
- # Please consider to contribute implementing missing methods.
22
- #
23
- # @see Whois::Record::Parser::Example
24
- # The Example parser for the list of all available methods.
25
- #
26
- # @since 2.5.0
27
- class WhoisEnomCom < Base
28
-
29
- property_not_supported :status
30
-
31
- # The server is contacted only in case of a registered domain.
32
- property_supported :available? do
33
- false
34
- end
35
-
36
- property_supported :registered? do
37
- true
38
- end
39
-
40
-
41
- property_supported :created_on do
42
- if content_for_scanner =~ /Creation date: (.+)\n/
43
- Time.parse($1)
44
- end
45
- end
46
-
47
- property_not_supported :updated_on
48
-
49
- property_supported :expires_on do
50
- if content_for_scanner =~ /Expiration date: (.+)\n/
51
- Time.parse($1)
52
- end
53
- end
54
-
55
-
56
- property_supported :registrar do
57
- Record::Registrar.new(
58
- :name => "eNom Inc.",
59
- :url => "http://www.enom.com/"
60
- )
61
- end
62
-
63
- property_supported :registrant_contacts do
64
- build_contact("Registrant Contact", Record::Contact::TYPE_REGISTRANT)
65
- end
66
-
67
- property_supported :admin_contacts do
68
- build_contact("Administrative Contact", Record::Contact::TYPE_ADMINISTRATIVE)
69
- end
70
-
71
- property_supported :technical_contacts do
72
- build_contact("Technical Contact", Record::Contact::TYPE_TECHNICAL)
73
- end
74
-
75
-
76
- property_supported :nameservers do
77
- if content_for_scanner =~ /Name Servers:\n((\s+[^\s]+\n)+)/
78
- $1.split("\n").map do |line|
79
- Record::Nameserver.new(:name => line.strip)
80
- end
81
- end
82
- end
83
-
84
-
85
- private
86
-
87
- def build_contact(element, type)
88
- match = content_for_scanner.slice(/#{element}:\n((.+\n)+)/, 1)
89
- return unless match
90
-
91
- # 0 AdBrite, Inc.
92
- # 1 Host Master (hostmaster@adbrite.com)
93
- # 2 4159750916
94
- # 3 Fax:
95
- # 4 731 Market Street, Suite 500
96
- # 5 San Francisco, CA 94103
97
- # 6 US
98
-
99
- lines = match.split("\n").map(&:lstrip)
100
- name, email = lines[1].match(/(.*)\((.*)\)/)[1..2].map(&:strip)
101
- fax = lines[3].match(/Fax: (.*)/)[1]
102
- city, state, zip = lines[-2].match(/(.*),(.+?)(\d*)$/)[1..3].map(&:strip)
103
-
104
- Record::Contact.new(
105
- :type => type,
106
- :id => nil,
107
- :name => name,
108
- :organization => lines[0],
109
- :address => lines[4..-3].join("\n"),
110
- :city => city,
111
- :zip => zip,
112
- :state => state,
113
- :country_code => lines[-1],
114
- :phone => lines[2],
115
- :fax => fax,
116
- :email => email
117
- )
118
- end
119
-
18
+ class WhoisEnomCom < BaseIcannCompliant
120
19
  end
121
20
 
122
21
  end
@@ -0,0 +1,139 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/parser/base'
11
+ require 'whois/record/scanners/whois.gandi.net'
12
+
13
+
14
+ module Whois
15
+ class Record
16
+ class Parser
17
+
18
+ # Parser for the whois.gandi.net server.
19
+ #
20
+ # @see Whois::Record::Parser::Example
21
+ # The Example parser for the list of all available methods.
22
+ #
23
+ # @author Simone Carletti
24
+ # @author Igor Dolzhikov <bluesriverz@gmail.com>
25
+ #
26
+ class WhoisGandiNet < Base
27
+ include Scanners::Scannable
28
+
29
+ self.scanner = Scanners::WhoisGandiNet
30
+
31
+
32
+ property_supported :disclaimer do
33
+ node("field:disclaimer")
34
+ end
35
+
36
+
37
+ property_supported :domain do
38
+ node("domain")
39
+ end
40
+
41
+ property_not_supported :domain_id
42
+
43
+
44
+ property_supported :status do
45
+ if available?
46
+ :available
47
+ else
48
+ :registered
49
+ end
50
+ end
51
+
52
+ property_supported :available? do
53
+ !!node("status:available")
54
+ end
55
+
56
+ property_supported :registered? do
57
+ !available?
58
+ end
59
+
60
+
61
+ property_supported :created_on do
62
+ node("created") { |str| Time.parse(str) }
63
+ end
64
+
65
+ property_supported :updated_on do
66
+ node("changed") { |str| Time.parse(str) }
67
+ end
68
+
69
+ property_supported :expires_on do
70
+ node("expires") { |str| Time.parse(str) }
71
+ end
72
+
73
+
74
+ property_supported :registrar do
75
+ Record::Registrar.new(
76
+ :name => 'GANDI Registrar',
77
+ :organization => 'GANDI Registrar',
78
+ )
79
+ end
80
+
81
+
82
+ property_supported :registrant_contacts do
83
+ build_contact("owner-c", Whois::Record::Contact::TYPE_REGISTRANT)
84
+ end
85
+
86
+ property_supported :admin_contacts do
87
+ build_contact("admin-c", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
88
+ end
89
+
90
+ property_supported :technical_contacts do
91
+ build_contact("tech-c", Whois::Record::Contact::TYPE_TECHNICAL)
92
+ end
93
+
94
+
95
+ property_supported :nameservers do
96
+ content_for_scanner.scan(/^ns\d{1}:\s(.*)/).flatten.map do |line|
97
+ name, ipv4 = line.strip.split(" ")
98
+ Record::Nameserver.new(:name => name.downcase, :ipv4 => ipv4)
99
+ end
100
+ end
101
+
102
+
103
+ private
104
+
105
+ def build_contact(element, type)
106
+ match = content_for_scanner.slice(/#{element}:\n((\s\s.+\n)*)/, 1)
107
+ return unless match
108
+
109
+ # nic-hdl: NG270-GANDI
110
+ # organisation: GANDI SAS
111
+ # person: NOC GANDI
112
+ # address: 63-65 Boulevard MASSENA
113
+ # zipcode: 75013
114
+ # city: Paris
115
+ # country: France
116
+ # phone: +33.143737851
117
+ # fax: +33.143731851
118
+ # email: 12e7da77f638acdf8d9f4d0b828ca80c-248842@contact.gandi.net
119
+ # lastupdated: 2013-04-04 15:53:42
120
+ Record::Contact.new(
121
+ :type => type,
122
+ :id => match.slice(/nic-hdl: (.*)/, 1),
123
+ :name => match.slice(/person: (.*)/, 1),
124
+ :organization => match.slice(/organisation: (.*)/, 1),
125
+ :address => match.slice(/address: (.*)/, 1),
126
+ :zip => match.slice(/zipcode: (.*)/, 1),
127
+ :city => match.slice(/city: (.*)/, 1),
128
+ :country => match.slice(/country: (.*)/, 1),
129
+ :phone => match.slice(/phone: (.*)/, 1),
130
+ :fax => match.slice(/fax: (.*)/, 1),
131
+ :email => match.slice(/email: (.*)/, 1),
132
+ :updated_on => Time.parse(match.slice(/lastupdated: (.*)/, 1)),
133
+ )
134
+ end
135
+
136
+ end
137
+ end
138
+ end
139
+ end
@@ -21,7 +21,7 @@ module Whois
21
21
  #
22
22
  # @author Simone Carletti
23
23
  # @author Tom Nicholls <tom.nicholls@oii.ox.ac.uk>
24
- # @since 2.1.0
24
+ #
25
25
  class WhoisGodaddyCom < Base
26
26
 
27
27
  property_not_supported :status
@@ -14,16 +14,14 @@ module Whois
14
14
  class Record
15
15
  class Parser
16
16
 
17
- #
18
- # = whois.kr parser
19
- #
20
17
  # Parser for the whois.kr server.
21
18
  #
22
- # NOTE: This parser is just a stub and provides only a few basic methods
23
- # to check for domain availability and get domain status.
24
- # Please consider to contribute implementing missing methods.
25
- # See WhoisNicIt parser for an explanation of all available methods
26
- # and examples.
19
+ # @note This parser is just a stub and provides only a few basic methods
20
+ # to check for domain availability and get domain status.
21
+ # Please consider to contribute implementing missing methods.
22
+ #
23
+ # @see Whois::Record::Parser::Example
24
+ # The Example parser for the list of all available methods.
27
25
  #
28
26
  class WhoisKr < Base
29
27
 
@@ -36,7 +34,7 @@ module Whois
36
34
  end
37
35
 
38
36
  property_supported :available? do
39
- !!(content_for_scanner =~ /domain name is not registered/)
37
+ !!(content_for_scanner =~ /^Above domain name is not registered to KRNIC/)
40
38
  end
41
39
 
42
40
  property_supported :registered? do
@@ -51,7 +49,7 @@ module Whois
51
49
  end
52
50
 
53
51
  property_supported :updated_on do
54
- if content_for_scanner =~ /Last updated Date\s+:\s+(.+)\n/
52
+ if content_for_scanner =~ /Last Updated Date\s+:\s+(.+)\n/
55
53
  Time.parse($1)
56
54
  end
57
55
  end
@@ -20,7 +20,7 @@ module Whois
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
22
  # @author Andrew Brampton <me@bramp.net>
23
- # @since 2.6.2
23
+ #
24
24
  class WhoisNetworksolutionsCom < Base
25
25
 
26
26
  property_not_supported :status
@@ -8,6 +8,7 @@
8
8
 
9
9
 
10
10
  require 'whois/record/parser/base_whoisd'
11
+ require 'whois/record/scanners/whois.nic.cz.rb'
11
12
 
12
13
 
13
14
  module Whois
@@ -20,12 +21,20 @@ module Whois
20
21
  # The Example parser for the list of all available methods.
21
22
  #
22
23
  class WhoisNicCz < BaseWhoisd
24
+
25
+ self.scanner = Scanners::WhoisNicCz
26
+
23
27
  self.status_mapping = {
24
28
  "paid and in zone" => :registered,
25
29
  "update prohibited" => :registered,
26
30
  "expired" => :expired,
27
31
  "to be deleted" => :expired,
28
32
  }
33
+
34
+ def response_throttled?
35
+ !!node("response:throttled")
36
+ end
37
+
29
38
  end
30
39
 
31
40
  end
@@ -0,0 +1,107 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/parser/base'
11
+
12
+
13
+ module Whois
14
+ class Record
15
+ class Parser
16
+
17
+ # Parser for the whois.nic.es server.
18
+ #
19
+ # @see Whois::Record::Parser::Example
20
+ # The Example parser for the list of all available methods.
21
+ #
22
+ class WhoisNicEs < Base
23
+
24
+ property_supported :domain do
25
+ if content_for_scanner =~ /Domain Name:\s+(.+)\n/
26
+ $1.downcase
27
+ end
28
+ end
29
+
30
+ property_not_supported :domain_id
31
+
32
+
33
+ property_supported :status do
34
+ if available?
35
+ :available
36
+ else
37
+ :registered
38
+ end
39
+ end
40
+
41
+ property_supported :available? do
42
+ !!(content_for_scanner =~ /There is no information available on the domain consulted/)
43
+ end
44
+
45
+ property_supported :registered? do
46
+ !available?
47
+ end
48
+
49
+
50
+ property_supported :created_on do
51
+ if content_for_scanner =~ /Creation Date:\s+(.+)\n/
52
+ Time.parse($1)
53
+ end
54
+ end
55
+
56
+ property_not_supported :updated_on
57
+
58
+ property_supported :expires_on do
59
+ if content_for_scanner =~ /Expiration Date:\s+(.+)\n/
60
+ Time.parse($1)
61
+ end
62
+ end
63
+
64
+
65
+ property_supported :registrar do
66
+ Record::Registrar.new(
67
+ :name => 'ES-NIC',
68
+ :organization => 'ES-NIC Delegated Internet Registry for Spain',
69
+ )
70
+ end
71
+
72
+
73
+ property_supported :registrant_contacts do
74
+ if content_for_scanner =~ /Registrant Name:\s+(.+)\n/
75
+ Record::Contact.new(
76
+ type: Whois::Record::Contact::TYPE_REGISTRANT,
77
+ id: nil,
78
+ name: $1.to_s.strip,
79
+ organization: nil,
80
+ address: nil,
81
+ city: nil,
82
+ zip: nil,
83
+ state: nil,
84
+ country: nil,
85
+ phone: nil,
86
+ fax: nil,
87
+ email: nil
88
+ )
89
+ end
90
+ end
91
+
92
+ property_not_supported :admin_contacts
93
+
94
+ property_not_supported :technical_contacts
95
+
96
+
97
+ property_supported :nameservers do
98
+ content_for_scanner.scan(/Name Server \d{1}:\s+(.+)\n/).flatten.map do |name|
99
+ Record::Nameserver.new(name: name)
100
+ end
101
+ end
102
+
103
+ end
104
+
105
+ end
106
+ end
107
+ end
@@ -19,7 +19,6 @@ module Whois
19
19
  # @see Whois::Record::Parser::Example
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
- # @since 2.6.4
23
22
  class WhoisNicFo < BaseWhoisd
24
23
 
25
24
  property_not_supported :registrar
@@ -19,7 +19,6 @@ module Whois
19
19
  # @see Whois::Record::Parser::Example
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
- # @since 2.4.0
23
22
  class WhoisNicLk < Base
24
23
 
25
24
  property_not_supported :disclaimer
@@ -19,7 +19,6 @@ module Whois
19
19
  # @see Whois::Record::Parser::Example
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
- # @since 2.6.0
23
22
  class WhoisRegistryOm < BaseShared1
24
23
  end
25
24
 
@@ -19,7 +19,6 @@ module Whois
19
19
  # @see Whois::Record::Parser::Example
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
- # @since 2.1.0
23
22
  class WhoisRegistryQa < BaseShared1
24
23
  end
25
24
 
@@ -23,7 +23,6 @@ module Whois
23
23
  # @see Whois::Record::Parser::Example
24
24
  # The Example parser for the list of all available methods.
25
25
  #
26
- # @since 2.1.0
27
26
  class WhoisTcinetRu < Base
28
27
 
29
28
  property_supported :domain do
@@ -0,0 +1,139 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/parser/base'
11
+ require 'whois/record/scanners/whois.yoursrs.com'
12
+
13
+
14
+ module Whois
15
+ class Record
16
+ class Parser
17
+
18
+ # Parser for the whois.yoursrs.com server.
19
+ #
20
+ # @see Whois::Record::Parser::Example
21
+ # The Example parser for the list of all available methods.
22
+ #
23
+ # @author Simone Carletti
24
+ # @author Igor Dolzhikov <bluesriverz@gmail.com>
25
+ # @since 3.3.0
26
+ #
27
+ class WhoisYoursrsCom < Base
28
+ include Scanners::Scannable
29
+
30
+ self.scanner = Scanners::WhoisYoursrsCom
31
+
32
+
33
+ property_supported :domain do
34
+ node("Domain Name", &:downcase)
35
+ end
36
+
37
+ property_not_supported :domain_id
38
+
39
+ property_supported :status do
40
+ Array.wrap(node("Status"))
41
+ end
42
+
43
+ property_supported :available? do
44
+ !!node("status:available")
45
+ end
46
+
47
+ property_supported :registered? do
48
+ !available?
49
+ end
50
+
51
+
52
+ property_supported :created_on do
53
+ node("Created On") do |value|
54
+ Time.parse(value)
55
+ end
56
+ end
57
+
58
+ property_supported :updated_on do
59
+ node("Last Updated On") do |value|
60
+ Time.parse(value)
61
+ end
62
+ end
63
+
64
+ property_supported :expires_on do
65
+ node("Expiration Date") do |value|
66
+ Time.parse(value)
67
+ end
68
+ end
69
+
70
+
71
+ property_supported :registrar do
72
+ node("Sponsoring Registrar") do |value|
73
+ parts = decompose_registrar(value) ||
74
+ Whois.bug!(ParserError, "Unknown registrar format `#{value}'")
75
+
76
+ Record::Registrar.new(
77
+ id: parts[0],
78
+ name: parts[1]
79
+ )
80
+ end
81
+ end
82
+
83
+ property_supported :registrant_contacts do
84
+ build_contact("Registrant", Whois::Record::Contact::TYPE_REGISTRANT)
85
+ end
86
+
87
+ property_supported :admin_contacts do
88
+ build_contact("ADMIN", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
89
+ end
90
+
91
+ property_supported :technical_contacts do
92
+ build_contact("TECH", Whois::Record::Contact::TYPE_TECHNICAL)
93
+ end
94
+
95
+
96
+ property_supported :nameservers do
97
+ Array.wrap(node("Name Server")).reject(&:empty?).map do |name|
98
+ Nameserver.new(:name => name.downcase)
99
+ end
100
+ end
101
+
102
+
103
+ private
104
+
105
+ def build_contact(element, type)
106
+ node("#{element} ID") do
107
+ address = (1..3).
108
+ map { |i| node("#{element} Street#{i}") }.
109
+ delete_if { |i| i.nil? || i.empty? }.
110
+ join("\n")
111
+
112
+ Record::Contact.new(
113
+ :type => type,
114
+ :id => node("#{element} ID"),
115
+ :name => node("#{element} Name"),
116
+ :organization => node("#{element} Organization"),
117
+ :address => address,
118
+ :city => node("#{element} City"),
119
+ :zip => node("#{element} Postal Code"),
120
+ :state => node("#{element} State"),
121
+ :country_code => node("#{element} Country"),
122
+ :phone => node("#{element} Phone"),
123
+ :fax => node("#{element} Fax"),
124
+ :email => node("#{element} Email")
125
+ )
126
+ end
127
+ end
128
+
129
+ def decompose_registrar(value)
130
+ if value =~ /(.+?) \((.+?)\)/
131
+ [$2, $1]
132
+ end
133
+ end
134
+
135
+ end
136
+
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,49 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/scanners/base'
11
+
12
+
13
+ module Whois
14
+ class Record
15
+ module Scanners
16
+
17
+ # Scanner for the Icann Compliant-based records.
18
+ class BaseIcannCompliant < Base
19
+
20
+ self.tokenizers += [
21
+ :scan_available,
22
+ :skip_head,
23
+ :scan_keyvalue,
24
+ :skip_end,
25
+ ]
26
+
27
+
28
+ tokenizer :scan_available do
29
+ if @input.skip(/^Domain not found\.\n/)
30
+ @ast['status:available'] = true
31
+ end
32
+ end
33
+
34
+ tokenizer :skip_head do
35
+ if @input.skip_until(/^Domain Name:/)
36
+ @input.scan(/\s(.+)\n/)
37
+ @ast['domain:name'] = @input[1].strip
38
+ end
39
+ end
40
+
41
+ tokenizer :skip_end do
42
+ @input.skip_until(/.*$/m)
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -15,8 +15,6 @@ module Whois
15
15
  module Scanners
16
16
 
17
17
  # Scanner for the whois.domainregistry.ie server.
18
- #
19
- # @since 2.5.0
20
18
  class WhoisDomainregistryIe < Base
21
19
 
22
20
  self.tokenizers += [
@@ -0,0 +1,49 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/scanners/base'
11
+
12
+
13
+ module Whois
14
+ class Record
15
+ module Scanners
16
+
17
+ # Scanner for the whois.gandi.net record.
18
+ class WhoisGandiNet < Base
19
+
20
+ self.tokenizers += [
21
+ :scan_yaml_header,
22
+ :skip_empty_line,
23
+ :scan_available,
24
+ :scan_disclaimer,
25
+ :scan_keyvalue,
26
+ ]
27
+
28
+ tokenizer :scan_yaml_header do
29
+ # skip the YAML prelude
30
+ @input.scan(/^---.*\n/)
31
+ end
32
+
33
+ tokenizer :scan_available do
34
+ if @input.skip(/^# Not found/)
35
+ @ast["status:available"] = true
36
+ end
37
+ end
38
+
39
+ tokenizer :scan_disclaimer do
40
+ if @input.match?(/^#.*/)
41
+ @ast["field:disclaimer"] = _scan_lines_to_array(/^#(.*)\n/).join(" ")
42
+ @ast["field:disclaimer"].gsub!(" ", "\n").gsub!(/\n\d{4}-\d{2}-\d{2}.*CEST/,'')
43
+ end
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,34 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/scanners/base_whoisd'
11
+
12
+
13
+ module Whois
14
+ class Record
15
+ module Scanners
16
+
17
+ class WhoisNicCz < BaseWhoisd
18
+
19
+ self.tokenizers += [
20
+ :scan_response_throttled,
21
+ ]
22
+
23
+ tokenizer :scan_response_throttled do
24
+ if @input.match?(/Your connection limit exceeded\. Please slow down and try again later/)
25
+ @ast["response:throttled"] = true
26
+ @input.skip(/^.+\n/)
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2013 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/scanners/base'
11
+
12
+
13
+ module Whois
14
+ class Record
15
+ module Scanners
16
+
17
+ class WhoisYoursrsCom < Base
18
+
19
+ self.tokenizers += [
20
+ :skip_empty_line,
21
+ :scan_available,
22
+ :scan_keyvalue,
23
+ ]
24
+
25
+
26
+ tokenizer :scan_available do
27
+ if @input.scan(/^No match for [\w\.]+\.\n/)
28
+ @ast["status:available"] = true
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
data/lib/whois/version.rb CHANGED
@@ -13,7 +13,7 @@ module Whois
13
13
  module Version
14
14
  MAJOR = 3
15
15
  MINOR = 3
16
- PATCH = 0
16
+ PATCH = 1
17
17
  BUILD = nil
18
18
 
19
19
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
data/whois.gemspec CHANGED
@@ -2,16 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "whois"
5
- s.version = "3.2.1"
5
+ s.version = "3.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Simone Carletti"]
9
- s.date = "2013-07-16"
9
+ s.date = "2013-10-05"
10
10
  s.description = "Whois is an intelligent WHOIS client and parser written in pure Ruby. It can query registry data for IPv4, IPv6 and top level domains, parse and convert responses into easy-to-use Ruby objects."
11
11
  s.email = ["weppos@weppos.net"]
12
12
  s.executables = ["ruby-whois"]
13
- s.files = ["LICENSE.txt", ".yardopts", "CHANGELOG.md", "README.md", "whois.gemspec", "bin/ruby-whois", "data/ipv4.json", "data/ipv6.json", "data/tld.json", "lib/whois/client.rb", "lib/whois/core_ext/array/extract_options.rb", "lib/whois/core_ext/array/wrap.rb", "lib/whois/core_ext/class/attribute.rb", "lib/whois/core_ext/kernel/singleton_class.rb", "lib/whois/core_ext/module/remove_method.rb", "lib/whois/core_ext/object/blank.rb", "lib/whois/core_ext.rb", "lib/whois/errors.rb", "lib/whois/record/contact.rb", "lib/whois/record/nameserver.rb", "lib/whois/record/parser/base.rb", "lib/whois/record/parser/base_afilias.rb", "lib/whois/record/parser/base_cocca.rb", "lib/whois/record/parser/base_cocca2.rb", "lib/whois/record/parser/base_icb.rb", "lib/whois/record/parser/base_shared1.rb", "lib/whois/record/parser/base_shared2.rb", "lib/whois/record/parser/base_shared3.rb", "lib/whois/record/parser/base_whoisd.rb", "lib/whois/record/parser/blank.rb", "lib/whois/record/parser/example.rb", "lib/whois/record/parser/jobswhois.verisign-grs.com.rb", "lib/whois/record/parser/kero.yachay.pe.rb", "lib/whois/record/parser/NOTES.txt", "lib/whois/record/parser/whois.adamsnames.tc.rb", "lib/whois/record/parser/whois.aeda.net.ae.rb", "lib/whois/record/parser/whois.aero.rb", "lib/whois/record/parser/whois.afilias-grs.info.rb", "lib/whois/record/parser/whois.afilias.info.rb", "lib/whois/record/parser/whois.ai.rb", "lib/whois/record/parser/whois.arnes.si.rb", "lib/whois/record/parser/whois.ati.tn.rb", "lib/whois/record/parser/whois.audns.net.au.rb", "lib/whois/record/parser/whois.ax.rb", "lib/whois/record/parser/whois.biz.rb", "lib/whois/record/parser/whois.bn.rb", "lib/whois/record/parser/whois.cat.rb", "lib/whois/record/parser/whois.cctld.by.rb", "lib/whois/record/parser/whois.cctld.uz.rb", "lib/whois/record/parser/whois.centralnic.com.rb", "lib/whois/record/parser/whois.cira.ca.rb", "lib/whois/record/parser/whois.cmc.iq.rb", "lib/whois/record/parser/whois.cnnic.cn.rb", "lib/whois/record/parser/whois.co.ca.rb", "lib/whois/record/parser/whois.co.pl.rb", "lib/whois/record/parser/whois.co.ug.rb", "lib/whois/record/parser/whois.comlaude.com.rb", "lib/whois/record/parser/whois.crsnic.net.rb", "lib/whois/record/parser/whois.denic.de.rb", "lib/whois/record/parser/whois.dk-hostmaster.dk.rb", "lib/whois/record/parser/whois.dns.be.rb", "lib/whois/record/parser/whois.dns.hr.rb", "lib/whois/record/parser/whois.dns.lu.rb", "lib/whois/record/parser/whois.dns.pl.rb", "lib/whois/record/parser/whois.dns.pt.rb", "lib/whois/record/parser/whois.domain-registry.nl.rb", "lib/whois/record/parser/whois.domain.kg.rb", "lib/whois/record/parser/whois.domainregistry.ie.rb", "lib/whois/record/parser/whois.domainregistry.my.rb", "lib/whois/record/parser/whois.domreg.lt.rb", "lib/whois/record/parser/whois.dot.tk.rb", "lib/whois/record/parser/whois.dotmobiregistry.net.rb", "lib/whois/record/parser/whois.dotpostregistry.net.rb", "lib/whois/record/parser/whois.dreamhost.com.rb", "lib/whois/record/parser/whois.educause.edu.rb", "lib/whois/record/parser/whois.eenet.ee.rb", "lib/whois/record/parser/whois.enom.com.rb", "lib/whois/record/parser/whois.eu.org.rb", "lib/whois/record/parser/whois.eu.rb", "lib/whois/record/parser/whois.fi.rb", "lib/whois/record/parser/whois.gg.rb", "lib/whois/record/parser/whois.godaddy.com.rb", "lib/whois/record/parser/whois.gov.za.rb", "lib/whois/record/parser/whois.hkirc.hk.rb", "lib/whois/record/parser/whois.iam.net.ma.rb", "lib/whois/record/parser/whois.iana.org.rb", "lib/whois/record/parser/whois.in.ua.rb", "lib/whois/record/parser/whois.isnic.is.rb", "lib/whois/record/parser/whois.isoc.org.il.rb", "lib/whois/record/parser/whois.ja.net.rb", "lib/whois/record/parser/whois.je.rb", "lib/whois/record/parser/whois.jprs.jp.rb", "lib/whois/record/parser/whois.kenic.or.ke.rb", "lib/whois/record/parser/whois.kr.rb", "lib/whois/record/parser/whois.markmonitor.com.rb", "lib/whois/record/parser/whois.meregistry.net.rb", "lib/whois/record/parser/whois.meridiantld.net.rb", "lib/whois/record/parser/whois.monic.mo.rb", "lib/whois/record/parser/whois.museum.rb", "lib/whois/record/parser/whois.na-nic.com.na.rb", "lib/whois/record/parser/whois.nc.rb", "lib/whois/record/parser/whois.netcom.cm.rb", "lib/whois/record/parser/whois.networksolutions.com.rb", "lib/whois/record/parser/whois.nic-se.se.rb", "lib/whois/record/parser/whois.nic.ac.rb", "lib/whois/record/parser/whois.nic.af.rb", "lib/whois/record/parser/whois.nic.ag.rb", "lib/whois/record/parser/whois.nic.am.rb", "lib/whois/record/parser/whois.nic.as.rb", "lib/whois/record/parser/whois.nic.asia.rb", "lib/whois/record/parser/whois.nic.at.rb", "lib/whois/record/parser/whois.nic.bo.rb", "lib/whois/record/parser/whois.nic.cc.rb", "lib/whois/record/parser/whois.nic.cd.rb", "lib/whois/record/parser/whois.nic.ch.rb", "lib/whois/record/parser/whois.nic.ci.rb", "lib/whois/record/parser/whois.nic.ck.rb", "lib/whois/record/parser/whois.nic.cl.rb", "lib/whois/record/parser/whois.nic.co.rb", "lib/whois/record/parser/whois.nic.coop.rb", "lib/whois/record/parser/whois.nic.cx.rb", "lib/whois/record/parser/whois.nic.cz.rb", "lib/whois/record/parser/whois.nic.dm.rb", "lib/whois/record/parser/whois.nic.dz.rb", "lib/whois/record/parser/whois.nic.ec.rb", "lib/whois/record/parser/whois.nic.fo.rb", "lib/whois/record/parser/whois.nic.fr.rb", "lib/whois/record/parser/whois.nic.gd.rb", "lib/whois/record/parser/whois.nic.gl.rb", "lib/whois/record/parser/whois.nic.gov.rb", "lib/whois/record/parser/whois.nic.gs.rb", "lib/whois/record/parser/whois.nic.hn.rb", "lib/whois/record/parser/whois.nic.ht.rb", "lib/whois/record/parser/whois.nic.hu.rb", "lib/whois/record/parser/whois.nic.im.rb", "lib/whois/record/parser/whois.nic.io.rb", "lib/whois/record/parser/whois.nic.ir.rb", "lib/whois/record/parser/whois.nic.it.rb", "lib/whois/record/parser/whois.nic.ki.rb", "lib/whois/record/parser/whois.nic.kz.rb", "lib/whois/record/parser/whois.nic.la.rb", "lib/whois/record/parser/whois.nic.li.rb", "lib/whois/record/parser/whois.nic.lk.rb", "lib/whois/record/parser/whois.nic.lv.rb", "lib/whois/record/parser/whois.nic.ly.rb", "lib/whois/record/parser/whois.nic.md.rb", "lib/whois/record/parser/whois.nic.mg.rb", "lib/whois/record/parser/whois.nic.ms.rb", "lib/whois/record/parser/whois.nic.mu.rb", "lib/whois/record/parser/whois.nic.mx.rb", "lib/whois/record/parser/whois.nic.name.rb", "lib/whois/record/parser/whois.nic.net.nf.rb", "lib/whois/record/parser/whois.nic.net.ng.rb", "lib/whois/record/parser/whois.nic.net.sa.rb", "lib/whois/record/parser/whois.nic.net.sb.rb", "lib/whois/record/parser/whois.nic.nu.rb", "lib/whois/record/parser/whois.nic.org.uy.rb", "lib/whois/record/parser/whois.nic.pr.rb", "lib/whois/record/parser/whois.nic.priv.at.rb", "lib/whois/record/parser/whois.nic.pw.rb", "lib/whois/record/parser/whois.nic.sh.rb", "lib/whois/record/parser/whois.nic.sl.rb", "lib/whois/record/parser/whois.nic.sm.rb", "lib/whois/record/parser/whois.nic.sn.rb", "lib/whois/record/parser/whois.nic.so.rb", "lib/whois/record/parser/whois.nic.st.rb", "lib/whois/record/parser/whois.nic.tel.rb", "lib/whois/record/parser/whois.nic.tl.rb", "lib/whois/record/parser/whois.nic.tm.rb", "lib/whois/record/parser/whois.nic.tr.rb", "lib/whois/record/parser/whois.nic.travel.rb", "lib/whois/record/parser/whois.nic.tv.rb", "lib/whois/record/parser/whois.nic.uk.rb", "lib/whois/record/parser/whois.nic.us.rb", "lib/whois/record/parser/whois.nic.ve.rb", "lib/whois/record/parser/whois.nic.xxx.rb", "lib/whois/record/parser/whois.norid.no.rb", "lib/whois/record/parser/whois.org.za.rb", "lib/whois/record/parser/whois.pandi.or.id.rb", "lib/whois/record/parser/whois.pir.org.rb", "lib/whois/record/parser/whois.pnina.ps.rb", "lib/whois/record/parser/whois.register.bg.rb", "lib/whois/record/parser/whois.register.com.rb", "lib/whois/record/parser/whois.registro.br.rb", "lib/whois/record/parser/whois.registry.gy.rb", "lib/whois/record/parser/whois.registry.hm.rb", "lib/whois/record/parser/whois.registry.in.rb", "lib/whois/record/parser/whois.registry.net.za.rb", "lib/whois/record/parser/whois.registry.om.rb", "lib/whois/record/parser/whois.registry.qa.rb", "lib/whois/record/parser/whois.registrypro.pro.rb", "lib/whois/record/parser/whois.ripe.net.rb", "lib/whois/record/parser/whois.rnids.rs.rb", "lib/whois/record/parser/whois.rotld.ro.rb", "lib/whois/record/parser/whois.samoanic.ws.rb", "lib/whois/record/parser/whois.sgnic.sg.rb", "lib/whois/record/parser/whois.sk-nic.sk.rb", "lib/whois/record/parser/whois.smallregistry.net.rb", "lib/whois/record/parser/whois.srs.net.nz.rb", "lib/whois/record/parser/whois.sx.rb", "lib/whois/record/parser/whois.tcinet.ru.rb", "lib/whois/record/parser/whois.thnic.co.th.rb", "lib/whois/record/parser/whois.tld.ee.rb", "lib/whois/record/parser/whois.tld.sy.rb", "lib/whois/record/parser/whois.tonic.to.rb", "lib/whois/record/parser/whois.twnic.net.tw.rb", "lib/whois/record/parser/whois.tznic.or.tz.rb", "lib/whois/record/parser/whois.ua.rb", "lib/whois/record/parser/whois.usp.ac.fj.rb", "lib/whois/record/parser/whois.za.net.rb", "lib/whois/record/parser/whois.za.org.rb", "lib/whois/record/parser/whois1.nic.bi.rb", "lib/whois/record/parser.rb", "lib/whois/record/part.rb", "lib/whois/record/registrar.rb", "lib/whois/record/scanners/base.rb", "lib/whois/record/scanners/base_afilias.rb", "lib/whois/record/scanners/base_cocca2.rb", "lib/whois/record/scanners/base_shared1.rb", "lib/whois/record/scanners/base_shared2.rb", "lib/whois/record/scanners/base_shared3.rb", "lib/whois/record/scanners/base_whoisd.rb", "lib/whois/record/scanners/iana.rb", "lib/whois/record/scanners/scannable.rb", "lib/whois/record/scanners/verisign.rb", "lib/whois/record/scanners/whois.ati.tn.rb", "lib/whois/record/scanners/whois.audns.net.au.rb", "lib/whois/record/scanners/whois.cctld.by.rb", "lib/whois/record/scanners/whois.centralnic.com.rb", "lib/whois/record/scanners/whois.cira.ca.rb", "lib/whois/record/scanners/whois.cnnic.cn.rb", "lib/whois/record/scanners/whois.denic.de.rb", "lib/whois/record/scanners/whois.dns.hr.rb", "lib/whois/record/scanners/whois.domainregistry.ie.rb", "lib/whois/record/scanners/whois.fi.rb", "lib/whois/record/scanners/whois.nc.rb", "lib/whois/record/scanners/whois.nic.hu.rb", "lib/whois/record/scanners/whois.nic.it.rb", "lib/whois/record/scanners/whois.registry.net.za.rb", "lib/whois/record/scanners/whois.rnids.rs.rb", "lib/whois/record/scanners/whois.smallregistry.net.rb", "lib/whois/record/scanners/whois.srs.net.nz.rb", "lib/whois/record/scanners/whois.sx.rb", "lib/whois/record/super_struct.rb", "lib/whois/record.rb", "lib/whois/server/adapters/afilias.rb", "lib/whois/server/adapters/arin.rb", "lib/whois/server/adapters/arpa.rb", "lib/whois/server/adapters/base.rb", "lib/whois/server/adapters/formatted.rb", "lib/whois/server/adapters/none.rb", "lib/whois/server/adapters/not_implemented.rb", "lib/whois/server/adapters/standard.rb", "lib/whois/server/adapters/verisign.rb", "lib/whois/server/adapters/web.rb", "lib/whois/server/socket_handler.rb", "lib/whois/server.rb", "lib/whois/version.rb", "lib/whois.rb"]
13
+ s.files = ["LICENSE.txt", ".yardopts", "CHANGELOG.md", "README.md", "whois.gemspec", "bin/ruby-whois", "data/asn16.json", "data/asn32.json", "data/ipv4.json", "data/ipv6.json", "data/tld.json", "lib/whois", "lib/whois/client.rb", "lib/whois/core_ext", "lib/whois/core_ext/array", "lib/whois/core_ext/array/extract_options.rb", "lib/whois/core_ext/array/wrap.rb", "lib/whois/core_ext/class", "lib/whois/core_ext/class/attribute.rb", "lib/whois/core_ext/kernel", "lib/whois/core_ext/kernel/singleton_class.rb", "lib/whois/core_ext/module", "lib/whois/core_ext/module/remove_method.rb", "lib/whois/core_ext/object", "lib/whois/core_ext/object/blank.rb", "lib/whois/core_ext.rb", "lib/whois/errors.rb", "lib/whois/record", "lib/whois/record/contact.rb", "lib/whois/record/nameserver.rb", "lib/whois/record/parser", "lib/whois/record/parser/base.rb", "lib/whois/record/parser/base_afilias.rb", "lib/whois/record/parser/base_cocca.rb", "lib/whois/record/parser/base_cocca2.rb", "lib/whois/record/parser/base_icb.rb", "lib/whois/record/parser/base_shared1.rb", "lib/whois/record/parser/base_shared2.rb", "lib/whois/record/parser/base_shared3.rb", "lib/whois/record/parser/base_whoisd.rb", "lib/whois/record/parser/blank.rb", "lib/whois/record/parser/example.rb", "lib/whois/record/parser/jobswhois.verisign-grs.com.rb", "lib/whois/record/parser/kero.yachay.pe.rb", "lib/whois/record/parser/NOTES.txt", "lib/whois/record/parser/whois.adamsnames.tc.rb", "lib/whois/record/parser/whois.aeda.net.ae.rb", "lib/whois/record/parser/whois.aero.rb", "lib/whois/record/parser/whois.afilias-grs.info.rb", "lib/whois/record/parser/whois.afilias.info.rb", "lib/whois/record/parser/whois.ai.rb", "lib/whois/record/parser/whois.arnes.si.rb", "lib/whois/record/parser/whois.ati.tn.rb", "lib/whois/record/parser/whois.audns.net.au.rb", "lib/whois/record/parser/whois.ax.rb", "lib/whois/record/parser/whois.biz.rb", "lib/whois/record/parser/whois.bn.rb", "lib/whois/record/parser/whois.cat.rb", "lib/whois/record/parser/whois.cctld.by.rb", "lib/whois/record/parser/whois.cctld.uz.rb", "lib/whois/record/parser/whois.centralnic.com.rb", "lib/whois/record/parser/whois.cira.ca.rb", "lib/whois/record/parser/whois.cmc.iq.rb", "lib/whois/record/parser/whois.cnnic.cn.rb", "lib/whois/record/parser/whois.co.ca.rb", "lib/whois/record/parser/whois.co.pl.rb", "lib/whois/record/parser/whois.co.ug.rb", "lib/whois/record/parser/whois.comlaude.com.rb", "lib/whois/record/parser/whois.crsnic.net.rb", "lib/whois/record/parser/whois.denic.de.rb", "lib/whois/record/parser/whois.dk-hostmaster.dk.rb", "lib/whois/record/parser/whois.dns.be.rb", "lib/whois/record/parser/whois.dns.hr.rb", "lib/whois/record/parser/whois.dns.lu.rb", "lib/whois/record/parser/whois.dns.pl.rb", "lib/whois/record/parser/whois.dns.pt.rb", "lib/whois/record/parser/whois.domain-registry.nl.rb", "lib/whois/record/parser/whois.domain.kg.rb", "lib/whois/record/parser/whois.domainregistry.ie.rb", "lib/whois/record/parser/whois.domainregistry.my.rb", "lib/whois/record/parser/whois.domreg.lt.rb", "lib/whois/record/parser/whois.dot.cf.rb", "lib/whois/record/parser/whois.dot.tk.rb", "lib/whois/record/parser/whois.dotmobiregistry.net.rb", "lib/whois/record/parser/whois.dotpostregistry.net.rb", "lib/whois/record/parser/whois.dreamhost.com.rb", "lib/whois/record/parser/whois.educause.edu.rb", "lib/whois/record/parser/whois.eenet.ee.rb", "lib/whois/record/parser/whois.enom.com.rb", "lib/whois/record/parser/whois.eu.org.rb", "lib/whois/record/parser/whois.eu.rb", "lib/whois/record/parser/whois.fi.rb", "lib/whois/record/parser/whois.gg.rb", "lib/whois/record/parser/whois.godaddy.com.rb", "lib/whois/record/parser/whois.gov.za.rb", "lib/whois/record/parser/whois.hkirc.hk.rb", "lib/whois/record/parser/whois.iam.net.ma.rb", "lib/whois/record/parser/whois.iana.org.rb", "lib/whois/record/parser/whois.in.ua.rb", "lib/whois/record/parser/whois.isnic.is.rb", "lib/whois/record/parser/whois.isoc.org.il.rb", "lib/whois/record/parser/whois.ja.net.rb", "lib/whois/record/parser/whois.je.rb", "lib/whois/record/parser/whois.jprs.jp.rb", "lib/whois/record/parser/whois.kenic.or.ke.rb", "lib/whois/record/parser/whois.kr.rb", "lib/whois/record/parser/whois.markmonitor.com.rb", "lib/whois/record/parser/whois.meregistry.net.rb", "lib/whois/record/parser/whois.meridiantld.net.rb", "lib/whois/record/parser/whois.monic.mo.rb", "lib/whois/record/parser/whois.museum.rb", "lib/whois/record/parser/whois.na-nic.com.na.rb", "lib/whois/record/parser/whois.nc.rb", "lib/whois/record/parser/whois.netcom.cm.rb", "lib/whois/record/parser/whois.networksolutions.com.rb", "lib/whois/record/parser/whois.nic-se.se.rb", "lib/whois/record/parser/whois.nic.ac.rb", "lib/whois/record/parser/whois.nic.af.rb", "lib/whois/record/parser/whois.nic.ag.rb", "lib/whois/record/parser/whois.nic.am.rb", "lib/whois/record/parser/whois.nic.as.rb", "lib/whois/record/parser/whois.nic.asia.rb", "lib/whois/record/parser/whois.nic.at.rb", "lib/whois/record/parser/whois.nic.bo.rb", "lib/whois/record/parser/whois.nic.cc.rb", "lib/whois/record/parser/whois.nic.cd.rb", "lib/whois/record/parser/whois.nic.ch.rb", "lib/whois/record/parser/whois.nic.ci.rb", "lib/whois/record/parser/whois.nic.ck.rb", "lib/whois/record/parser/whois.nic.cl.rb", "lib/whois/record/parser/whois.nic.co.rb", "lib/whois/record/parser/whois.nic.coop.rb", "lib/whois/record/parser/whois.nic.cx.rb", "lib/whois/record/parser/whois.nic.cz.rb", "lib/whois/record/parser/whois.nic.dm.rb", "lib/whois/record/parser/whois.nic.dz.rb", "lib/whois/record/parser/whois.nic.ec.rb", "lib/whois/record/parser/whois.nic.fo.rb", "lib/whois/record/parser/whois.nic.fr.rb", "lib/whois/record/parser/whois.nic.gd.rb", "lib/whois/record/parser/whois.nic.gl.rb", "lib/whois/record/parser/whois.nic.gov.rb", "lib/whois/record/parser/whois.nic.gs.rb", "lib/whois/record/parser/whois.nic.hn.rb", "lib/whois/record/parser/whois.nic.ht.rb", "lib/whois/record/parser/whois.nic.hu.rb", "lib/whois/record/parser/whois.nic.im.rb", "lib/whois/record/parser/whois.nic.io.rb", "lib/whois/record/parser/whois.nic.ir.rb", "lib/whois/record/parser/whois.nic.it.rb", "lib/whois/record/parser/whois.nic.ki.rb", "lib/whois/record/parser/whois.nic.kz.rb", "lib/whois/record/parser/whois.nic.la.rb", "lib/whois/record/parser/whois.nic.li.rb", "lib/whois/record/parser/whois.nic.lk.rb", "lib/whois/record/parser/whois.nic.lv.rb", "lib/whois/record/parser/whois.nic.ly.rb", "lib/whois/record/parser/whois.nic.md.rb", "lib/whois/record/parser/whois.nic.mg.rb", "lib/whois/record/parser/whois.nic.ms.rb", "lib/whois/record/parser/whois.nic.mu.rb", "lib/whois/record/parser/whois.nic.mx.rb", "lib/whois/record/parser/whois.nic.name.rb", "lib/whois/record/parser/whois.nic.net.nf.rb", "lib/whois/record/parser/whois.nic.net.ng.rb", "lib/whois/record/parser/whois.nic.net.sa.rb", "lib/whois/record/parser/whois.nic.net.sb.rb", "lib/whois/record/parser/whois.nic.nu.rb", "lib/whois/record/parser/whois.nic.org.uy.rb", "lib/whois/record/parser/whois.nic.pr.rb", "lib/whois/record/parser/whois.nic.priv.at.rb", "lib/whois/record/parser/whois.nic.pw.rb", "lib/whois/record/parser/whois.nic.sh.rb", "lib/whois/record/parser/whois.nic.sl.rb", "lib/whois/record/parser/whois.nic.sm.rb", "lib/whois/record/parser/whois.nic.sn.rb", "lib/whois/record/parser/whois.nic.so.rb", "lib/whois/record/parser/whois.nic.st.rb", "lib/whois/record/parser/whois.nic.tel.rb", "lib/whois/record/parser/whois.nic.tl.rb", "lib/whois/record/parser/whois.nic.tm.rb", "lib/whois/record/parser/whois.nic.tr.rb", "lib/whois/record/parser/whois.nic.travel.rb", "lib/whois/record/parser/whois.nic.tv.rb", "lib/whois/record/parser/whois.nic.uk.rb", "lib/whois/record/parser/whois.nic.us.rb", "lib/whois/record/parser/whois.nic.ve.rb", "lib/whois/record/parser/whois.nic.xxx.rb", "lib/whois/record/parser/whois.norid.no.rb", "lib/whois/record/parser/whois.org.za.rb", "lib/whois/record/parser/whois.pandi.or.id.rb", "lib/whois/record/parser/whois.pir.org.rb", "lib/whois/record/parser/whois.pnina.ps.rb", "lib/whois/record/parser/whois.register.bg.rb", "lib/whois/record/parser/whois.register.com.rb", "lib/whois/record/parser/whois.registro.br.rb", "lib/whois/record/parser/whois.registry.gy.rb", "lib/whois/record/parser/whois.registry.hm.rb", "lib/whois/record/parser/whois.registry.in.rb", "lib/whois/record/parser/whois.registry.net.za.rb", "lib/whois/record/parser/whois.registry.om.rb", "lib/whois/record/parser/whois.registry.qa.rb", "lib/whois/record/parser/whois.registrypro.pro.rb", "lib/whois/record/parser/whois.ripe.net.rb", "lib/whois/record/parser/whois.rnids.rs.rb", "lib/whois/record/parser/whois.rotld.ro.rb", "lib/whois/record/parser/whois.samoanic.ws.rb", "lib/whois/record/parser/whois.sgnic.sg.rb", "lib/whois/record/parser/whois.sk-nic.sk.rb", "lib/whois/record/parser/whois.smallregistry.net.rb", "lib/whois/record/parser/whois.srs.net.nz.rb", "lib/whois/record/parser/whois.sx.rb", "lib/whois/record/parser/whois.tcinet.ru.rb", "lib/whois/record/parser/whois.thnic.co.th.rb", "lib/whois/record/parser/whois.tld.ee.rb", "lib/whois/record/parser/whois.tld.sy.rb", "lib/whois/record/parser/whois.tonic.to.rb", "lib/whois/record/parser/whois.twnic.net.tw.rb", "lib/whois/record/parser/whois.tznic.or.tz.rb", "lib/whois/record/parser/whois.ua.rb", "lib/whois/record/parser/whois.usp.ac.fj.rb", "lib/whois/record/parser/whois.za.net.rb", "lib/whois/record/parser/whois.za.org.rb", "lib/whois/record/parser/whois1.nic.bi.rb", "lib/whois/record/parser.rb", "lib/whois/record/part.rb", "lib/whois/record/registrar.rb", "lib/whois/record/scanners", "lib/whois/record/scanners/base.rb", "lib/whois/record/scanners/base_afilias.rb", "lib/whois/record/scanners/base_cocca2.rb", "lib/whois/record/scanners/base_shared1.rb", "lib/whois/record/scanners/base_shared2.rb", "lib/whois/record/scanners/base_shared3.rb", "lib/whois/record/scanners/base_whoisd.rb", "lib/whois/record/scanners/iana.rb", "lib/whois/record/scanners/scannable.rb", "lib/whois/record/scanners/verisign.rb", "lib/whois/record/scanners/whois.ati.tn.rb", "lib/whois/record/scanners/whois.audns.net.au.rb", "lib/whois/record/scanners/whois.cctld.by.rb", "lib/whois/record/scanners/whois.centralnic.com.rb", "lib/whois/record/scanners/whois.cira.ca.rb", "lib/whois/record/scanners/whois.cnnic.cn.rb", "lib/whois/record/scanners/whois.denic.de.rb", "lib/whois/record/scanners/whois.dns.hr.rb", "lib/whois/record/scanners/whois.domainregistry.ie.rb", "lib/whois/record/scanners/whois.fi.rb", "lib/whois/record/scanners/whois.nc.rb", "lib/whois/record/scanners/whois.nic-se.se.rb", "lib/whois/record/scanners/whois.nic.cz.rb", "lib/whois/record/scanners/whois.nic.hu.rb", "lib/whois/record/scanners/whois.nic.it.rb", "lib/whois/record/scanners/whois.registry.net.za.rb", "lib/whois/record/scanners/whois.rnids.rs.rb", "lib/whois/record/scanners/whois.smallregistry.net.rb", "lib/whois/record/scanners/whois.srs.net.nz.rb", "lib/whois/record/scanners/whois.sx.rb", "lib/whois/record/super_struct.rb", "lib/whois/record.rb", "lib/whois/server", "lib/whois/server/adapters", "lib/whois/server/adapters/afilias.rb", "lib/whois/server/adapters/arin.rb", "lib/whois/server/adapters/arpa.rb", "lib/whois/server/adapters/base.rb", "lib/whois/server/adapters/formatted.rb", "lib/whois/server/adapters/none.rb", "lib/whois/server/adapters/not_implemented.rb", "lib/whois/server/adapters/standard.rb", "lib/whois/server/adapters/verisign.rb", "lib/whois/server/adapters/web.rb", "lib/whois/server/socket_handler.rb", "lib/whois/server.rb", "lib/whois/version.rb", "lib/whois.rb"]
14
14
  s.homepage = "http://www.ruby-whois.org/"
15
+ s.licenses = ["MIT"]
15
16
  s.post_install_message = "********************************************************************************\n\n Thank you for installing the whois gem!\n\n If you like this gem, please support the project.\n http://pledgie.com/campaigns/11383\n\n Does your project or organization use this gem? Add it to the apps wiki.\n https://github.com/weppos/whois/wiki/apps\n\n Are you looking for a quick and convenient way to perform WHOIS queries?\n Check out RoboWhois WHOIS API.\n https://www.robowhois.com/\n\n********************************************************************************\n"
16
17
  s.require_paths = ["lib"]
17
18
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whois
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-05 00:00:00.000000000 Z
12
+ date: 2013-10-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -111,6 +111,7 @@ files:
111
111
  - lib/whois/record/parser/base_afilias.rb
112
112
  - lib/whois/record/parser/base_cocca.rb
113
113
  - lib/whois/record/parser/base_cocca2.rb
114
+ - lib/whois/record/parser/base_icann_compliant.rb
114
115
  - lib/whois/record/parser/base_icb.rb
115
116
  - lib/whois/record/parser/base_shared1.rb
116
117
  - lib/whois/record/parser/base_shared2.rb
@@ -168,6 +169,7 @@ files:
168
169
  - lib/whois/record/parser/whois.eu.org.rb
169
170
  - lib/whois/record/parser/whois.eu.rb
170
171
  - lib/whois/record/parser/whois.fi.rb
172
+ - lib/whois/record/parser/whois.gandi.net.rb
171
173
  - lib/whois/record/parser/whois.gg.rb
172
174
  - lib/whois/record/parser/whois.godaddy.com.rb
173
175
  - lib/whois/record/parser/whois.gov.za.rb
@@ -213,6 +215,7 @@ files:
213
215
  - lib/whois/record/parser/whois.nic.dm.rb
214
216
  - lib/whois/record/parser/whois.nic.dz.rb
215
217
  - lib/whois/record/parser/whois.nic.ec.rb
218
+ - lib/whois/record/parser/whois.nic.es.rb
216
219
  - lib/whois/record/parser/whois.nic.fo.rb
217
220
  - lib/whois/record/parser/whois.nic.fr.rb
218
221
  - lib/whois/record/parser/whois.nic.gd.rb
@@ -297,6 +300,7 @@ files:
297
300
  - lib/whois/record/parser/whois.tznic.or.tz.rb
298
301
  - lib/whois/record/parser/whois.ua.rb
299
302
  - lib/whois/record/parser/whois.usp.ac.fj.rb
303
+ - lib/whois/record/parser/whois.yoursrs.com.rb
300
304
  - lib/whois/record/parser/whois.za.net.rb
301
305
  - lib/whois/record/parser/whois.za.org.rb
302
306
  - lib/whois/record/parser/whois1.nic.bi.rb
@@ -306,6 +310,7 @@ files:
306
310
  - lib/whois/record/scanners/base.rb
307
311
  - lib/whois/record/scanners/base_afilias.rb
308
312
  - lib/whois/record/scanners/base_cocca2.rb
313
+ - lib/whois/record/scanners/base_icann_compliant.rb
309
314
  - lib/whois/record/scanners/base_shared1.rb
310
315
  - lib/whois/record/scanners/base_shared2.rb
311
316
  - lib/whois/record/scanners/base_shared3.rb
@@ -323,8 +328,10 @@ files:
323
328
  - lib/whois/record/scanners/whois.dns.hr.rb
324
329
  - lib/whois/record/scanners/whois.domainregistry.ie.rb
325
330
  - lib/whois/record/scanners/whois.fi.rb
331
+ - lib/whois/record/scanners/whois.gandi.net.rb
326
332
  - lib/whois/record/scanners/whois.nc.rb
327
333
  - lib/whois/record/scanners/whois.nic-se.se.rb
334
+ - lib/whois/record/scanners/whois.nic.cz.rb
328
335
  - lib/whois/record/scanners/whois.nic.hu.rb
329
336
  - lib/whois/record/scanners/whois.nic.it.rb
330
337
  - lib/whois/record/scanners/whois.registry.net.za.rb
@@ -332,6 +339,7 @@ files:
332
339
  - lib/whois/record/scanners/whois.smallregistry.net.rb
333
340
  - lib/whois/record/scanners/whois.srs.net.nz.rb
334
341
  - lib/whois/record/scanners/whois.sx.rb
342
+ - lib/whois/record/scanners/whois.yoursrs.com.rb
335
343
  - lib/whois/record/super_struct.rb
336
344
  - lib/whois/record.rb
337
345
  - lib/whois/server/adapters/afilias.rb