whoisxmlapi 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +104 -0
- data/Rakefile +1 -0
- data/lib/whoisxmlapi.rb +79 -0
- data/lib/whoisxmlapi/bad_domain.rb +8 -0
- data/lib/whoisxmlapi/client.rb +153 -0
- data/lib/whoisxmlapi/contact.rb +19 -0
- data/lib/whoisxmlapi/good.rb +4 -0
- data/lib/whoisxmlapi/result.rb +67 -0
- data/lib/whoisxmlapi/rwhois_result.rb +11 -0
- data/lib/whoisxmlapi/un_parsable.rb +33 -0
- data/lib/whoisxmlapi/unavailable.rb +8 -0
- data/lib/whoisxmlapi/version.rb +3 -0
- data/whoisxmlapi.gemspec +28 -0
- metadata +159 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Christopher Maujean
|
2
|
+
|
3
|
+
MIT License
|
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,104 @@
|
|
1
|
+
# Whoisxmlapi
|
2
|
+
|
3
|
+
Gem for accessing whoisxmlapi.com based on httparty and mongoid
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'whoisxmlapi'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install whoisxmlapi
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
*Whois*
|
22
|
+
|
23
|
+
# config/initializers/whoisxmlapi.rb
|
24
|
+
WhoisXMLAPI.configure do |config|
|
25
|
+
config.username = ENV['WHOISXMLAPI_USERNAME']
|
26
|
+
config.password = ENV['WHOISXMLAPI_PASSWORD']
|
27
|
+
config.cache = true
|
28
|
+
config.cache_length = 1.minute
|
29
|
+
end
|
30
|
+
|
31
|
+
# elsewhere
|
32
|
+
wc = WhoisXMLAPI::Client.new
|
33
|
+
y = wc.whois("google.com")
|
34
|
+
|
35
|
+
# y should now be a WhoisXMLAPI::Result (or an exeption was thrown)
|
36
|
+
y.registrant.email
|
37
|
+
|
38
|
+
Associate your model with a whois record:
|
39
|
+
|
40
|
+
has_one :whois, as: :whoisable, autosave: true, class_name: "WhoisXMLAPI::Result"
|
41
|
+
|
42
|
+
Now we can get at the data:
|
43
|
+
|
44
|
+
myinstance.whois.registrant.email
|
45
|
+
|
46
|
+
*RWhois*
|
47
|
+
|
48
|
+
z = wc.rwhois(cmaujean@brandle.net)
|
49
|
+
z.domains
|
50
|
+
|
51
|
+
Associate your model with a rwhois record:
|
52
|
+
|
53
|
+
has_one :rwhois, as: :rwhoisable, autosave: true, class_name: "WhoisXMLAPI::RWhoisResult"
|
54
|
+
|
55
|
+
*Account Balance*
|
56
|
+
|
57
|
+
Check your whoisxmlapi credits:
|
58
|
+
|
59
|
+
balance = wc.account_balance
|
60
|
+
|
61
|
+
# {
|
62
|
+
# "balance"=>"464",
|
63
|
+
# "reserve"=>"500",
|
64
|
+
# "monthly_balance"=>"0",
|
65
|
+
# "monthly_reserve"=>"0",
|
66
|
+
# "reverse_whois_balance"=>"0",
|
67
|
+
# "reverse_whois_reserve"=>"0",
|
68
|
+
# "reverse_whois_monthly_balance"=>"0",
|
69
|
+
# "reverse_whois_monthly_reserve"=>"0",
|
70
|
+
# "ba_query_balance"=>nil,
|
71
|
+
# "ba_query_reserve"=>nil,
|
72
|
+
# "ra_query_balance"=>nil,
|
73
|
+
# "ra_query_reserve"=>nil,
|
74
|
+
# "ds_query_balance"=>nil,
|
75
|
+
# "ds_query_reserve"=>nil
|
76
|
+
# }
|
77
|
+
|
78
|
+
|
79
|
+
*Callbacks*
|
80
|
+
|
81
|
+
You can add callbacks to your whois and rwhois calls via the initializer:
|
82
|
+
|
83
|
+
config.callbacks[:whois] << Proc.new { SystemCumulativeStats.increment_whoisxmlapi_requests }
|
84
|
+
config.callbacks[:rwhois] << Proc.new { SystemCumulativeStats.increment_rwhoisxmlapi_requests }
|
85
|
+
|
86
|
+
The callbacks will be called after the request to whoisxmlapi.com has been made. NOTE: Callback arguments are not currently supported.
|
87
|
+
|
88
|
+
*Exists*
|
89
|
+
|
90
|
+
Boolean check to see if a domain is registered.
|
91
|
+
|
92
|
+
wc.exists("foo.com")
|
93
|
+
#=> true
|
94
|
+
|
95
|
+
wc.exists("sdflsdfhwetewrw.com")
|
96
|
+
#=> false
|
97
|
+
|
98
|
+
## Contributing
|
99
|
+
|
100
|
+
1. Fork it
|
101
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
102
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
103
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
104
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/whoisxmlapi.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require_relative "./whoisxmlapi/version"
|
2
|
+
require_relative "./whoisxmlapi/contact"
|
3
|
+
require_relative "./whoisxmlapi/result"
|
4
|
+
require_relative "./whoisxmlapi/good"
|
5
|
+
require_relative "./whoisxmlapi/un_parsable"
|
6
|
+
require_relative "./whoisxmlapi/bad_domain"
|
7
|
+
require_relative "./whoisxmlapi/unavailable"
|
8
|
+
require_relative "./whoisxmlapi/client"
|
9
|
+
require_relative "./whoisxmlapi/rwhois_result"
|
10
|
+
|
11
|
+
module WhoisXMLAPI
|
12
|
+
def self.domain
|
13
|
+
@domain
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.domain=(dom)
|
17
|
+
@domain = dom
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.username
|
21
|
+
@username
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.username=(uname)
|
25
|
+
@username = uname
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.password
|
29
|
+
@password
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.password=(pass)
|
33
|
+
@password = pass
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.cache_length=(leng)
|
37
|
+
@cache_length = leng
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.cache_length
|
41
|
+
@cache_length
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.cache=(bool)
|
45
|
+
@cache = bool
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.cache
|
49
|
+
@cache.nil? or @cache.blank? ? true : @cache
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.rwhois_mode=(mode)
|
53
|
+
@rwhois_mode = mode
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.rwhois_mode
|
57
|
+
@rwhois_mode ? @rwhois_mode : 'sample_purchase'
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.callbacks
|
61
|
+
@callbacks ||= {}
|
62
|
+
@callbacks[:whois] ||= []
|
63
|
+
@callbacks[:rwhois] ||= []
|
64
|
+
@callbacks
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.logger
|
68
|
+
@logger ||= Logger.new(STDOUT)
|
69
|
+
@logger
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.logger=(log)
|
73
|
+
@logger = log
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.configure
|
77
|
+
yield self
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'active_support/core_ext'
|
3
|
+
require 'json'
|
4
|
+
require 'public_suffix'
|
5
|
+
|
6
|
+
module WhoisXMLAPI
|
7
|
+
class Client
|
8
|
+
def whois(domain)
|
9
|
+
unless PublicSuffix.valid?(domain)
|
10
|
+
res = WhoisXMLAPI::BadDomain.new
|
11
|
+
res.parse(domain)
|
12
|
+
return res
|
13
|
+
end
|
14
|
+
|
15
|
+
query = WhoisXMLAPI::Result.where(:domain => domain)
|
16
|
+
|
17
|
+
if WhoisXMLAPI.cache
|
18
|
+
query = query.where(:created_at.gte => (Time.now - WhoisXMLAPI.cache_length))
|
19
|
+
end
|
20
|
+
|
21
|
+
res = query.first
|
22
|
+
|
23
|
+
if res && res._type != "WhoisXMLAPI::Unavailable"
|
24
|
+
return res
|
25
|
+
else
|
26
|
+
xquery = {
|
27
|
+
:domainName => domain,
|
28
|
+
:outputFormat => 'json', # TODO: make into a config setting. see the JSON.parse line below for the rest of this change
|
29
|
+
:userName => WhoisXMLAPI.username,
|
30
|
+
:password => WhoisXMLAPI.password
|
31
|
+
}
|
32
|
+
begin
|
33
|
+
r = HTTParty.get("#{WhoisXMLAPI.domain}/whoisserver/WhoisService", :query => xquery)
|
34
|
+
rescue Exception => e
|
35
|
+
WhoisXMLAPI.logger.info("Error getting Whois info: #{e}")
|
36
|
+
res = WhoisXMLAPI::Unavailable.new
|
37
|
+
res.parse(domain)
|
38
|
+
return res
|
39
|
+
end
|
40
|
+
|
41
|
+
res = WhoisXMLAPI::Good.new
|
42
|
+
|
43
|
+
if WhoisXMLAPI.callbacks[:whois]
|
44
|
+
WhoisXMLAPI.callbacks[:whois].each do |cb|
|
45
|
+
cb.call
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# TODO: with the above outputFormat change, use a Parser plugin instead of this
|
50
|
+
presponse = JSON.parse(r.parsed_response)
|
51
|
+
|
52
|
+
if (200..299).include? r.code.to_i and not presponse.key? 'ErrorMessage'
|
53
|
+
res.parse(presponse['WhoisRecord'])
|
54
|
+
res.save
|
55
|
+
return res
|
56
|
+
else
|
57
|
+
WhoisXMLAPI.logger.info("Error getting Whois info: #{e}")
|
58
|
+
res = WhoisXMLAPI::Unavailable.new
|
59
|
+
res.parse(domain)
|
60
|
+
return res
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def rwhois(entity_name)
|
66
|
+
return nil if entity_name.nil?
|
67
|
+
query = WhoisXMLAPI::RWhoisResult.where(:entity_name => entity_name)
|
68
|
+
if WhoisXMLAPI.cache
|
69
|
+
query = query.where(:created_at.gte => (Time.now - WhoisXMLAPI.cache_length))
|
70
|
+
end
|
71
|
+
res = query.first
|
72
|
+
|
73
|
+
if res
|
74
|
+
Rails.logger.debug "WhoisXMLAPI rwhois - have cached rwhois data for #{entity_name}"
|
75
|
+
else
|
76
|
+
Rails.logger.debug "WhoisXMLAPI rwhois - no cached rwhois data for #{entity_name}"
|
77
|
+
res = WhoisXMLAPI::RWhoisResult.create(:entity_name => entity_name)
|
78
|
+
rquery = {
|
79
|
+
:term1 => entity_name,
|
80
|
+
:search_type => 'current',
|
81
|
+
:mode => WhoisXMLAPI.rwhois_mode,
|
82
|
+
:username => WhoisXMLAPI.username,
|
83
|
+
:password => WhoisXMLAPI.password
|
84
|
+
}
|
85
|
+
r = HTTParty.get("#{WhoisXMLAPI.domain}/reverse-whois-api/search.php", :query => rquery)
|
86
|
+
if WhoisXMLAPI.callbacks[:rwhois]
|
87
|
+
WhoisXMLAPI.callbacks[:rwhois].each do |cb|
|
88
|
+
cb.call
|
89
|
+
end
|
90
|
+
end
|
91
|
+
if r && r.parsed_response && r.parsed_response['domains']
|
92
|
+
res.domains = r.parsed_response['domains']
|
93
|
+
res.save
|
94
|
+
elsif PublicSuffix.valid?(entity_name)
|
95
|
+
domain = PublicSuffix.parse(entity_name)
|
96
|
+
domain_sld = domain.sld
|
97
|
+
Rails.logger.debug "WhoisXMLAPI rwhois - no domains found for domain #{entity_name}, trying #{domain_sld}"
|
98
|
+
res = WhoisXMLAPI::RWhoisResult.create(:entity_name => domain_sld)
|
99
|
+
rquery = {
|
100
|
+
:term1 => domain_sld,
|
101
|
+
:search_type => 'current',
|
102
|
+
:mode => WhoisXMLAPI.rwhois_mode,
|
103
|
+
:username => WhoisXMLAPI.username,
|
104
|
+
:password => WhoisXMLAPI.password
|
105
|
+
}
|
106
|
+
r = HTTParty.get("#{WhoisXMLAPI.domain}/reverse-whois-api/search.php", :query => rquery)
|
107
|
+
if WhoisXMLAPI.callbacks[:rwhois]
|
108
|
+
WhoisXMLAPI.callbacks[:rwhois].each do |cb|
|
109
|
+
cb.call
|
110
|
+
end
|
111
|
+
end
|
112
|
+
if r && r.parsed_response && r.parsed_response['domains']
|
113
|
+
res.domains = r.parsed_response['domains']
|
114
|
+
res.save
|
115
|
+
else
|
116
|
+
res.domains = []
|
117
|
+
res.save
|
118
|
+
end
|
119
|
+
else
|
120
|
+
Rails.logger.debug "WhoisXMLAPI rwhois - no domains found for #{entity_name}!"
|
121
|
+
res.domains = []
|
122
|
+
res.save
|
123
|
+
end
|
124
|
+
end
|
125
|
+
res
|
126
|
+
end
|
127
|
+
|
128
|
+
def exists?(domain)
|
129
|
+
xquery = {
|
130
|
+
:cmd => 'GET_DN_AVAILABILITY',
|
131
|
+
:domainName => domain,
|
132
|
+
:outputFormat => 'json',
|
133
|
+
:userName => WhoisXMLAPI.username,
|
134
|
+
:password => WhoisXMLAPI.password
|
135
|
+
}
|
136
|
+
r = HTTParty.get("#{WhoisXMLAPI.domain}/whoisserver/WhoisService", :query => xquery)
|
137
|
+
|
138
|
+
resp = JSON.parse(r.parsed_response)
|
139
|
+
resp["DomainInfo"]["domainAvailability"] == "UNAVAILABLE"
|
140
|
+
end
|
141
|
+
|
142
|
+
def account_balance
|
143
|
+
aquery = {
|
144
|
+
:servicetype => 'accountbalance',
|
145
|
+
:output_format => 'JSON',
|
146
|
+
:username => WhoisXMLAPI.username,
|
147
|
+
:password => WhoisXMLAPI.password
|
148
|
+
}
|
149
|
+
r = HTTParty.get("#{WhoisXMLAPI.domain}/accountServices.php", :query => aquery)
|
150
|
+
JSON.parse(r.parsed_response)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module WhoisXMLAPI
|
2
|
+
class Contact
|
3
|
+
include Mongoid::Document
|
4
|
+
include Mongoid::Timestamps
|
5
|
+
|
6
|
+
belongs_to :contactable, :polymorphic => true
|
7
|
+
|
8
|
+
field :name
|
9
|
+
field :organization
|
10
|
+
field :street1
|
11
|
+
field :street2
|
12
|
+
field :city
|
13
|
+
field :state
|
14
|
+
field :postalCode
|
15
|
+
field :country
|
16
|
+
field :email
|
17
|
+
field :telephone
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'mongoid'
|
2
|
+
|
3
|
+
module WhoisXMLAPI
|
4
|
+
class Result
|
5
|
+
include Mongoid::Document
|
6
|
+
include Mongoid::Timestamps
|
7
|
+
|
8
|
+
field :domain
|
9
|
+
field :record_created
|
10
|
+
field :record_updated
|
11
|
+
field :record_expires
|
12
|
+
field :registrar
|
13
|
+
field :nameservers, :type => Array
|
14
|
+
|
15
|
+
has_one :registrant, :as => :contactable, :class_name => "WhoisXMLAPI::Contact", :autosave => true
|
16
|
+
has_one :admin, :as => :contactable, :class_name => "WhoisXMLAPI::Contact", :autosave => true
|
17
|
+
has_one :tech, :as => :contactable, :class_name => "WhoisXMLAPI::Contact", :autosave => true
|
18
|
+
has_one :billing, :as => :contactable, :class_name => "WhoisXMLAPI::Contact", :autosave => true
|
19
|
+
|
20
|
+
belongs_to :whoisable, :polymorphic => true
|
21
|
+
|
22
|
+
def parse(record)
|
23
|
+
self.domain = record['domainName']
|
24
|
+
|
25
|
+
if record['registryData']
|
26
|
+
self.record_created = record['registryData']['createdDate']
|
27
|
+
self.record_updated = record['registryData']['updatedDate']
|
28
|
+
self.record_expires = record['registryData']['expiresDate']
|
29
|
+
else
|
30
|
+
res = WhoisXMLAPI::UnParsable.new
|
31
|
+
res.parse(record)
|
32
|
+
return res
|
33
|
+
end
|
34
|
+
|
35
|
+
self.registrar = record['registrarName']
|
36
|
+
self.nameservers = record['nameServers'] ? record['nameServers']['hostNames'] : (record['registryData'] && record['registryData']['nameServers'] ? record['registryData']['nameServers']['hostNames'] : nil)
|
37
|
+
registrant_data = record['registrant'] || (record['registryData'] ? record['registryData']['registrant'] : nil)
|
38
|
+
|
39
|
+
if registrant_data.nil?
|
40
|
+
res = WhoisXMLAPI::UnParsable.new
|
41
|
+
res.parse(record)
|
42
|
+
return res
|
43
|
+
end
|
44
|
+
|
45
|
+
# more "optional" data
|
46
|
+
administrative_data = record['administrativeContact'] || (record['registryData'] ? record['registryData']['administrativeContact'] : nil)
|
47
|
+
technical_data = record['technicalContact'] || (record['registryData'] ? record['registryData']['technicalContact'] : nil)
|
48
|
+
billing_data = record['billingContact'] || (record['registryData'] ? record['registryData']['billingContact'] : nil)
|
49
|
+
|
50
|
+
self.registrant = WhoisXMLAPI::Contact.create(registrant_data.merge({'email' => record['contactEmail']})) if registrant_data
|
51
|
+
self.admin = WhoisXMLAPI::Contact.create(administrative_data) if administrative_data
|
52
|
+
self.tech = WhoisXMLAPI::Contact.create(technical_data) if technical_data
|
53
|
+
self.billing = WhoisXMLAPI::Contact.create(billing_data) if billing_data
|
54
|
+
end
|
55
|
+
|
56
|
+
def complete?
|
57
|
+
( self.domain and self.registrar and ( self.registrant or self.admin or self.tech) )
|
58
|
+
end
|
59
|
+
|
60
|
+
def private?
|
61
|
+
%w/networksolutionsprivateregistration.com domainprivacygroup.com/.each do |priv|
|
62
|
+
return true if self.registrant.email =~ /#{priv}/
|
63
|
+
end
|
64
|
+
false
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module WhoisXMLAPI
|
2
|
+
class UnParsable < WhoisXMLAPI::Result
|
3
|
+
def parse(record)
|
4
|
+
self.domain = record['domainName']
|
5
|
+
|
6
|
+
if record['registryData']
|
7
|
+
self.record_created = record['registryData']['createdDate']
|
8
|
+
self.record_updated = record['registryData']['updatedDate']
|
9
|
+
self.record_expires = record['registryData']['expiresDate']
|
10
|
+
end
|
11
|
+
|
12
|
+
self.registrar = record['registrarName']
|
13
|
+
self.nameservers = record['nameServers'] ? record['nameServers']['hostNames'] : []
|
14
|
+
|
15
|
+
registrant_data = record['registrant']
|
16
|
+
|
17
|
+
unless registrant_data
|
18
|
+
if record['registryData'] and record['registryData']['registrant']
|
19
|
+
registrant_data = record['registryData']['registrant']
|
20
|
+
else
|
21
|
+
registrant_data = {}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
if record
|
25
|
+
registrant_data.merge({'email' => record['contactEmail']}) if record['contactEmail']
|
26
|
+
self.registrant = WhoisXMLAPI::Contact.create(registrant_data)
|
27
|
+
self.admin = WhoisXMLAPI::Contact.create(record['administrativeContact']) if record['administrativeContact']
|
28
|
+
self.tech = WhoisXMLAPI::Contact.create(record['technicalContact']) if record['technicalContact']
|
29
|
+
self.billing = WhoisXMLAPI::Contact.create(record['billingContact']) if record['billingContact']
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/whoisxmlapi.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'whoisxmlapi/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "whoisxmlapi"
|
8
|
+
spec.version = WhoisXMLAPI::VERSION
|
9
|
+
spec.authors = ["Christopher Maujean", "David Hillard"]
|
10
|
+
spec.email = ["cmaujean@brandle.net"]
|
11
|
+
spec.description = %q{Gem for accessing the Whois XML API via JSON, with caching}
|
12
|
+
spec.summary = %q{whoisxmlapi.com access}
|
13
|
+
spec.homepage = "http://brandle.net/"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "activesupport", "~> 3.2"
|
22
|
+
spec.add_dependency "mongoid"
|
23
|
+
spec.add_dependency "httparty"
|
24
|
+
spec.add_dependency "public_suffix"
|
25
|
+
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
27
|
+
spec.add_development_dependency "rake"
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whoisxmlapi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.13
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Christopher Maujean
|
9
|
+
- David Hillard
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2015-05-14 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.2'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '3.2'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: mongoid
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: httparty
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: public_suffix
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: bundler
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ~>
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '1.3'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ~>
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '1.3'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rake
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Gem for accessing the Whois XML API via JSON, with caching
|
112
|
+
email:
|
113
|
+
- cmaujean@brandle.net
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- .gitignore
|
119
|
+
- Gemfile
|
120
|
+
- LICENSE.txt
|
121
|
+
- README.md
|
122
|
+
- Rakefile
|
123
|
+
- lib/whoisxmlapi.rb
|
124
|
+
- lib/whoisxmlapi/bad_domain.rb
|
125
|
+
- lib/whoisxmlapi/client.rb
|
126
|
+
- lib/whoisxmlapi/contact.rb
|
127
|
+
- lib/whoisxmlapi/good.rb
|
128
|
+
- lib/whoisxmlapi/result.rb
|
129
|
+
- lib/whoisxmlapi/rwhois_result.rb
|
130
|
+
- lib/whoisxmlapi/un_parsable.rb
|
131
|
+
- lib/whoisxmlapi/unavailable.rb
|
132
|
+
- lib/whoisxmlapi/version.rb
|
133
|
+
- whoisxmlapi.gemspec
|
134
|
+
homepage: http://brandle.net/
|
135
|
+
licenses:
|
136
|
+
- MIT
|
137
|
+
post_install_message:
|
138
|
+
rdoc_options: []
|
139
|
+
require_paths:
|
140
|
+
- lib
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
requirements: []
|
154
|
+
rubyforge_project:
|
155
|
+
rubygems_version: 1.8.21
|
156
|
+
signing_key:
|
157
|
+
specification_version: 3
|
158
|
+
summary: whoisxmlapi.com access
|
159
|
+
test_files: []
|