hexillion 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hexillion.rb +21 -18
- data/lib/hexillion/version.rb +1 -1
- data/spec/client_spec.rb +33 -20
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3dcf43553d22627e94b670b299d7f1eb99ade4c
|
4
|
+
data.tar.gz: b7cdec679ecc58adb27a57de46db5d654f1eb4ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d7fc534f28132d2c1dca6b6ccf7e86289f10233a8122d2088bc766351b294297aad54042456a5a73593925a2269aa8d748e19e03e3a220e7aa4ba052b34138e
|
7
|
+
data.tar.gz: 087bca15bda8a7591920bb543d31cbba52ab9c57cb0a10a7a911ff6bdcfa148c5919784f490383052236e2370d220b08c3030f9a5332cdeb5ff457ee199e2a86
|
data/lib/hexillion.rb
CHANGED
@@ -13,25 +13,28 @@ module Hexillion
|
|
13
13
|
raise "Authentication failed"
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# Query the API for a given domain
|
18
|
-
#
|
19
|
-
# @example
|
20
|
-
# client.whois('flippa.com') # => { ... }
|
21
|
-
#
|
22
|
-
#
|
23
|
-
|
24
|
-
def whois(domain)
|
25
|
-
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
# client.whois('flippa.com', {optional_param: value, ...}) # => { ... }
|
21
|
+
#
|
22
|
+
#
|
23
|
+
|
24
|
+
def whois(domain, extra_params = {})
|
25
|
+
base_params = {:sessionkey => @session_key, :query => domain}
|
26
|
+
params = base_params.merge(extra_params)
|
27
|
+
|
28
|
+
response = RestClient.get "http://hexillion.com/rf/xml/1.0/whois/", :params => params
|
26
29
|
parse_xml(response.body)
|
27
30
|
end
|
28
|
-
|
31
|
+
|
29
32
|
private
|
30
|
-
|
33
|
+
|
31
34
|
def parse_xml(xml)
|
32
35
|
doc = Nokogiri::XML(xml)
|
33
36
|
records = doc.xpath(".//QueryResult[ErrorCode='Success' and FoundMatch='Yes']/WhoisRecord")
|
34
|
-
|
37
|
+
|
35
38
|
strings = {
|
36
39
|
:registrant_name => "Registrant Name",
|
37
40
|
:registrant_person => "Registrant Person",
|
@@ -83,18 +86,18 @@ module Hexillion
|
|
83
86
|
:stripped_text => "StrippedText",
|
84
87
|
:raw_text => "RawText"
|
85
88
|
}
|
86
|
-
|
89
|
+
|
87
90
|
dates = {
|
88
91
|
:created_date => './CreatedDate',
|
89
92
|
:expires_date => './ExpiresDate',
|
90
93
|
:updated_date => './UpdatedDate'
|
91
94
|
}
|
92
|
-
|
95
|
+
|
93
96
|
result = { :xml_response => xml }
|
94
|
-
|
97
|
+
|
95
98
|
records.each do |record|
|
96
99
|
result[:nameservers] = record.css('Domain NameServer').map { |x| x.content unless x.content == '' }
|
97
|
-
|
100
|
+
|
98
101
|
strings.each do | attr, selector |
|
99
102
|
nodes = record.css(selector)
|
100
103
|
next if nodes.empty?
|
@@ -104,13 +107,13 @@ module Hexillion
|
|
104
107
|
result[attr] = nodes.to_a.reject { |s| s.blank? }.join("\n")
|
105
108
|
end
|
106
109
|
end
|
107
|
-
|
110
|
+
|
108
111
|
dates.each do | attr, selector |
|
109
112
|
next unless node = record.at_xpath(selector)
|
110
113
|
result[attr] = DateTime.parse(node.content) unless node.content == ''
|
111
114
|
end
|
112
115
|
end
|
113
|
-
|
116
|
+
|
114
117
|
result
|
115
118
|
end
|
116
119
|
end
|
data/lib/hexillion/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -18,7 +18,7 @@ describe Hexillion::Client do
|
|
18
18
|
hex.instance_variable_get('@session_key').should == 'nOIANdfjL4524ynjlssasjfDFaqe4'
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
describe "#whois" do
|
23
23
|
before(:each) do
|
24
24
|
@response = double()
|
@@ -27,12 +27,25 @@ describe Hexillion::Client do
|
|
27
27
|
@response.stub(:body) { "" }
|
28
28
|
@hex = Hexillion::Client.new(:username => "username", :password => "password")
|
29
29
|
end
|
30
|
-
|
31
|
-
it "queries the API
|
32
|
-
|
33
|
-
|
30
|
+
|
31
|
+
it "queries the API and passes all the params to the endpoint" do
|
32
|
+
domain_name = "example.com"
|
33
|
+
extra_params = {:data => "awesome", :more_data => "awesomer"}
|
34
|
+
endpoint_url = kind_of(String)
|
35
|
+
sessionkey = kind_of(String)
|
36
|
+
|
37
|
+
payload = [
|
38
|
+
endpoint_url,
|
39
|
+
:params => {
|
40
|
+
:sessionkey => sessionkey,
|
41
|
+
:query => domain_name
|
42
|
+
}.merge(extra_params)
|
43
|
+
]
|
44
|
+
|
45
|
+
expect(RestClient).to receive(:get).with(*payload)
|
46
|
+
@hex.whois(domain_name, extra_params)
|
34
47
|
end
|
35
|
-
|
48
|
+
|
36
49
|
it "concats multiline address fields" do
|
37
50
|
@response.stub(:body) do
|
38
51
|
<<-XML
|
@@ -44,7 +57,7 @@ describe Hexillion::Client do
|
|
44
57
|
</WhoisRecord></QueryResult>
|
45
58
|
XML
|
46
59
|
end
|
47
|
-
|
60
|
+
|
48
61
|
@hex.whois("example.com")[:registrant_address].should == "48 Cambridge Street\nLevel 3"
|
49
62
|
end
|
50
63
|
|
@@ -60,7 +73,7 @@ describe Hexillion::Client do
|
|
60
73
|
</WhoisRecord></QueryResult>
|
61
74
|
XML
|
62
75
|
end
|
63
|
-
|
76
|
+
|
64
77
|
@hex.whois("example.com")[:registrant_email].should == "me@example.com"
|
65
78
|
end
|
66
79
|
|
@@ -75,13 +88,13 @@ describe Hexillion::Client do
|
|
75
88
|
</WhoisRecord></QueryResult>
|
76
89
|
XML
|
77
90
|
end
|
78
|
-
|
91
|
+
|
79
92
|
@hex.whois("example.com")[:admin_contact_email].should == "john@example.com"
|
80
93
|
end
|
81
|
-
|
94
|
+
|
82
95
|
it "makes an array of nameservers" do
|
83
96
|
@response.stub(:body) do
|
84
|
-
<<-XML
|
97
|
+
<<-XML
|
85
98
|
<QueryResult><ErrorCode>Success</ErrorCode><FoundMatch>Yes</FoundMatch><WhoisRecord>
|
86
99
|
<Domain>
|
87
100
|
<NameServer>ns1.registrar.com</NameServer>
|
@@ -91,36 +104,36 @@ describe Hexillion::Client do
|
|
91
104
|
</WhoisRecord></QueryResult>
|
92
105
|
XML
|
93
106
|
end
|
94
|
-
|
107
|
+
|
95
108
|
@hex.whois("example.com")[:nameservers].should == ['ns1.registrar.com', 'ns2.registrar.com', 'ns3.registrar.com']
|
96
109
|
end
|
97
110
|
|
98
111
|
it "parses date fields" do
|
99
112
|
@response.stub(:body) do
|
100
|
-
<<-XML
|
113
|
+
<<-XML
|
101
114
|
<QueryResult><ErrorCode>Success</ErrorCode><FoundMatch>Yes</FoundMatch><WhoisRecord>
|
102
115
|
<CreatedDate>1999-10-04T00:00:00Z</CreatedDate>
|
103
116
|
<UpdatedDate>2010-11-25T00:00:00Z</UpdatedDate>
|
104
117
|
<ExpiresDate>2019-10-04T00:00:00Z</ExpiresDate>
|
105
118
|
</WhoisRecord></QueryResult>
|
106
119
|
XML
|
107
|
-
end
|
108
|
-
|
120
|
+
end
|
121
|
+
|
109
122
|
@hex.whois("example.com")[:created_date].should == DateTime::civil(1999,10,4)
|
110
123
|
end
|
111
|
-
|
124
|
+
|
112
125
|
it "returns the entire xml response as :xml_response" do
|
113
|
-
xml = <<-XML
|
126
|
+
xml = <<-XML
|
114
127
|
<QueryResult><ErrorCode>Success</ErrorCode><FoundMatch>Yes</FoundMatch><WhoisRecord>
|
115
128
|
<CreatedDate>1999-10-04T00:00:00Z</CreatedDate>
|
116
129
|
<UpdatedDate>2010-11-25T00:00:00Z</UpdatedDate>
|
117
130
|
<ExpiresDate>2019-10-04T00:00:00Z</ExpiresDate>
|
118
131
|
</WhoisRecord></QueryResult>
|
119
132
|
XML
|
120
|
-
|
133
|
+
|
121
134
|
@response.stub(:body) { xml }
|
122
|
-
|
135
|
+
|
123
136
|
@hex.whois("example.com")[:xml_response].should == xml
|
124
137
|
end
|
125
138
|
end
|
126
|
-
end
|
139
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hexillion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Louis Simoneau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
88
|
version: '0'
|
89
89
|
requirements: []
|
90
90
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
91
|
+
rubygems_version: 2.4.1
|
92
92
|
signing_key:
|
93
93
|
specification_version: 4
|
94
94
|
summary: Provides a simple client for the Hexillion API
|