enom 1.1.0 → 1.1.1

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.
Files changed (3) hide show
  1. data/lib/enom/domain.rb +17 -9
  2. data/test/domain_test.rb +26 -4
  3. metadata +98 -50
@@ -1,3 +1,5 @@
1
+ require "public_suffix"
2
+
1
3
  module Enom
2
4
 
3
5
  class Domain
@@ -16,7 +18,7 @@ module Enom
16
18
 
17
19
  def initialize(attributes)
18
20
  @name = attributes["DomainName"] || attributes["domainname"]
19
- @sld, @tld = @name.split(".")
21
+ @sld, @tld = Domain.parse_sld_and_tld(@name)
20
22
 
21
23
  expiration_date_string = attributes["expiration_date"] || attributes["status"]["expiration"]
22
24
  @expiration_date = Date.strptime(expiration_date_string.split(" ").first, "%m/%d/%Y")
@@ -31,7 +33,7 @@ module Enom
31
33
 
32
34
  # Find the domain (must be in your account) on Enom
33
35
  def self.find(name)
34
- sld, tld = name.split(".")
36
+ sld, tld = parse_sld_and_tld(name)
35
37
  response = Client.request("Command" => "GetDomainInfo", "SLD" => sld, "TLD" => tld)["interface_response"]["GetDomainInfo"]
36
38
  Domain.new(response)
37
39
  end
@@ -43,7 +45,7 @@ module Enom
43
45
 
44
46
  # Boolean helper method to determine if the domain is available for purchase
45
47
  def self.available?(name)
46
- sld, tld = name.split(".")
48
+ sld, tld = parse_sld_and_tld(name)
47
49
  response = Client.request("Command" => "Check", "SLD" => sld, "TLD" => tld)["interface_response"]["RRPCode"]
48
50
  response == "210"
49
51
  end
@@ -76,7 +78,7 @@ module Enom
76
78
  response["interface_response"].each do |k, v|
77
79
  if v == "210" #&& k[0,6] == "RRPCode"
78
80
  pos = k[7..k.size]
79
- result << response["interface_response"]["Domain#{pos}"] unless k.blank?
81
+ result << response["interface_response"]["Domain#{pos}"] unless k.nil? || k.empty?
80
82
  end
81
83
  end
82
84
 
@@ -94,7 +96,7 @@ module Enom
94
96
 
95
97
  # Purchase the domain
96
98
  def self.register!(name, options = {})
97
- sld, tld = name.split(".")
99
+ sld, tld = parse_sld_and_tld(name)
98
100
  opts = {}
99
101
  if options[:nameservers]
100
102
  count = 1
@@ -114,7 +116,7 @@ module Enom
114
116
  # Transfer domain from another registrar to Enom, charges the account when successful
115
117
  # Returns true if successful, false if failed
116
118
  def self.transfer!(name, auth, options = {})
117
- sld, tld = name.split(".")
119
+ sld, tld = parse_sld_and_tld(name)
118
120
 
119
121
  # Default options
120
122
  opts = {
@@ -136,7 +138,7 @@ module Enom
136
138
 
137
139
  # Renew the domain
138
140
  def self.renew!(name, options = {})
139
- sld, tld = name.split(".")
141
+ sld, tld = parse_sld_and_tld(name)
140
142
  opts = {}
141
143
  opts.merge!("NumYears" => options[:years]) if options[:years]
142
144
  response = Client.request({"Command" => "Extend", "SLD" => sld, "TLD" => tld}.merge(opts))
@@ -146,20 +148,26 @@ module Enom
146
148
  # Suggest available domains using the namespinner
147
149
  # Returns an array of available domain names that match
148
150
  def self.suggest(name, options ={})
149
- sld, tld = name.split(".")
151
+ sld, tld = parse_sld_and_tld(name)
150
152
  opts = {}
151
153
  opts.merge!("MaxResults" => options[:max_results] || 8, "Similar" => options[:similar] || "High")
152
154
  response = Client.request({"Command" => "namespinner", "SLD" => sld, "TLD" => tld}.merge(opts))
153
155
 
154
156
  suggestions = []
155
157
  response["interface_response"]["namespin"]["domains"]["domain"].map do |d|
156
- %w(com net tv cc).each do |toplevel|
158
+ (options[:tlds] || %w(com net tv cc)).each do |toplevel|
157
159
  suggestions << [d["name"].downcase, toplevel].join(".") if d[toplevel] == "y"
158
160
  end
159
161
  end
160
162
  return suggestions
161
163
  end
162
164
 
165
+ # Parse out domain name tld and sld from the PublicSuffix lib
166
+ def self.parse_sld_and_tld(domain_name)
167
+ d = PublicSuffix.parse(domain_name)
168
+ [d.sld, d.tld]
169
+ end
170
+
163
171
  # Lock the domain at the registrar so it can"t be transferred
164
172
  def lock
165
173
  Client.request("Command" => "SetRegLock", "SLD" => sld, "TLD" => tld, "UnlockRegistrar" => "0")
@@ -59,11 +59,13 @@ class DomainTest < Test::Unit::TestCase
59
59
 
60
60
  context "checking for suggested domains" do
61
61
  setup do
62
- @suggestions = Enom::Domain.suggest("hand.com")
62
+
63
63
  end
64
64
  should "return an array of suggestions matching the supplied term" do
65
+ @suggestions = Enom::Domain.suggest("hand.com")
65
66
  assert !@suggestions.empty?
66
- suggestions = %w(
67
+
68
+ results = %w(
67
69
  handsewncurtains.net
68
70
  handsewncurtains.tv
69
71
  handsewncurtains.cc
@@ -90,7 +92,27 @@ class DomainTest < Test::Unit::TestCase
90
92
  handloser.tv
91
93
  handloser.cc
92
94
  )
93
- assert_equal suggestions, @suggestions
95
+
96
+ assert_equal results, @suggestions
97
+ end
98
+
99
+ should "only return the results matching specified tlds" do
100
+ @suggestions = Enom::Domain.suggest("hand.com", :tlds => %w(com net))
101
+ assert !@suggestions.empty?
102
+
103
+ results = %w(
104
+ handsewncurtains.net
105
+ handicappingclub.net
106
+ handingok.com
107
+ handingok.net
108
+ handoki.net
109
+ handinghand.com
110
+ handinghand.net
111
+ handcrafthouselogs.com
112
+ handcrafthouselogs.net
113
+ )
114
+
115
+ assert_equal results, @suggestions
94
116
  end
95
117
  end
96
118
 
@@ -162,7 +184,7 @@ class DomainTest < Test::Unit::TestCase
162
184
  should "update nameservers if there are 2 or more provided" do
163
185
  new_nameservers = ["ns1.foo.com", "ns2.foo.com"]
164
186
  @domain.update_nameservers(new_nameservers)
165
- assert_equal new_nameservers, @domain.nameservers
187
+ assert_equal new_nameservers, @domain.nameservers.sort
166
188
  end
167
189
  should "not update nameservers if less than 2 or more than 12 are provided" do
168
190
  not_enough = ["ns1.foo.com"]
metadata CHANGED
@@ -1,68 +1,106 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: enom
3
- version: !ruby/object:Gem::Version
4
- version: 1.1.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 1
10
+ version: 1.1.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - James Miller
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-09-11 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-02-02 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: httparty
16
- requirement: &70314757598780 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
25
+ requirements:
19
26
  - - ~>
20
- - !ruby/object:Gem::Version
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 0
31
+ - 7
32
+ - 8
21
33
  version: 0.7.8
22
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: public_suffix
23
38
  prerelease: false
24
- version_requirements: *70314757598780
25
- - !ruby/object:Gem::Dependency
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 23
45
+ segments:
46
+ - 1
47
+ - 0
48
+ - 0
49
+ version: 1.0.0
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
26
53
  name: shoulda
27
- requirement: &70314757598380 !ruby/object:Gem::Requirement
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
28
56
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
33
64
  type: :development
34
- prerelease: false
35
- version_requirements: *70314757598380
36
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
37
67
  name: fakeweb
38
- requirement: &70314757597920 !ruby/object:Gem::Requirement
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
39
70
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
44
78
  type: :development
45
- prerelease: false
46
- version_requirements: *70314757597920
47
- - !ruby/object:Gem::Dependency
79
+ version_requirements: *id004
80
+ - !ruby/object:Gem::Dependency
48
81
  name: rake
49
- requirement: &70314757597420 !ruby/object:Gem::Requirement
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
50
84
  none: false
51
- requirements:
85
+ requirements:
52
86
  - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '0.9'
87
+ - !ruby/object:Gem::Version
88
+ hash: 25
89
+ segments:
90
+ - 0
91
+ - 9
92
+ version: "0.9"
55
93
  type: :development
56
- prerelease: false
57
- version_requirements: *70314757597420
58
- description: Enom is a Ruby wrapper and command line interface for portions of the
59
- Enom domain reseller API.
94
+ version_requirements: *id005
95
+ description: Enom is a Ruby wrapper and command line interface for portions of the Enom domain reseller API.
60
96
  email: bensie@gmail.com
61
- executables:
97
+ executables:
62
98
  - enom
63
99
  extensions: []
100
+
64
101
  extra_rdoc_files: []
65
- files:
102
+
103
+ files:
66
104
  - README.md
67
105
  - Rakefile
68
106
  - LICENSE
@@ -89,26 +127,36 @@ files:
89
127
  - bin/enom.rb
90
128
  homepage: http://github.com/bensie/enom
91
129
  licenses: []
130
+
92
131
  post_install_message:
93
132
  rdoc_options: []
94
- require_paths:
133
+
134
+ require_paths:
95
135
  - lib
96
- required_ruby_version: !ruby/object:Gem::Requirement
136
+ required_ruby_version: !ruby/object:Gem::Requirement
97
137
  none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
146
  none: false
104
- requirements:
105
- - - ! '>='
106
- - !ruby/object:Gem::Version
107
- version: '0'
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: 3
151
+ segments:
152
+ - 0
153
+ version: "0"
108
154
  requirements: []
155
+
109
156
  rubyforge_project:
110
- rubygems_version: 1.8.6
157
+ rubygems_version: 1.8.10
111
158
  signing_key:
112
159
  specification_version: 3
113
160
  summary: Ruby wrapper for the Enom API
114
161
  test_files: []
162
+