From 5f9c1220079fa5ec0ab63489d70cf343148bf535 Mon Sep 17 00:00:00 2001 From: Charles Harris Date: Wed, 17 Feb 2016 10:45:58 -0600 Subject: [PATCH] Adds support for command UpdateExpiredDomains --- lib/enom/domain.rb | 24 ++++++++++++++++++++++-- test/domain_test.rb | 9 +++++++++ test/test_helper.rb | 28 ++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/lib/enom/domain.rb b/lib/enom/domain.rb index ebd809f..8b833fc 100644 --- a/lib/enom/domain.rb +++ b/lib/enom/domain.rb @@ -107,7 +107,7 @@ def self.register!(name, options = {}) sld, tld = parse_sld_and_tld(name) opts = {} options = options.dup - + if options[:nameservers] count = 1 options.delete(:nameservers).each do |nameserver| @@ -120,7 +120,7 @@ def self.register!(name, options = {}) opts.merge!("NumYears" => options.delete(:years)) if options[:years] opts.merge!(options) - + response = Client.request({"Command" => "Purchase", "SLD" => sld, "TLD" => tld}.merge(opts)) Domain.find(name) end @@ -167,6 +167,26 @@ def self.renew!(name, options = {}) opts.merge!("NumYears" => options[:years]) if options[:years] response = Client.request({"Command" => "Extend", "SLD" => sld, "TLD" => tld}.merge(opts)) Domain.find(name) + end + + # Renew a domain that has already expired + def self.update_expired!(name, years = 1) + unless valid_renewal_length?(years) + raise ArgumentError, "Renewal years must be an integer between 1 and 10!" + end + + request_params = { + "Command" => "UpdateExpiredDomains", + "DomainName" => name, + "NumYears" => years + } + + response = Client.request(request_params) + response['interface_response']['ErrCount'] == "0" ? Domain.find(name) : false + end + + def self.valid_renewal_length?(years) + years >= 1 && years <= 10 end # Suggest available domains using the namespinner diff --git a/test/domain_test.rb b/test/domain_test.rb index d5e55bb..5dfb8cd 100644 --- a/test/domain_test.rb +++ b/test/domain_test.rb @@ -177,6 +177,15 @@ class DomainTest < Test::Unit::TestCase end end + context "renewing an expired domain" do + setup do + @domain = Enom::Domain.update_expired!("test123456test123456.com") + end + should "renew the domain and return a domain object" do + assert_equal @domain.name, "test123456test123456.com" + end + end + context "finding a domain in your account" do setup do @domain = Enom::Domain.find("test123456test123456.com") diff --git a/test/test_helper.rb b/test/test_helper.rb index e18711c..6d872ff 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -850,6 +850,34 @@ class Test::Unit::TestCase EOF + },{ + command: "UpdateExpiredDomains", + request: "https://reseller.enom.com/interface.asp?Command=UpdateExpiredDomains&DomainName=test123456test123456.com&NumYears=1&UID=resellid&PW=resellpw&ResponseType=xml", + response: <<-EOF + + + + True + 157614452 + + UPDATEEXPIREDDOMAINS + eng + 0 + 0 + 1 + 10 + RESELLERTEST + enom + True + True + +08.00 + 0.938 + true + + + + + EOF } ]