whois 3.3.0 → 3.3.1

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