robowhois 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .bundle
2
+ pkg/*
3
+ yardoc
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ # Changelog
2
+
3
+
4
+ ## Release 0.1.0
5
+
6
+ * First release
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'rspec', '~> 2.8.0'
7
+ gem 'fakeweb', '~> 1.3.0'
8
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ robowhois (0.1.0)
5
+ httparty (~> 0.8.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.1.3)
11
+ fakeweb (1.3.0)
12
+ httparty (0.8.1)
13
+ multi_json
14
+ multi_xml
15
+ multi_json (1.1.0)
16
+ multi_xml (0.4.1)
17
+ rake (0.9.2.2)
18
+ rspec (2.8.0)
19
+ rspec-core (~> 2.8.0)
20
+ rspec-expectations (~> 2.8.0)
21
+ rspec-mocks (~> 2.8.0)
22
+ rspec-core (2.8.0)
23
+ rspec-expectations (2.8.0)
24
+ diff-lcs (~> 1.1.2)
25
+ rspec-mocks (2.8.0)
26
+ yard (0.7.5)
27
+
28
+ PLATFORMS
29
+ ruby
30
+
31
+ DEPENDENCIES
32
+ fakeweb (~> 1.3.0)
33
+ rake (~> 0.9)
34
+ robowhois!
35
+ rspec (~> 2.8.0)
36
+ yard
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2012 RoboDomain Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # RoboWhois - Ruby Client
2
+
3
+ This is the official Ruby client for [RoboWhois](http://www.robowhois.com/) [API](http://docs.robowhois.com/api/).
4
+
5
+
6
+ ## Installation
7
+
8
+ The best way to install this library is via [RubyGems](https://rubygems.org/).
9
+
10
+ $ gem install robowhois
11
+
12
+ You might need administrator privileges on your system to install the gem.
13
+
14
+
15
+ ## Usage
16
+
17
+ All the examples below assume you installed the gem and required it via RubyGems.
18
+ You also need a [RoboWhois](http://www.robowhois.com/) account and a valid API key.
19
+
20
+ require 'robowhois'
21
+
22
+ Please refer to the RoboWhois [API Documentation](http://docs.robowhois.com/api/) for the list of all available API methods and response attributes.
23
+
24
+ ### Account information
25
+
26
+ client = RoboWhois.new('YOUR_API_KEY')
27
+ account = client.account
28
+
29
+ puts account['email']
30
+ # => your email
31
+ puts account['credits_limit']
32
+ # => available credits
33
+
34
+ ### Original WHOIS record
35
+
36
+ client = RoboWhois.new('YOUR_API_KEY')
37
+ response = client.whois('example.com')
38
+
39
+ puts response
40
+ # => The record String
41
+
42
+ ### Parsed WHOIS record
43
+
44
+ client = RoboWhois.new('YOUR_API_KEY')
45
+ response = client.whois_properties('example.com')
46
+
47
+ # The record date
48
+ puts response['daystamp']
49
+
50
+ # The record registrant
51
+ if contact = response['properties']['registrant_contacts']
52
+ puts contact['id']
53
+ puts contact['name']
54
+ puts contact['organization']
55
+ else
56
+ puts "Registrant details not available."
57
+ end
58
+
59
+ # The record nameservers
60
+ response['properties']['nameservers'].each do |nameserver|
61
+ puts nameserver['name']
62
+ puts nameserver['ipv4']
63
+ puts nameserver['ipv6']
64
+ end
65
+
66
+ ### Response Object
67
+
68
+ You can access the last response object using the `last_response` method.
69
+
70
+ client = RoboWhois.new('YOUR_API_KEY')
71
+ account = client.account
72
+
73
+ response = client.last_response
74
+ response.code
75
+ # => 200
76
+ response.headers
77
+ # => { ... }
78
+
79
+ ### Errors
80
+
81
+ In case of failure, the API call raises a `RoboWhois::APIError` exception.
82
+
83
+ client = RoboWhois.new('YOUR_API_KEY')
84
+
85
+ begin
86
+ response = client.whois_properties('example.es')
87
+ rescue => error
88
+ puts error.code
89
+ # => "R2"
90
+ puts error.name
91
+ # => "ServerWhoisOnlyWeb"
92
+ puts error.status
93
+ # => 400
94
+ end
95
+
96
+ Error codes are explained in the [API Errors](http://docs.robowhois.com/api/errors/) documentation page.
97
+
98
+
99
+ ## Changelog
100
+
101
+ See the CHANGELOG.md file for details.
102
+
103
+
104
+ ## License
105
+
106
+ Copyright (c) 2012 RoboDomain Inc.
107
+
108
+ This is Free Software distributed under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1,92 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ $:.unshift(File.dirname(__FILE__) + "/lib")
5
+ require 'robo_whois/version'
6
+
7
+
8
+ # Common package properties
9
+ PKG_NAME = "robowhois"
10
+ PKG_VERSION = RoboWhois::VERSION
11
+
12
+
13
+ # Run test by default.
14
+ task :default => :spec
15
+ task :test => :spec
16
+
17
+
18
+ spec = Gem::Specification.new do |s|
19
+ s.name = PKG_NAME
20
+ s.version = PKG_VERSION
21
+ s.summary = "Ruby client for the RoboWhois API."
22
+ s.description = "Ruby client for the RoboWhois API."
23
+
24
+ s.required_ruby_version = ">= 1.8.7"
25
+
26
+ s.authors = ["Simone Carletti"]
27
+ s.email = ["weppos@weppos.net"]
28
+ s.homepage = "https://github.com/robowhois/robowhois-ruby-client"
29
+
30
+ s.files = `git ls-files`.split("\n")
31
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
32
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
33
+ s.require_paths = %w( lib )
34
+
35
+ s.add_dependency "httparty", "~> 0.8.0"
36
+
37
+ s.add_development_dependency "rake", "~> 0.9"
38
+ s.add_development_dependency "yard"
39
+ end
40
+
41
+
42
+ require 'rubygems/package_task'
43
+
44
+ Gem::PackageTask.new(spec) do |pkg|
45
+ pkg.gem_spec = spec
46
+ end
47
+
48
+ desc "Build the gemspec file #{spec.name}.gemspec"
49
+ task :gemspec do
50
+ file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
51
+ File.open(file, "w") {|f| f << spec.to_ruby }
52
+ end
53
+
54
+ desc "Remove any temporary products, including gemspec"
55
+ task :clean => [:clobber] do
56
+ rm "#{spec.name}.gemspec" if File.file?("#{spec.name}.gemspec")
57
+ end
58
+
59
+ desc "Remove any generated file"
60
+ task :clobber => [:clobber_package]
61
+
62
+ desc "Package the library and generates the gemspec"
63
+ task :package => [:gemspec]
64
+
65
+
66
+ require 'rspec/core/rake_task'
67
+
68
+ RSpec::Core::RakeTask.new do |t|
69
+ t.verbose = !!ENV["VERBOSE"]
70
+ end
71
+
72
+
73
+ require 'yard'
74
+ require 'yard/rake/yardoc_task'
75
+
76
+ YARD::Rake::YardocTask.new(:yardoc) do |y|
77
+ y.options = ["--output-dir", "yardoc"]
78
+ end
79
+
80
+ namespace :yardoc do
81
+ task :clobber do
82
+ rm_r "yardoc" rescue nil
83
+ end
84
+ end
85
+
86
+ task :clobber => "yardoc:clobber"
87
+
88
+
89
+ desc "Open an irb session preloaded with this library"
90
+ task :console do
91
+ sh "irb -rubygems -I lib -r robowhois.rb"
92
+ end
@@ -0,0 +1,25 @@
1
+ #--
2
+ # RoboWhois
3
+ #
4
+ # Ruby client for the RoboWhois API.
5
+ #
6
+ # Copyright (c) 2012 RoboDomain Inc.
7
+ #++
8
+
9
+
10
+ class RoboWhois
11
+
12
+ # Holds information about library version.
13
+ module Version
14
+ MAJOR = 0
15
+ MINOR = 1
16
+ PATCH = 0
17
+ BUILD = nil
18
+
19
+ STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
20
+ end
21
+
22
+ # The current library version.
23
+ VERSION = Version::STRING
24
+
25
+ end
data/lib/robo_whois.rb ADDED
@@ -0,0 +1,94 @@
1
+ #--
2
+ # RoboWhois
3
+ #
4
+ # Ruby client for the RoboWhois API.
5
+ #
6
+ # Copyright (c) 2012 RoboDomain Inc.
7
+ #++
8
+
9
+
10
+ require 'robo_whois/version'
11
+ require 'httparty'
12
+
13
+
14
+ class RoboWhois
15
+ include HTTParty
16
+
17
+ class Error < StandardError
18
+ end
19
+
20
+ class APIError < Error
21
+
22
+ attr_reader :attributes
23
+
24
+ def initialize(attributes)
25
+ @attributes = attributes
26
+ super(attributes[:name])
27
+ end
28
+ end
29
+
30
+
31
+ base_uri "http://api.robowhois.com"
32
+
33
+ attr_reader :last_response
34
+
35
+
36
+ def initialize(api_key)
37
+ @auth = { :username => api_key, :password => "X" }
38
+ end
39
+
40
+ def api_key
41
+ @auth[:username]
42
+ end
43
+
44
+
45
+ def account
46
+ get("/account")["account"]
47
+ end
48
+
49
+ def whois(query)
50
+ get("/whois/#{query}")
51
+ end
52
+
53
+ def whois_availability(query)
54
+ get("/whois/#{query}/availability")["response"]
55
+ end
56
+
57
+ def whois_parts(query)
58
+ get("/whois/#{query}/parts")["response"]
59
+ end
60
+
61
+ def whois_properties(query)
62
+ get("/whois/#{query}/properties")["response"]
63
+ end
64
+
65
+ def whois_record(query)
66
+ get("/whois/#{query}/record")["response"]
67
+ end
68
+
69
+
70
+ private
71
+
72
+ def get(path, params = {})
73
+ request(:get, path, options(:query => params))
74
+ end
75
+
76
+ def request(method, path, options)
77
+ @last_response = self.class.send(method, path, options)
78
+ case @last_response.code
79
+ when 200
80
+ @last_response
81
+ else
82
+ error = @last_response["error"]
83
+ raise APIError, { :code => error["code"], :name => error["name"], :status => @last_response.code }
84
+ end
85
+ end
86
+
87
+ def options(hash = {})
88
+ hash[:headers] ||= {}
89
+ hash[:headers]["User-Agent"] = "RoboWhois Ruby #{VERSION}"
90
+ hash[:basic_auth] = @auth
91
+ hash
92
+ end
93
+
94
+ end
data/lib/robowhois.rb ADDED
@@ -0,0 +1,10 @@
1
+ #--
2
+ # RoboWhois
3
+ #
4
+ # Ruby client for the RoboWhois API.
5
+ #
6
+ # Copyright (c) 2012 RoboDomain Inc.
7
+ #++
8
+
9
+
10
+ require 'robo_whois'
data/robowhois.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "robowhois"
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Simone Carletti"]
9
+ s.date = "2012-03-05"
10
+ s.description = "Ruby client for the RoboWhois API."
11
+ s.email = ["weppos@weppos.net"]
12
+ s.files = [".gitignore", ".rspec", "CHANGELOG.md", "Gemfile", "Gemfile.lock", "LICENSE", "README.md", "Rakefile", "lib/robo_whois.rb", "lib/robo_whois/version.rb", "lib/robowhois.rb", "robowhois.gemspec", "spec/fixtures/account.dump", "spec/fixtures/commands.sh", "spec/fixtures/error_bad_credentials.dump", "spec/fixtures/error_server_whois_only_web.dump", "spec/fixtures/error_unauthenticated.dump", "spec/fixtures/whois.dump", "spec/fixtures/whois_availability.dump", "spec/fixtures/whois_availability_available.dump", "spec/fixtures/whois_availability_registered.dump", "spec/fixtures/whois_parts.dump", "spec/fixtures/whois_properties.dump", "spec/fixtures/whois_properties_available.dump", "spec/fixtures/whois_properties_registered.dump", "spec/fixtures/whois_record.dump", "spec/spec_helper.rb", "spec/support/fake_request_helpers.rb", "spec/support/helpers.rb", "spec/unit/robo_whois_spec.rb"]
13
+ s.homepage = "https://github.com/robowhois/robowhois-ruby-client"
14
+ s.require_paths = ["lib"]
15
+ s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
16
+ s.rubygems_version = "1.8.11"
17
+ s.summary = "Ruby client for the RoboWhois API."
18
+ s.test_files = ["spec/fixtures/account.dump", "spec/fixtures/commands.sh", "spec/fixtures/error_bad_credentials.dump", "spec/fixtures/error_server_whois_only_web.dump", "spec/fixtures/error_unauthenticated.dump", "spec/fixtures/whois.dump", "spec/fixtures/whois_availability.dump", "spec/fixtures/whois_availability_available.dump", "spec/fixtures/whois_availability_registered.dump", "spec/fixtures/whois_parts.dump", "spec/fixtures/whois_properties.dump", "spec/fixtures/whois_properties_available.dump", "spec/fixtures/whois_properties_registered.dump", "spec/fixtures/whois_record.dump", "spec/spec_helper.rb", "spec/support/fake_request_helpers.rb", "spec/support/helpers.rb", "spec/unit/robo_whois_spec.rb"]
19
+
20
+ if s.respond_to? :specification_version then
21
+ s.specification_version = 3
22
+
23
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
24
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.8.0"])
25
+ s.add_development_dependency(%q<rake>, ["~> 0.9"])
26
+ s.add_development_dependency(%q<yard>, [">= 0"])
27
+ else
28
+ s.add_dependency(%q<httparty>, ["~> 0.8.0"])
29
+ s.add_dependency(%q<rake>, ["~> 0.9"])
30
+ s.add_dependency(%q<yard>, [">= 0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<httparty>, ["~> 0.8.0"])
34
+ s.add_dependency(%q<rake>, ["~> 0.9"])
35
+ s.add_dependency(%q<yard>, [">= 0"])
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "c58d5fa387c6862748e219848931776b"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: d40e45d4493f167b7f92df5faa977c1c
11
+ X-Runtime: 0.151658
12
+ Date: Sat, 11 Feb 2012 11:31:14 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"account":{"id":"000000000000000000000000","email":"example@example.com","api_token":"0000000000000000000000000000000000000000","credits_remaining":499}}
@@ -0,0 +1 @@
1
+ curl -u "$ROBOWHOIS_API_KEY:X" -i api.robowhois.com/account > spec/fixtures/account.dump
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 401 Unauthorized
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 401
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ Cache-Control: no-cache, private
9
+ X-Request-Id: 70744f5db685c3d5cb5293b0b04ca7a0
10
+ X-Runtime: 0.354711
11
+ Date: Mon, 05 Mar 2012 11:38:15 GMT
12
+ X-Rack-Cache: miss
13
+ Server: nginx/1.1.14 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
14
+
15
+ {"error":{"code":"C03","name":"BadCredentials"}}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 400 Bad Request
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 400
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ Cache-Control: no-cache, private
9
+ X-Request-Id: a55f033b1038cb6512314949813822ca
10
+ X-Runtime: 0.327995
11
+ Date: Mon, 05 Mar 2012 11:46:59 GMT
12
+ X-Rack-Cache: miss
13
+ Server: nginx/1.1.14 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
14
+
15
+ {"error":{"code":"R02","name":"ServerWhoisOnlyWeb"}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 401 Unauthorized
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 401
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
7
+ WWW-Authenticate: Basic realm="API"
8
+ X-UA-Compatible: IE=Edge,chrome=1
9
+ Cache-Control: no-cache
10
+ X-Request-Id: 694d2e8894af1422aba9a045c293d1c2
11
+ X-Runtime: 0.004623
12
+ Date: Mon, 05 Mar 2012 11:38:21 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.1.14 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
15
+
16
+ {"error":{"code":"C01","name":"Unauthenticated"}}
@@ -0,0 +1,92 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: text/plain; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "b5ad81fcfae57902d4b185c173f9a605"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: 39970607f2a4829c9def876beb11230a
11
+ X-Runtime: 0.145829
12
+ Date: Sat, 11 Feb 2012 11:31:55 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+
17
+ Whois Server Version 2.0
18
+
19
+ Domain names in the .com and .net domains can now be registered
20
+ with many different competing registrars. Go to http://www.internic.net
21
+ for detailed information.
22
+
23
+ Server Name: EXAMPLE.COM.RAFAELYALUFF.COM
24
+ IP Address: 173.203.204.123
25
+ Registrar: DOMAIN.COM, LLC
26
+ Whois Server: whois.domain.com
27
+ Referral URL: http://www.domain.com
28
+
29
+ Server Name: EXAMPLE.COM.AU
30
+ Registrar: ENETICA PTY LTD
31
+ Whois Server: whois.enetica.com.au
32
+ Referral URL: http://www.enetica.com.au
33
+
34
+ Domain Name: EXAMPLE.COM
35
+ Registrar: RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY
36
+ Whois Server: whois.iana.org
37
+ Referral URL: http://res-dom.iana.org
38
+ Name Server: A.IANA-SERVERS.NET
39
+ Name Server: B.IANA-SERVERS.NET
40
+ Status: clientDeleteProhibited
41
+ Status: clientTransferProhibited
42
+ Status: clientUpdateProhibited
43
+ Updated Date: 14-aug-2011
44
+ Creation Date: 14-aug-1995
45
+ Expiration Date: 13-aug-2012
46
+
47
+ >>> Last update of whois database: Sat, 11 Feb 2012 11:18:59 UTC <<<
48
+
49
+ NOTICE: The expiration date displayed in this record is the date the
50
+ registrar's sponsorship of the domain name registration in the registry is
51
+ currently set to expire. This date does not necessarily reflect the expiration
52
+ date of the domain name registrant's agreement with the sponsoring
53
+ registrar. Users may consult the sponsoring registrar's Whois database to
54
+ view the registrar's reported date of expiration for this registration.
55
+
56
+ TERMS OF USE: You are not authorized to access or query our Whois
57
+ database through the use of electronic processes that are high-volume and
58
+ automated except as reasonably necessary to register domain names or
59
+ modify existing registrations; the Data in VeriSign Global Registry
60
+ Services' ("VeriSign") Whois database is provided by VeriSign for
61
+ information purposes only, and to assist persons in obtaining information
62
+ about or related to a domain name registration record. VeriSign does not
63
+ guarantee its accuracy. By submitting a Whois query, you agree to abide
64
+ by the following terms of use: You agree that you may use this Data only
65
+ for lawful purposes and that under no circumstances will you use this Data
66
+ to: (1) allow, enable, or otherwise support the transmission of mass
67
+ unsolicited, commercial advertising or solicitations via e-mail, telephone,
68
+ or facsimile; or (2) enable high volume, automated, electronic processes
69
+ that apply to VeriSign (or its computer systems). The compilation,
70
+ repackaging, dissemination or other use of this Data is expressly
71
+ prohibited without the prior written consent of VeriSign. You agree not to
72
+ use electronic processes that are automated and high-volume to access or
73
+ query the Whois database except as reasonably necessary to register
74
+ domain names or modify existing registrations. VeriSign reserves the right
75
+ to restrict your access to the Whois database in its sole discretion to ensure
76
+ operational stability. VeriSign may restrict or terminate your access to the
77
+ Whois database for failure to abide by these terms of use. VeriSign
78
+ reserves the right to modify these terms at any time.
79
+
80
+ The Registry database contains ONLY .COM, .NET, .EDU domains and
81
+ Registrars.
82
+ % IANA WHOIS server
83
+ % for more information on IANA, visit http://www.iana.org
84
+ % This query returned 1 object
85
+
86
+ domain: EXAMPLE.COM
87
+
88
+ organisation: Internet Assigned Numbers Authority
89
+
90
+ created: 1992-01-01
91
+ source: IANA
92
+
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "8f7b51b498f919a966fb86e40e1a0c90"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: db845f5a236b1c03a6a5632c41b28685
11
+ X-Runtime: 0.184463
12
+ Date: Sat, 11 Feb 2012 11:36:39 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","available":false,"registered":true}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "7b9fff40475dfd3e77b544aafb1f22e9"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: 8abf4e8cff594351c65bb870263fbfca
11
+ X-Runtime: 0.145351
12
+ Date: Sat, 11 Feb 2012 11:36:41 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","available":true,"registered":false}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "8f7b51b498f919a966fb86e40e1a0c90"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: db845f5a236b1c03a6a5632c41b28685
11
+ X-Runtime: 0.184463
12
+ Date: Sat, 11 Feb 2012 11:36:39 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","available":false,"registered":true}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "acd5c3455f9c36945915f558ad1c48b2"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: 283afadf8d5834e69192a72f64c1a40e
11
+ X-Runtime: 0.151321
12
+ Date: Sat, 11 Feb 2012 11:35:02 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","parts":[{"body":"\nWhois Server Version 2.0\n\nDomain names in the .com and .net domains can now be registered\nwith many different competing registrars. Go to http://www.internic.net\nfor detailed information.\n\n Server Name: EXAMPLE.COM.RAFAELYALUFF.COM\n IP Address: 173.203.204.123\n Registrar: DOMAIN.COM, LLC\n Whois Server: whois.domain.com\n Referral URL: http://www.domain.com\n\n Server Name: EXAMPLE.COM.AU\n Registrar: ENETICA PTY LTD\n Whois Server: whois.enetica.com.au\n Referral URL: http://www.enetica.com.au\n\n Domain Name: EXAMPLE.COM\n Registrar: RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY\n Whois Server: whois.iana.org\n Referral URL: http://res-dom.iana.org\n Name Server: A.IANA-SERVERS.NET\n Name Server: B.IANA-SERVERS.NET\n Status: clientDeleteProhibited\n Status: clientTransferProhibited\n Status: clientUpdateProhibited\n Updated Date: 14-aug-2011\n Creation Date: 14-aug-1995\n Expiration Date: 13-aug-2012\n\n>>> Last update of whois database: Sat, 11 Feb 2012 11:18:59 UTC <<<\n\nNOTICE: The expiration date displayed in this record is the date the \nregistrar's sponsorship of the domain name registration in the registry is \ncurrently set to expire. This date does not necessarily reflect the expiration \ndate of the domain name registrant's agreement with the sponsoring \nregistrar. Users may consult the sponsoring registrar's Whois database to \nview the registrar's reported date of expiration for this registration.\n\nTERMS OF USE: You are not authorized to access or query our Whois \ndatabase through the use of electronic processes that are high-volume and \nautomated except as reasonably necessary to register domain names or \nmodify existing registrations; the Data in VeriSign Global Registry \nServices' (\"VeriSign\") Whois database is provided by VeriSign for \ninformation purposes only, and to assist persons in obtaining information \nabout or related to a domain name registration record. VeriSign does not \nguarantee its accuracy. By submitting a Whois query, you agree to abide \nby the following terms of use: You agree that you may use this Data only \nfor lawful purposes and that under no circumstances will you use this Data \nto: (1) allow, enable, or otherwise support the transmission of mass \nunsolicited, commercial advertising or solicitations via e-mail, telephone, \nor facsimile; or (2) enable high volume, automated, electronic processes \nthat apply to VeriSign (or its computer systems). The compilation, \nrepackaging, dissemination or other use of this Data is expressly \nprohibited without the prior written consent of VeriSign. You agree not to \nuse electronic processes that are automated and high-volume to access or \nquery the Whois database except as reasonably necessary to register \ndomain names or modify existing registrations. VeriSign reserves the right \nto restrict your access to the Whois database in its sole discretion to ensure \noperational stability. VeriSign may restrict or terminate your access to the \nWhois database for failure to abide by these terms of use. VeriSign \nreserves the right to modify these terms at any time. \n\nThe Registry database contains ONLY .COM, .NET, .EDU domains and\nRegistrars.","host":"whois.crsnic.net"},{"body":"% IANA WHOIS server\n% for more information on IANA, visit http://www.iana.org\n% This query returned 1 object\n\ndomain: EXAMPLE.COM\n\norganisation: Internet Assigned Numbers Authority\n\ncreated: 1992-01-01\nsource: IANA\n\n","host":"whois.iana.org"}]}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "241f771ce0d41c0740befdee3a6c4b87"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: c8954c2c93b87a5ef1ef4aea9062d83f
11
+ X-Runtime: 0.192808
12
+ Date: Sat, 11 Feb 2012 11:38:13 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","properties":{"disclaimer":"TERMS OF USE: You are not authorized to access or query our Whois database through the use of electronic processes that are high-volume and automated except as reasonably necessary to register domain names or modify existing registrations; the Data in VeriSign Global Registry Services' (\"VeriSign\") Whois database is provided by VeriSign for information purposes only, and to assist persons in obtaining information about or related to a domain name registration record. VeriSign does not guarantee its accuracy. By submitting a Whois query, you agree to abide by the following terms of use: You agree that you may use this Data only for lawful purposes and that under no circumstances will you use this Data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via e-mail, telephone, or facsimile; or (2) enable high volume, automated, electronic processes that apply to VeriSign (or its computer systems). The compilation, repackaging, dissemination or other use of this Data is expressly prohibited without the prior written consent of VeriSign. You agree not to use electronic processes that are automated and high-volume to access or query the Whois database except as reasonably necessary to register domain names or modify existing registrations. VeriSign reserves the right to restrict your access to the Whois database in its sole discretion to ensure operational stability. VeriSign may restrict or terminate your access to the Whois database for failure to abide by these terms of use. VeriSign reserves the right to modify these terms at any time.","domain":"google.com","domain_id":null,"referral_whois":["whois.PublicDomainRegistry.com","whois.tucows.com","whois.domaincontext.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.rrpproxy.net","whois.onlinenic.com","whois.dotster.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.webnic.cc","whois.PublicDomainRegistry.com","whois.enterprice.net","whois.melbourneit.com","whois.godaddy.com","whois.enom.com","whois.godaddy.com","whois.enom.com","whois.omnis.com","whois.godaddy.com","whois.dotster.com","whois.PublicDomainRegistry.com","whois.names4ever.com","whois.wildwestdomains.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.enom.com","whois.name.com","whois.gandi.net","whois.hostingservicesinc.net","grs-whois.hichina.com","whois.tucows.com","whois.PublicDomainRegistry.com","whois.godaddy.com","whois.namesecure.com","whois.paycenter.com.cn","whois.enom.com","whois.godaddy.com","whois.tucows.com","whois.planetdomain.com","whois.enom.com","whois.tucows.com","whois.markmonitor.com"],"referral_url":"http://www.markmonitor.com","status":["clientDeleteProhibited","clientTransferProhibited","clientUpdateProhibited","serverDeleteProhibited","serverTransferProhibited","serverUpdateProhibited"],"available?":false,"registered?":true,"created_on":"1997-09-15T00:00:00+00:00","updated_on":"2012-01-29T00:00:00+00:00","expires_on":"2020-09-13T00:00:00+00:00","registrar":{"id":null,"name":"Markmonitor.com","organization":null,"url":"http://www.markmonitor.com"},"registrant_contacts":[{"id":null,"type":1,"name":"Dns Admin","organization":"Google Inc.","address":"Please contact contact-admin@google.com 1600 Amphitheatre Parkway","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6502530000","fax":"+1.6506188571","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"admin_contacts":[{"id":null,"type":2,"name":"DNS Admin","organization":"Google Inc.","address":"1600 Amphitheatre Parkway","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6506234000","fax":"+1.6506188571","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"technical_contacts":[{"id":null,"type":3,"name":"DNS Admin","organization":"Google Inc.","address":"2400 E. Bayshore Pkwy","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6503300100","fax":"+1.6506181499","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"nameservers":[{"name":"ns1.google.com","ipv4":null,"ipv6":null},{"name":"ns4.google.com","ipv4":null,"ipv6":null},{"name":"ns2.google.com","ipv4":null,"ipv6":null},{"name":"ns3.google.com","ipv4":null,"ipv6":null}]}}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "050f7b5641618c7a0460cc63f4c5223f"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: 43b2f1e41887edf6d57e5339531806e1
11
+ X-Runtime: 0.147982
12
+ Date: Sat, 11 Feb 2012 11:38:14 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","properties":{"disclaimer":"TERMS OF USE: You are not authorized to access or query our Whois database through the use of electronic processes that are high-volume and automated except as reasonably necessary to register domain names or modify existing registrations; the Data in VeriSign Global Registry Services' (\"VeriSign\") Whois database is provided by VeriSign for information purposes only, and to assist persons in obtaining information about or related to a domain name registration record. VeriSign does not guarantee its accuracy. By submitting a Whois query, you agree to abide by the following terms of use: You agree that you may use this Data only for lawful purposes and that under no circumstances will you use this Data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via e-mail, telephone, or facsimile; or (2) enable high volume, automated, electronic processes that apply to VeriSign (or its computer systems). The compilation, repackaging, dissemination or other use of this Data is expressly prohibited without the prior written consent of VeriSign. You agree not to use electronic processes that are automated and high-volume to access or query the Whois database except as reasonably necessary to register domain names or modify existing registrations. VeriSign reserves the right to restrict your access to the Whois database in its sole discretion to ensure operational stability. VeriSign may restrict or terminate your access to the Whois database for failure to abide by these terms of use. VeriSign reserves the right to modify these terms at any time.","domain":"g111111111fle.com","domain_id":null,"referral_whois":null,"referral_url":null,"status":null,"available?":true,"registered?":false,"created_on":null,"updated_on":null,"expires_on":null,"registrar":null,"registrant_contacts":null,"admin_contacts":null,"technical_contacts":null,"nameservers":[]}}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "241f771ce0d41c0740befdee3a6c4b87"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: c8954c2c93b87a5ef1ef4aea9062d83f
11
+ X-Runtime: 0.192808
12
+ Date: Sat, 11 Feb 2012 11:38:13 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","properties":{"disclaimer":"TERMS OF USE: You are not authorized to access or query our Whois database through the use of electronic processes that are high-volume and automated except as reasonably necessary to register domain names or modify existing registrations; the Data in VeriSign Global Registry Services' (\"VeriSign\") Whois database is provided by VeriSign for information purposes only, and to assist persons in obtaining information about or related to a domain name registration record. VeriSign does not guarantee its accuracy. By submitting a Whois query, you agree to abide by the following terms of use: You agree that you may use this Data only for lawful purposes and that under no circumstances will you use this Data to: (1) allow, enable, or otherwise support the transmission of mass unsolicited, commercial advertising or solicitations via e-mail, telephone, or facsimile; or (2) enable high volume, automated, electronic processes that apply to VeriSign (or its computer systems). The compilation, repackaging, dissemination or other use of this Data is expressly prohibited without the prior written consent of VeriSign. You agree not to use electronic processes that are automated and high-volume to access or query the Whois database except as reasonably necessary to register domain names or modify existing registrations. VeriSign reserves the right to restrict your access to the Whois database in its sole discretion to ensure operational stability. VeriSign may restrict or terminate your access to the Whois database for failure to abide by these terms of use. VeriSign reserves the right to modify these terms at any time.","domain":"google.com","domain_id":null,"referral_whois":["whois.PublicDomainRegistry.com","whois.tucows.com","whois.domaincontext.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.rrpproxy.net","whois.onlinenic.com","whois.dotster.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.webnic.cc","whois.PublicDomainRegistry.com","whois.enterprice.net","whois.melbourneit.com","whois.godaddy.com","whois.enom.com","whois.godaddy.com","whois.enom.com","whois.omnis.com","whois.godaddy.com","whois.dotster.com","whois.PublicDomainRegistry.com","whois.names4ever.com","whois.wildwestdomains.com","whois.PublicDomainRegistry.com","whois.PublicDomainRegistry.com","whois.enom.com","whois.name.com","whois.gandi.net","whois.hostingservicesinc.net","grs-whois.hichina.com","whois.tucows.com","whois.PublicDomainRegistry.com","whois.godaddy.com","whois.namesecure.com","whois.paycenter.com.cn","whois.enom.com","whois.godaddy.com","whois.tucows.com","whois.planetdomain.com","whois.enom.com","whois.tucows.com","whois.markmonitor.com"],"referral_url":"http://www.markmonitor.com","status":["clientDeleteProhibited","clientTransferProhibited","clientUpdateProhibited","serverDeleteProhibited","serverTransferProhibited","serverUpdateProhibited"],"available?":false,"registered?":true,"created_on":"1997-09-15T00:00:00+00:00","updated_on":"2012-01-29T00:00:00+00:00","expires_on":"2020-09-13T00:00:00+00:00","registrar":{"id":null,"name":"Markmonitor.com","organization":null,"url":"http://www.markmonitor.com"},"registrant_contacts":[{"id":null,"type":1,"name":"Dns Admin","organization":"Google Inc.","address":"Please contact contact-admin@google.com 1600 Amphitheatre Parkway","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6502530000","fax":"+1.6506188571","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"admin_contacts":[{"id":null,"type":2,"name":"DNS Admin","organization":"Google Inc.","address":"1600 Amphitheatre Parkway","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6506234000","fax":"+1.6506188571","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"technical_contacts":[{"id":null,"type":3,"name":"DNS Admin","organization":"Google Inc.","address":"2400 E. Bayshore Pkwy","city":"Mountain View","zip":"94043","state":"CA","country":null,"country_code":"US","phone":"+1.6503300100","fax":"+1.6506181499","email":"dns-admin@google.com","created_on":null,"updated_on":null}],"nameservers":[{"name":"ns1.google.com","ipv4":null,"ipv6":null},{"name":"ns4.google.com","ipv4":null,"ipv6":null},{"name":"ns2.google.com","ipv4":null,"ipv6":null},{"name":"ns3.google.com","ipv4":null,"ipv6":null}]}}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ Content-Type: application/json; charset=utf-8
3
+ Transfer-Encoding: chunked
4
+ Connection: keep-alive
5
+ Status: 200
6
+ X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.7
7
+ X-UA-Compatible: IE=Edge,chrome=1
8
+ ETag: "d38776b8f0b76f0cd3b419f13627910c"
9
+ Cache-Control: must-revalidate, private, max-age=0
10
+ X-Request-Id: c0325eb7e5b5a57df84a55bba8be1acb
11
+ X-Runtime: 0.151665
12
+ Date: Sat, 11 Feb 2012 11:35:01 GMT
13
+ X-Rack-Cache: miss
14
+ Server: nginx/1.0.4 + Phusion Passenger 3.0.7 (mod_rails/mod_rack)
15
+
16
+ {"response":{"daystamp":"2012-02-11","record":"\nWhois Server Version 2.0\n\nDomain names in the .com and .net domains can now be registered\nwith many different competing registrars. Go to http://www.internic.net\nfor detailed information.\n\n Server Name: EXAMPLE.COM.RAFAELYALUFF.COM\n IP Address: 173.203.204.123\n Registrar: DOMAIN.COM, LLC\n Whois Server: whois.domain.com\n Referral URL: http://www.domain.com\n\n Server Name: EXAMPLE.COM.AU\n Registrar: ENETICA PTY LTD\n Whois Server: whois.enetica.com.au\n Referral URL: http://www.enetica.com.au\n\n Domain Name: EXAMPLE.COM\n Registrar: RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY\n Whois Server: whois.iana.org\n Referral URL: http://res-dom.iana.org\n Name Server: A.IANA-SERVERS.NET\n Name Server: B.IANA-SERVERS.NET\n Status: clientDeleteProhibited\n Status: clientTransferProhibited\n Status: clientUpdateProhibited\n Updated Date: 14-aug-2011\n Creation Date: 14-aug-1995\n Expiration Date: 13-aug-2012\n\n>>> Last update of whois database: Sat, 11 Feb 2012 11:18:59 UTC <<<\n\nNOTICE: The expiration date displayed in this record is the date the \nregistrar's sponsorship of the domain name registration in the registry is \ncurrently set to expire. This date does not necessarily reflect the expiration \ndate of the domain name registrant's agreement with the sponsoring \nregistrar. Users may consult the sponsoring registrar's Whois database to \nview the registrar's reported date of expiration for this registration.\n\nTERMS OF USE: You are not authorized to access or query our Whois \ndatabase through the use of electronic processes that are high-volume and \nautomated except as reasonably necessary to register domain names or \nmodify existing registrations; the Data in VeriSign Global Registry \nServices' (\"VeriSign\") Whois database is provided by VeriSign for \ninformation purposes only, and to assist persons in obtaining information \nabout or related to a domain name registration record. VeriSign does not \nguarantee its accuracy. By submitting a Whois query, you agree to abide \nby the following terms of use: You agree that you may use this Data only \nfor lawful purposes and that under no circumstances will you use this Data \nto: (1) allow, enable, or otherwise support the transmission of mass \nunsolicited, commercial advertising or solicitations via e-mail, telephone, \nor facsimile; or (2) enable high volume, automated, electronic processes \nthat apply to VeriSign (or its computer systems). The compilation, \nrepackaging, dissemination or other use of this Data is expressly \nprohibited without the prior written consent of VeriSign. You agree not to \nuse electronic processes that are automated and high-volume to access or \nquery the Whois database except as reasonably necessary to register \ndomain names or modify existing registrations. VeriSign reserves the right \nto restrict your access to the Whois database in its sole discretion to ensure \noperational stability. VeriSign may restrict or terminate your access to the \nWhois database for failure to abide by these terms of use. VeriSign \nreserves the right to modify these terms at any time. \n\nThe Registry database contains ONLY .COM, .NET, .EDU domains and\nRegistrars.\n% IANA WHOIS server\n% for more information on IANA, visit http://www.iana.org\n% This query returned 1 object\n\ndomain: EXAMPLE.COM\n\norganisation: Internet Assigned Numbers Authority\n\ncreated: 1992-01-01\nsource: IANA\n\n"}}
@@ -0,0 +1,35 @@
1
+ require 'robowhois'
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+
6
+ Bundler.require(:default, :test)
7
+
8
+ require 'rspec'
9
+
10
+ unless defined?(SPEC_ROOT)
11
+ SPEC_ROOT = File.expand_path("../", __FILE__)
12
+ end
13
+
14
+ # The fixtures are UTF-8 encoded.
15
+ # Make sure Ruby uses the proper encoding.
16
+ if RUBY_VERSION < '1.9'
17
+ $KCODE = 'u'
18
+ else
19
+ Encoding.default_external = Encoding::UTF_8
20
+ Encoding.default_internal = Encoding::UTF_8
21
+ end
22
+
23
+ # Requires supporting ruby files with custom matchers and macros, etc,
24
+ # in spec/support/ and its subdirectories.
25
+ Dir[File.join(SPEC_ROOT, "support/**/*.rb")].each { |f| require f }
26
+
27
+ RSpec.configure do |config|
28
+ config.mock_with :rspec
29
+
30
+ config.before(:each) do
31
+ FakeWeb.clean_registry
32
+ end
33
+ end
34
+
35
+ FakeWeb.allow_net_connect = false
@@ -0,0 +1,9 @@
1
+ module RspecSupportFakeRequestHelpers
2
+ def stub_get(url, name)
3
+ FakeWeb.register_uri(:get, url, :response => File.read("#{fixture(name)}.dump"))
4
+ end
5
+ end
6
+
7
+ RSpec.configure do |config|
8
+ config.include RspecSupportFakeRequestHelpers
9
+ end
@@ -0,0 +1,18 @@
1
+ module RSpecSupportHelpers
2
+
3
+ # Gets the currently described class.
4
+ # Conversely to +subject+, it returns the class
5
+ # instead of an instance.
6
+ def klass
7
+ described_class
8
+ end
9
+
10
+ def fixture(*names)
11
+ File.join(SPEC_ROOT, "fixtures", *names)
12
+ end
13
+
14
+ end
15
+
16
+ RSpec.configure do |config|
17
+ config.include RSpecSupportHelpers
18
+ end
@@ -0,0 +1,192 @@
1
+ require 'spec_helper'
2
+
3
+ describe RoboWhois do
4
+ let(:client) { RoboWhois.new('API_KEY') }
5
+
6
+ describe "#initialize" do
7
+ it "sets api_key" do
8
+ client.api_key.should == 'API_KEY'
9
+ end
10
+ end
11
+
12
+ describe "#request" do
13
+ let(:mock_response) {
14
+ Class.new(Object) do
15
+ def code
16
+ 200
17
+ end
18
+ def [](key)
19
+ nil
20
+ end
21
+ end.new
22
+ }
23
+
24
+ before do
25
+ stub_get('http://API_KEY:X@api.robowhois.com/account', 'account')
26
+ end
27
+
28
+ it "sets authentication credentials" do
29
+ RoboWhois.should_receive(:get).with('/account', hash_including(:basic_auth => {
30
+ :username => "API_KEY",
31
+ :password => "X",
32
+ })).and_return(mock_response)
33
+ client.account
34
+ end
35
+
36
+ it "sets headers" do
37
+ RoboWhois.should_receive(:get).with('/account', hash_including(:headers => {
38
+ "User-Agent" => "RoboWhois Ruby #{RoboWhois::VERSION}"
39
+ })).and_return(mock_response)
40
+ client.account
41
+ end
42
+ end
43
+
44
+ describe "#account" do
45
+ before do
46
+ stub_get('http://API_KEY:X@api.robowhois.com/account', 'account')
47
+ @response = client.account
48
+ end
49
+
50
+ it "responds with 200" do
51
+ client.last_response.code.should == 200
52
+ end
53
+
54
+ it "returns account information" do
55
+ @response.should be_a(Hash)
56
+ @response['id'].should == '000000000000000000000000'
57
+ @response['email'].should == 'example@example.com'
58
+ @response['api_token'].should == '0000000000000000000000000000000000000000'
59
+ @response['credits_remaining'].should == 499
60
+ end
61
+ end
62
+
63
+ describe "#whois" do
64
+ before do
65
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com', 'whois')
66
+ @response = client.whois("example.com")
67
+ end
68
+
69
+ it "responds with 200" do
70
+ client.last_response.code.should == 200
71
+ end
72
+
73
+ it "returns the raw whois record" do
74
+ @response.should be_a(String)
75
+ @response.should =~ /^\nWhois Server Version 2.0/
76
+ end
77
+ end
78
+
79
+ describe "#whois_availability" do
80
+ before do
81
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com/availability', 'whois_availability')
82
+ @response = client.whois_availability("example.com")
83
+ end
84
+
85
+ it "responds with 200" do
86
+ client.last_response.code.should == 200
87
+ end
88
+
89
+ it "returns whois availability" do
90
+ @response.should be_a(Hash)
91
+ @response['daystamp'].should == '2012-02-11'
92
+ @response['available'].should == false
93
+ @response['registered'].should == true
94
+ end
95
+ end
96
+
97
+ describe "#whois_parts" do
98
+ before do
99
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com/parts', 'whois_parts')
100
+ @response = client.whois_parts("example.com")
101
+ end
102
+
103
+ it "responds with 200" do
104
+ client.last_response.code.should == 200
105
+ end
106
+
107
+ it "returns whois record parts" do
108
+ @response.should be_a(Hash)
109
+ @response['daystamp'].should == '2012-02-11'
110
+ @response['parts'].size.should == 2
111
+
112
+ part = @response['parts'][0]
113
+ part['host'].should == 'whois.crsnic.net'
114
+ part['body'].should =~ /^\nWhois Server Version 2.0/
115
+
116
+ part = @response['parts'][1]
117
+ part['host'].should == 'whois.iana.org'
118
+ part['body'].should =~ /^% IANA WHOIS server/
119
+ end
120
+ end
121
+
122
+ describe "#whois_properties" do
123
+ before do
124
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com/properties', 'whois_properties')
125
+ @response = client.whois_properties("example.com")
126
+ end
127
+
128
+ it "responds with 200" do
129
+ client.last_response.code.should == 200
130
+ end
131
+
132
+ it "returns whois properties" do
133
+ @response.should be_a(Hash)
134
+ @response['daystamp'].should == '2012-02-11'
135
+ @response['properties'].should be_a(Hash)
136
+
137
+ properties = @response['properties']
138
+ properties['disclaimer'].should =~ /^TERMS OF USE/
139
+ properties['domain'].should == 'google.com'
140
+ properties['domain_id'].should == nil
141
+ properties['available?'].should == false
142
+ properties['registered?'].should == true
143
+ properties['registrar'].should be_a(Hash)
144
+ end
145
+ end
146
+
147
+ describe "#whois_record" do
148
+ before do
149
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com/record', 'whois_record')
150
+ @response = client.whois_record("example.com")
151
+ end
152
+
153
+ it "responds with 200" do
154
+ client.last_response.code.should == 200
155
+ end
156
+
157
+ it "returns whois record" do
158
+ @response.should be_a(Hash)
159
+ @response['daystamp'].should == '2012-02-11'
160
+ @response['record'].should =~ /^\nWhois Server Version 2.0/
161
+ end
162
+ end
163
+
164
+ context "request failure" do
165
+ describe "BadCredentials" do
166
+ let(:client) { client = RoboWhois.new('BAD_KEY') }
167
+
168
+ before do
169
+ stub_get('http://BAD_KEY:X@api.robowhois.com/account', 'error_bad_credentials')
170
+ end
171
+
172
+ it "raises an APIError" do
173
+ lambda {
174
+ client.account
175
+ }.should raise_error(RoboWhois::APIError, /BadCredentials/)
176
+ end
177
+ end
178
+
179
+ describe "ServerWhoisOnlyWeb" do
180
+ before do
181
+ stub_get('http://API_KEY:X@api.robowhois.com/whois/example.com/record', 'error_server_whois_only_web')
182
+ end
183
+
184
+ it "raises an APIError" do
185
+ lambda {
186
+ client.whois_record("example.com")
187
+ }.should raise_error(RoboWhois::APIError, /ServerWhoisOnlyWeb/)
188
+ end
189
+ end
190
+ end
191
+
192
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: robowhois
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Simone Carletti
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70172086412360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70172086412360
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70172086411840 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.9'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70172086411840
36
+ - !ruby/object:Gem::Dependency
37
+ name: yard
38
+ requirement: &70172086411380 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70172086411380
47
+ description: Ruby client for the RoboWhois API.
48
+ email:
49
+ - weppos@weppos.net
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - .rspec
56
+ - CHANGELOG.md
57
+ - Gemfile
58
+ - Gemfile.lock
59
+ - LICENSE
60
+ - README.md
61
+ - Rakefile
62
+ - lib/robo_whois.rb
63
+ - lib/robo_whois/version.rb
64
+ - lib/robowhois.rb
65
+ - robowhois.gemspec
66
+ - spec/fixtures/account.dump
67
+ - spec/fixtures/commands.sh
68
+ - spec/fixtures/error_bad_credentials.dump
69
+ - spec/fixtures/error_server_whois_only_web.dump
70
+ - spec/fixtures/error_unauthenticated.dump
71
+ - spec/fixtures/whois.dump
72
+ - spec/fixtures/whois_availability.dump
73
+ - spec/fixtures/whois_availability_available.dump
74
+ - spec/fixtures/whois_availability_registered.dump
75
+ - spec/fixtures/whois_parts.dump
76
+ - spec/fixtures/whois_properties.dump
77
+ - spec/fixtures/whois_properties_available.dump
78
+ - spec/fixtures/whois_properties_registered.dump
79
+ - spec/fixtures/whois_record.dump
80
+ - spec/spec_helper.rb
81
+ - spec/support/fake_request_helpers.rb
82
+ - spec/support/helpers.rb
83
+ - spec/unit/robo_whois_spec.rb
84
+ homepage: https://github.com/robowhois/robowhois-ruby-client
85
+ licenses: []
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: 1.8.7
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 1.8.11
105
+ signing_key:
106
+ specification_version: 3
107
+ summary: Ruby client for the RoboWhois API.
108
+ test_files:
109
+ - spec/fixtures/account.dump
110
+ - spec/fixtures/commands.sh
111
+ - spec/fixtures/error_bad_credentials.dump
112
+ - spec/fixtures/error_server_whois_only_web.dump
113
+ - spec/fixtures/error_unauthenticated.dump
114
+ - spec/fixtures/whois.dump
115
+ - spec/fixtures/whois_availability.dump
116
+ - spec/fixtures/whois_availability_available.dump
117
+ - spec/fixtures/whois_availability_registered.dump
118
+ - spec/fixtures/whois_parts.dump
119
+ - spec/fixtures/whois_properties.dump
120
+ - spec/fixtures/whois_properties_available.dump
121
+ - spec/fixtures/whois_properties_registered.dump
122
+ - spec/fixtures/whois_record.dump
123
+ - spec/spec_helper.rb
124
+ - spec/support/fake_request_helpers.rb
125
+ - spec/support/helpers.rb
126
+ - spec/unit/robo_whois_spec.rb