domain_tools 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/examples/1_prepare.rb +1 -1
- data/examples/6_using_freeapi.rb +36 -0
- data/lib/domain_tools.rb +3 -0
- data/lib/domain_tools/core.rb +11 -1
- data/lib/domain_tools/request.rb +22 -9
- metadata +20 -40
data/examples/1_prepare.rb
CHANGED
@@ -14,7 +14,7 @@ DomainTools::where("var1=value1&var2=value2")
|
|
14
14
|
# Useful to separate in a settings file your default configuration
|
15
15
|
DomainTools::with({
|
16
16
|
:username => DOMAINTOOLS_USERNAME,
|
17
|
-
:key => DOMAINTOOLS_KEY,
|
17
|
+
:key => DOMAINTOOLS_KEY,
|
18
18
|
:service => "whois",
|
19
19
|
:format => "json",
|
20
20
|
:domain => "domaintools.com",
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# 6. USING THE FREE API
|
3
|
+
# -----------------------------------------------------------------------------
|
4
|
+
|
5
|
+
# 6.A Define settings
|
6
|
+
# This a a clear way to define each settings
|
7
|
+
DomainTools::use(DOMAINTOOLS_USERNAME,DOMAINTOOLS_KEY)
|
8
|
+
DomainTools::get("whois")
|
9
|
+
# Set the API type using the "with_api" method
|
10
|
+
DomainTools::with_api("free")
|
11
|
+
DomainTools::on("domaintools.com")
|
12
|
+
|
13
|
+
# 6.B All in one with a hash
|
14
|
+
# Useful to separate in a settings file your default configuration
|
15
|
+
DomainTools::with({
|
16
|
+
:username => DOMAINTOOLS_USERNAME,
|
17
|
+
:key => DOMAINTOOLS_KEY,
|
18
|
+
:service => "whois",
|
19
|
+
:domain => "domaintools.com",
|
20
|
+
:api => "free"
|
21
|
+
})
|
22
|
+
|
23
|
+
# 1.C Inline
|
24
|
+
# Each call can be chained, useful in some case to gain space in your code
|
25
|
+
DomainTools::use(DOMAINTOOLS_USERNAME,DOMAINTOOLS_KEY)::get("whois")::as("json")::on("domaintools.com")::with_api("free")
|
26
|
+
# -----------------------------------------------------------------------------
|
27
|
+
# TIPS
|
28
|
+
# -----------------------------------------------------------------------------
|
29
|
+
# You can use "is_free?" on a request object to test if it is using the freeapi
|
30
|
+
|
31
|
+
request = DomainTools::get("whois")::as("json")::on("domaintools.com")::with_api("free").request
|
32
|
+
if request.is_free?
|
33
|
+
puts "It's a free request!"
|
34
|
+
else
|
35
|
+
puts "It's a standard request!"
|
36
|
+
end
|
data/lib/domain_tools.rb
CHANGED
data/lib/domain_tools/core.rb
CHANGED
@@ -22,6 +22,11 @@ module DomainTools
|
|
22
22
|
self
|
23
23
|
end
|
24
24
|
|
25
|
+
# Change the host, to swith between free and standard API
|
26
|
+
def self.with_api(api)
|
27
|
+
self.set_data :api, api
|
28
|
+
end
|
29
|
+
|
25
30
|
# Select which service must be called for this request
|
26
31
|
def self.get(service)
|
27
32
|
self.set_data :service, service
|
@@ -93,7 +98,11 @@ module DomainTools
|
|
93
98
|
|
94
99
|
def self.success?
|
95
100
|
self.request.success?
|
96
|
-
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.is_free?
|
104
|
+
self.request.is_free?
|
105
|
+
end
|
97
106
|
|
98
107
|
def self.to_s
|
99
108
|
self.request.to_s
|
@@ -127,6 +136,7 @@ module DomainTools
|
|
127
136
|
|
128
137
|
def self.set_data(key,val)
|
129
138
|
@data = {} unless @data
|
139
|
+
key = :host if key.to_s == 'api'
|
130
140
|
@data[key.to_sym] = val
|
131
141
|
# Update data for future request
|
132
142
|
@request = DomainTools::Request.new @data
|
data/lib/domain_tools/request.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module DomainTools
|
2
2
|
class Request
|
3
|
-
attr_accessor :domain, :format, :service, :parameters
|
3
|
+
attr_accessor :username, :key, :domain, :format, :service, :parameters, :api
|
4
4
|
|
5
5
|
def initialize(data)
|
6
6
|
data.each{|key, value| set_data(key,value)}
|
@@ -42,10 +42,11 @@ module DomainTools
|
|
42
42
|
@url = parts.join("")
|
43
43
|
end
|
44
44
|
|
45
|
-
def authentication_params(uri)
|
45
|
+
def authentication_params(uri)
|
46
|
+
return '' if is_free?
|
46
47
|
return "&api_username=#{@username}&api_key=#{@key}" unless @signed
|
47
48
|
timestamp = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
48
|
-
data = @username+timestamp+uri
|
49
|
+
data = @username+timestamp+uri
|
49
50
|
require 'openssl'
|
50
51
|
digester = OpenSSL::Digest::Digest.new(DomainTools::DIGEST)
|
51
52
|
signature = OpenSSL::HMAC.hexdigest(digester, @key, data)
|
@@ -55,12 +56,12 @@ module DomainTools
|
|
55
56
|
|
56
57
|
def validate
|
57
58
|
raise DomainTools::NoDomainException unless @domain || @parameters
|
58
|
-
raise DomainTools::NoCredentialsException unless @username
|
59
|
+
raise DomainTools::NoCredentialsException unless @username && @key
|
59
60
|
# must be a valid format (will be default FORMAT constant if empty or wrong)
|
60
|
-
@format = DomainTools::FORMAT
|
61
|
+
@format = DomainTools::FORMAT unless ['json','xml','html'].include?(@format)
|
61
62
|
# if not already defined, use default
|
62
63
|
@host = DomainTools::HOST if @host.nil?
|
63
|
-
@port = DomainTools::PORT if @port.nil?
|
64
|
+
@port = DomainTools::PORT if @port.nil?
|
64
65
|
@signed = DomainTools::SIGNED if @signed.nil?
|
65
66
|
@version = DomainTools::VERSION if @version.nil?
|
66
67
|
end
|
@@ -103,7 +104,7 @@ module DomainTools
|
|
103
104
|
end
|
104
105
|
|
105
106
|
# Check HTTP request status and raise an exception if needed
|
106
|
-
def validate_http_status
|
107
|
+
def validate_http_status
|
107
108
|
return true if @http.code.to_i == 200
|
108
109
|
DomainTools::Exceptions::raise_by_code(@http.code)
|
109
110
|
end
|
@@ -155,10 +156,22 @@ module DomainTools
|
|
155
156
|
nil
|
156
157
|
end
|
157
158
|
|
158
|
-
|
159
|
+
def is_free?
|
160
|
+
@host==DomainTools::FREE_HOST
|
161
|
+
end
|
162
|
+
|
163
|
+
def api=(api)
|
164
|
+
self.host = api
|
165
|
+
end
|
166
|
+
|
167
|
+
def host=(h)
|
168
|
+
@host = ['freeapi','free'].include?(h.to_s) ? DomainTools::FREE_HOST : DomainTools::HOST
|
169
|
+
end
|
170
|
+
|
171
|
+
private
|
159
172
|
|
160
173
|
def set_data(key,val)
|
161
|
-
eval("
|
174
|
+
eval("self.#{key.to_s} = val")
|
162
175
|
end
|
163
176
|
|
164
177
|
def format_parameters
|
metadata
CHANGED
@@ -1,32 +1,23 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: domain_tools
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- DomainTools, LLC
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-10-26 00:00:00 Z
|
12
|
+
date: 2012-07-17 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
|
-
|
14
|
+
description: Ruby wrapper of the domaintools.com API, allowing you to easily request
|
15
|
+
any service available on domaintools.com
|
22
16
|
email: MemberServices@DomainTools.com
|
23
17
|
executables: []
|
24
|
-
|
25
18
|
extensions: []
|
26
|
-
|
27
19
|
extra_rdoc_files: []
|
28
|
-
|
29
|
-
files:
|
20
|
+
files:
|
30
21
|
- lib/domain_tools/core.rb
|
31
22
|
- lib/domain_tools/error.rb
|
32
23
|
- lib/domain_tools/error_parser.rb
|
@@ -42,40 +33,29 @@ files:
|
|
42
33
|
- examples/3_browsing.rb
|
43
34
|
- examples/4_error.rb
|
44
35
|
- examples/5_complete.rb
|
36
|
+
- examples/6_using_freeapi.rb
|
45
37
|
homepage: http://www.domaintools.com/api/
|
46
38
|
licenses: []
|
47
|
-
|
48
39
|
post_install_message:
|
49
40
|
rdoc_options: []
|
50
|
-
|
51
|
-
require_paths:
|
41
|
+
require_paths:
|
52
42
|
- lib
|
53
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
54
44
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
- 0
|
61
|
-
version: "0"
|
62
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
50
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
hash: 19
|
68
|
-
segments:
|
69
|
-
- 1
|
70
|
-
- 3
|
71
|
-
- 4
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
72
54
|
version: 1.3.4
|
73
55
|
requirements: []
|
74
|
-
|
75
56
|
rubyforge_project: domain_tools
|
76
|
-
rubygems_version: 1.8.
|
57
|
+
rubygems_version: 1.8.24
|
77
58
|
signing_key:
|
78
59
|
specification_version: 3
|
79
60
|
summary: Ruby gem for requesting domaintools.com webservices
|
80
61
|
test_files: []
|
81
|
-
|