shanesveller-webbynode-api 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -0
- data/VERSION +1 -1
- data/lib/webbynode-api/dns.rb +19 -0
- data/test/dns_test.rb +30 -0
- data/webbynode-api.gemspec +2 -2
- metadata +2 -2
data/README.markdown
CHANGED
@@ -11,6 +11,7 @@ is currently based on the API guide version 2.
|
|
11
11
|
* Webby information (status) and simple actions (start, shutdown, reboot)
|
12
12
|
* List all webbies
|
13
13
|
* DNS zone information such as domain name, TTL, and status
|
14
|
+
* Look up DNS zone by domain name
|
14
15
|
* List of all individual records in a given DNS zone
|
15
16
|
* Creation/deletion of DNS zones
|
16
17
|
* Activation/deactivation of DNS zones
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/lib/webbynode-api/dns.rb
CHANGED
@@ -142,6 +142,25 @@ class WebbyNode
|
|
142
142
|
raise ArgumentError, ":id is a required argument" unless options[:id]
|
143
143
|
return auth_post("/api/xml/dns/#{options[:id]}/delete", :query => options)["hash"]["success"]
|
144
144
|
end
|
145
|
+
|
146
|
+
# @since 0.2.5
|
147
|
+
# @option options [String] :email E-mail address used for API access
|
148
|
+
# @option options [String] :token API token used for API access
|
149
|
+
# @option options [String] :domain Domain name to search for
|
150
|
+
# @return [Hash, nil] Returns a hash of data about the zone if it exists
|
151
|
+
# or nil
|
152
|
+
# @raise [ArgumentError] Raises ArgumentError if :token, :email or :domain
|
153
|
+
# are missing from the options parameter
|
154
|
+
# @example Look up a zone for the domain "example.com." (Note the final period.)
|
155
|
+
# WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token,
|
156
|
+
# :domain => "example.com.")
|
157
|
+
def self.find_by_domain(options = {})
|
158
|
+
raise ArgumentError, ":domain is a required argument" unless options[:domain]
|
159
|
+
domain = options[:domain]
|
160
|
+
all_zones = ZoneList.new(:email => options[:email], :token => options[:token])
|
161
|
+
all_zones.data.reject! {|zone| zone["domain"] != domain}
|
162
|
+
return all_zones.data.first || nil
|
163
|
+
end
|
145
164
|
end
|
146
165
|
|
147
166
|
# Represents an Array of all DNS zones present on the API account
|
data/test/dns_test.rb
CHANGED
@@ -250,4 +250,34 @@ class WebbyNodeDNSTest < Test::Unit::TestCase
|
|
250
250
|
WebbyNode::DNS::Record.delete(:email => @email, :token => @token, :id => @id)
|
251
251
|
end
|
252
252
|
end
|
253
|
+
context "when finding a zone by name" do
|
254
|
+
setup do
|
255
|
+
@email = "example@email.com"
|
256
|
+
@token = "123456"
|
257
|
+
@domain = "example.com."
|
258
|
+
data_path = File.join(File.dirname(__FILE__), "data", "dns")
|
259
|
+
FakeWeb.clean_registry
|
260
|
+
FakeWeb.register_uri(:get, /^https:\/\/manager\.webbynode\.com\/api\/xml\/dns\?.+/i, :body => File.read("#{data_path}/dns.xml"))
|
261
|
+
end
|
262
|
+
should "raise ArgumentError if :domain argument is absent" do
|
263
|
+
assert_raise(ArgumentError, ":domain is a required argument"){ WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token, :domain => nil)}
|
264
|
+
assert_nothing_raised{ WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token, :domain => @domain)}
|
265
|
+
end
|
266
|
+
should "return nil unless domain exists in a zone on account" do
|
267
|
+
for bad_zone in %w(example2.com baddomain.com nonexistant.com)
|
268
|
+
zone = WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token, :domain => bad_zone)
|
269
|
+
zone.should be(nil)
|
270
|
+
end
|
271
|
+
end
|
272
|
+
should "return a hash for the domain if a zone exists" do
|
273
|
+
zone = WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token, :domain => @domain)
|
274
|
+
zone.should_not be(nil)
|
275
|
+
zone.is_a?(Hash).should be(true)
|
276
|
+
zone["domain"].should == @domain
|
277
|
+
zone["id"].should == 1
|
278
|
+
zone = WebbyNode::DNS::Zone.find_by_domain(:email => @email, :token => @token, :domain => "inactive.com.")
|
279
|
+
zone["domain"].should == "inactive.com."
|
280
|
+
zone["id"].should == 132
|
281
|
+
end
|
282
|
+
end
|
253
283
|
end
|
data/webbynode-api.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{webbynode-api}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Shane Sveller"]
|
9
|
-
s.date = %q{2009-07-
|
9
|
+
s.date = %q{2009-07-22}
|
10
10
|
s.default_executable = %q{webby}
|
11
11
|
s.email = %q{shanesveller@gmail.com}
|
12
12
|
s.executables = ["webby"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shanesveller-webbynode-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Sveller
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-22 00:00:00 -07:00
|
13
13
|
default_executable: webby
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|