fog-dnsimple 1.0.0 → 2.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/README.md +6 -18
- data/fog-dnsimple.gemspec +4 -3
- data/lib/fog/bin/dnsimple.rb +1 -1
- data/lib/fog/dnsimple/dns.rb +13 -25
- data/lib/fog/dnsimple/models/dns/record.rb +7 -8
- data/lib/fog/dnsimple/models/dns/records.rb +3 -3
- data/lib/fog/dnsimple/models/dns/zone.rb +2 -2
- data/lib/fog/dnsimple/models/dns/zones.rb +2 -2
- data/lib/fog/dnsimple/requests/dns/create_domain.rb +22 -30
- data/lib/fog/dnsimple/requests/dns/create_record.rb +25 -30
- data/lib/fog/dnsimple/requests/dns/delete_domain.rb +10 -9
- data/lib/fog/dnsimple/requests/dns/delete_record.rb +8 -8
- data/lib/fog/dnsimple/requests/dns/get_domain.rb +9 -9
- data/lib/fog/dnsimple/requests/dns/get_record.rb +10 -10
- data/lib/fog/dnsimple/requests/dns/list_domains.rb +7 -8
- data/lib/fog/dnsimple/requests/dns/list_records.rb +9 -9
- data/lib/fog/dnsimple/requests/dns/update_record.rb +13 -15
- data/lib/fog/dnsimple/version.rb +1 -1
- data/tests/requests/dns/dns_tests.rb +14 -14
- metadata +15 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ae36b9bfa292d8ec1b6f188e38f00c38250b6cb
|
4
|
+
data.tar.gz: 4a8d56b5b4a8c37113305ec80fa61283964c60b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd86df711ff013b7f711afb7edaf0897a5ccc4788ea13a52beb05b12d8f19e2c802de6c3cd611403fa03e949a7bbb257453297a9a5d136eaec8590ecbf254173
|
7
|
+
data.tar.gz: 50533cd840e2002326d4ce7c17251289a82dc1607bb0033ec5726ed2a504a2565d5d9e0bbdae0ae69144fa55b84a72aa685787707be4a1409d9940fcf0781ab5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
|
4
|
+
#### Release 2.0
|
5
|
+
|
6
|
+
Upgrade to DNSimple API v2.
|
7
|
+
https://developer.dnsimple.com/v2/
|
8
|
+
|
9
|
+
In order to use API v2 you need an API v2 Oauth token, and the accound ID. The account ID is the ID visible in the URL of the page, after /a.
|
10
|
+
|
11
|
+
https://dnsimple.com/a/1234/domains/example.com
|
12
|
+
-> 1234
|
13
|
+
|
14
|
+
|
3
15
|
#### Release 1.0
|
4
16
|
|
5
17
|
Initial version, extracted from `fog`.
|
data/README.md
CHANGED
@@ -35,9 +35,9 @@ Initialize a `Fog::DNS` object using the DNSimple provider.
|
|
35
35
|
|
36
36
|
```ruby
|
37
37
|
dns = Fog::DNS.new({
|
38
|
-
provider:
|
39
|
-
|
40
|
-
|
38
|
+
provider: "DNSimple",
|
39
|
+
dnsimple_token: "YOUR_API_TOKEN",
|
40
|
+
dnsimple_account: "YOUR_ACCOUNT_ID",
|
41
41
|
})
|
42
42
|
```
|
43
43
|
|
@@ -45,11 +45,11 @@ This can then be used like other [Fog DNS](http://fog.io/dns/) providers.
|
|
45
45
|
|
46
46
|
```ruby
|
47
47
|
zone = dns.zones.create(
|
48
|
-
domain: "example.com
|
48
|
+
domain: "example.com"
|
49
49
|
)
|
50
50
|
record = zone.records.create(
|
51
|
-
name: "
|
52
|
-
value: "1.2.3.4,
|
51
|
+
name: "foo",
|
52
|
+
value: "1.2.3.4",
|
53
53
|
type: "A"
|
54
54
|
)
|
55
55
|
```
|
@@ -60,18 +60,6 @@ The following configurations are supported:
|
|
60
60
|
dns = Fog::DNS.new({
|
61
61
|
# Use dnsimple_url to provide a different base URL, e.g. the Sandbox URL
|
62
62
|
dnsimple_url: "https://api.sandbox.dnsimple.com/",
|
63
|
-
|
64
|
-
# API v1 token-based authentication
|
65
|
-
dnsimple_email: "...",
|
66
|
-
dnsimple_token: "...",
|
67
|
-
|
68
|
-
# API v1 basic-auth
|
69
|
-
dnsimple_email: "...",
|
70
|
-
dnsimple_password: "...",
|
71
|
-
|
72
|
-
# API v1 domain-token authentication
|
73
|
-
dnsimple_domain: "example.com",
|
74
|
-
dnsimple_token: "...",
|
75
63
|
})
|
76
64
|
```
|
77
65
|
|
data/fog-dnsimple.gemspec
CHANGED
@@ -16,13 +16,14 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.license = "MIT"
|
17
17
|
|
18
18
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
-
spec.
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
21
|
spec.require_paths = ["lib"]
|
21
22
|
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.12"
|
23
|
-
spec.add_development_dependency "rake", "~>
|
24
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
24
25
|
spec.add_development_dependency "shindo", "~> 0.3"
|
25
26
|
|
26
|
-
spec.add_dependency 'fog-core', '
|
27
|
+
spec.add_dependency 'fog-core', '>= 1.38', '< 3'
|
27
28
|
spec.add_dependency 'fog-json', '~> 1.0'
|
28
29
|
end
|
data/lib/fog/bin/dnsimple.rb
CHANGED
@@ -13,7 +13,7 @@ class Dnsimple < Fog::Bin
|
|
13
13
|
@@connections ||= Hash.new do |hash, key|
|
14
14
|
hash[key] = case key
|
15
15
|
when :dns
|
16
|
-
Fog::DNS.new(:
|
16
|
+
Fog::DNS.new(provider: "Dnsimple")
|
17
17
|
else
|
18
18
|
raise ArgumentError, "Unrecognized service: #{key.inspect}"
|
19
19
|
end
|
data/lib/fog/dnsimple/dns.rb
CHANGED
@@ -4,7 +4,7 @@ require "fog/json"
|
|
4
4
|
module Fog
|
5
5
|
module DNS
|
6
6
|
class Dnsimple < Fog::Service
|
7
|
-
recognizes :
|
7
|
+
recognizes :dnsimple_token, :dnsimple_account, :dnsimple_url
|
8
8
|
|
9
9
|
model_path 'fog/dnsimple/models/dns'
|
10
10
|
model :record
|
@@ -27,8 +27,8 @@ module Fog
|
|
27
27
|
def self.data
|
28
28
|
@data ||= Hash.new do |hash, key|
|
29
29
|
hash[key] = {
|
30
|
-
:
|
31
|
-
:
|
30
|
+
domains: [],
|
31
|
+
records: {}
|
32
32
|
}
|
33
33
|
end
|
34
34
|
end
|
@@ -37,28 +37,23 @@ module Fog
|
|
37
37
|
@data = nil
|
38
38
|
end
|
39
39
|
|
40
|
-
def initialize(options={})
|
41
|
-
@dnsimple_email = options[:dnsimple_email]
|
42
|
-
@dnsimple_password = options[:dnsimple_password]
|
40
|
+
def initialize(options = {})
|
43
41
|
@dnsimple_token = options[:dnsimple_token]
|
44
|
-
@dnsimple_domain = options[:dnsimple_domain]
|
45
42
|
end
|
46
43
|
|
47
44
|
def data
|
48
|
-
self.class.data[@
|
45
|
+
self.class.data[@dnsimple_token]
|
49
46
|
end
|
50
47
|
|
51
48
|
def reset_data
|
52
|
-
self.class.data.delete(@
|
49
|
+
self.class.data.delete(@dnsimple_token)
|
53
50
|
end
|
54
51
|
end
|
55
52
|
|
56
53
|
class Real
|
57
|
-
def initialize(options={})
|
58
|
-
@dnsimple_email = options[:dnsimple_email]
|
59
|
-
@dnsimple_password = options[:dnsimple_password]
|
54
|
+
def initialize(options = {})
|
60
55
|
@dnsimple_token = options[:dnsimple_token]
|
61
|
-
@
|
56
|
+
@dnsimple_account = options[:dnsimple_account]
|
62
57
|
|
63
58
|
if options[:dnsimple_url]
|
64
59
|
uri = URI.parse(options[:dnsimple_url])
|
@@ -74,7 +69,7 @@ module Fog
|
|
74
69
|
host = options[:host] || "api.dnsimple.com"
|
75
70
|
persistent = options[:persistent] || false
|
76
71
|
port = options[:port] || 443
|
77
|
-
scheme = options[:scheme] ||
|
72
|
+
scheme = options[:scheme] || "https"
|
78
73
|
@connection = Fog::Core::Connection.new("#{scheme}://#{host}:#{port}", persistent, connection_options)
|
79
74
|
end
|
80
75
|
|
@@ -85,15 +80,8 @@ module Fog
|
|
85
80
|
def request(params)
|
86
81
|
params[:headers] ||= {}
|
87
82
|
|
88
|
-
if
|
89
|
-
|
90
|
-
params[:headers].merge!("Authorization" => "Basic " + Base64.encode64(key).gsub("\n",''))
|
91
|
-
elsif(@dnsimple_token)
|
92
|
-
if(@dnsimple_domain)
|
93
|
-
params[:headers].merge!("X-DNSimple-Domain-Token" => @dnsimple_token)
|
94
|
-
else
|
95
|
-
params[:headers].merge!("X-DNSimple-Token" => "#{@dnsimple_email}:#{@dnsimple_token}")
|
96
|
-
end
|
83
|
+
if @dnsimple_token && @dnsimple_account
|
84
|
+
params[:headers].merge!("Authorization" => "Bearer #{@dnsimple_token}")
|
97
85
|
else
|
98
86
|
raise ArgumentError.new("Insufficient credentials to properly authenticate!")
|
99
87
|
end
|
@@ -102,8 +90,8 @@ module Fog
|
|
102
90
|
"Content-Type" => "application/json"
|
103
91
|
)
|
104
92
|
|
105
|
-
version = params.delete(:version) ||
|
106
|
-
params[:path] = File.join(
|
93
|
+
version = params.delete(:version) || "v2"
|
94
|
+
params[:path] = File.join("/", version, params[:path])
|
107
95
|
|
108
96
|
response = @connection.request(params)
|
109
97
|
|
@@ -6,16 +6,16 @@ module Fog
|
|
6
6
|
class Record < Fog::Model
|
7
7
|
identity :id
|
8
8
|
|
9
|
-
attribute :zone_id, :
|
9
|
+
attribute :zone_id, aliases: "domain_id"
|
10
10
|
attribute :name
|
11
|
-
attribute :value, :
|
11
|
+
attribute :value, aliases: "content"
|
12
12
|
attribute :ttl
|
13
|
-
attribute :priority
|
14
|
-
attribute :type
|
13
|
+
attribute :priority
|
14
|
+
attribute :type
|
15
15
|
attribute :created_at
|
16
16
|
attribute :updated_at
|
17
17
|
|
18
|
-
def initialize(attributes={})
|
18
|
+
def initialize(attributes = {})
|
19
19
|
super
|
20
20
|
end
|
21
21
|
|
@@ -31,8 +31,7 @@ module Fog
|
|
31
31
|
def save
|
32
32
|
requires :name, :type, :value
|
33
33
|
options = {}
|
34
|
-
options[:
|
35
|
-
options[:ttl] = ttl if ttl
|
34
|
+
options[:ttl] = ttl if ttl
|
36
35
|
|
37
36
|
# decide whether its a new record or update of an existing
|
38
37
|
if id.nil?
|
@@ -44,7 +43,7 @@ module Fog
|
|
44
43
|
data = service.update_record(zone.id, id, options)
|
45
44
|
end
|
46
45
|
|
47
|
-
merge_attributes(data.body["
|
46
|
+
merge_attributes(data.body["data"])
|
48
47
|
true
|
49
48
|
end
|
50
49
|
|
@@ -12,13 +12,13 @@ module Fog
|
|
12
12
|
def all
|
13
13
|
requires :zone
|
14
14
|
clear
|
15
|
-
data = service.list_records(zone.id).body
|
15
|
+
data = service.list_records(zone.id).body["data"]
|
16
16
|
load(data)
|
17
17
|
end
|
18
18
|
|
19
19
|
def get(record_id)
|
20
20
|
requires :zone
|
21
|
-
data = service.get_record(zone.id, record_id).body["
|
21
|
+
data = service.get_record(zone.id, record_id).body["data"]
|
22
22
|
new(data)
|
23
23
|
rescue Excon::Errors::NotFound
|
24
24
|
nil
|
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
|
27
27
|
def new(attributes = {})
|
28
28
|
requires :zone
|
29
|
-
super({ :
|
29
|
+
super({ zone: zone }.merge!(attributes))
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
class Zone < Fog::Model
|
8
8
|
identity :id
|
9
9
|
|
10
|
-
attribute :domain, :
|
10
|
+
attribute :domain, aliases: "name"
|
11
11
|
attribute :created_at
|
12
12
|
attribute :updated_at
|
13
13
|
|
@@ -36,7 +36,7 @@ module Fog
|
|
36
36
|
|
37
37
|
def save
|
38
38
|
requires :domain
|
39
|
-
data = service.create_domain(domain).body["
|
39
|
+
data = service.create_domain(domain).body["data"]
|
40
40
|
merge_attributes(data)
|
41
41
|
true
|
42
42
|
end
|
@@ -9,12 +9,12 @@ module Fog
|
|
9
9
|
|
10
10
|
def all
|
11
11
|
clear
|
12
|
-
data = service.list_domains.body
|
12
|
+
data = service.list_domains.body["data"]
|
13
13
|
load(data)
|
14
14
|
end
|
15
15
|
|
16
16
|
def get(zone_id)
|
17
|
-
data = service.get_domain(zone_id).body[
|
17
|
+
data = service.get_domain(zone_id).body["data"]
|
18
18
|
new(data)
|
19
19
|
rescue Excon::Errors::NotFound
|
20
20
|
nil
|
@@ -5,55 +5,47 @@ module Fog
|
|
5
5
|
# Create a single domain in DNSimple in your account.
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name to host (ie example.com)
|
9
9
|
#
|
10
10
|
# ==== Returns
|
11
11
|
# * response<~Excon::Response>:
|
12
12
|
# * body<~Hash>:
|
13
|
-
# *
|
14
|
-
def create_domain(
|
13
|
+
# * "data"<~Hash> The representation of the domain.
|
14
|
+
def create_domain(zone_name)
|
15
15
|
body = {
|
16
|
-
"
|
17
|
-
"name" => name
|
18
|
-
}
|
16
|
+
"name" => zone_name
|
19
17
|
}
|
20
18
|
|
21
19
|
request(
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
20
|
+
body: Fog::JSON.encode(body),
|
21
|
+
expects: 201,
|
22
|
+
method: "POST",
|
23
|
+
path: "/#{@dnsimple_account}/domains"
|
26
24
|
)
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
28
|
class Mock
|
31
|
-
def create_domain(
|
29
|
+
def create_domain(zone_name)
|
32
30
|
body = {
|
33
|
-
"
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
"record_count" => 0,
|
46
|
-
"service_count" => 0,
|
47
|
-
"expires_on" => Date.today + 365,
|
48
|
-
"created_at" => Time.now.iso8601,
|
49
|
-
"updated_at" => Time.now.iso8601,
|
50
|
-
}
|
31
|
+
"id" => Fog::Mock.random_numbers(1).to_i,
|
32
|
+
"account_id" => @dnsimple_account,
|
33
|
+
"registrant_id" => nil,
|
34
|
+
"name" => zone_name,
|
35
|
+
"unicode_name" => zone_name,
|
36
|
+
"token" => "4fIFYWYiJayvL2tkf_mkBkqC4L+4RtYqDA",
|
37
|
+
"state" => "registered",
|
38
|
+
"auto_renew" => nil,
|
39
|
+
"private_whois" => false,
|
40
|
+
"expires_on" => Date.today + 365,
|
41
|
+
"created_at" => Time.now.iso8601,
|
42
|
+
"updated_at" => Time.now.iso8601,
|
51
43
|
}
|
52
44
|
self.data[:domains] << body
|
53
45
|
|
54
46
|
response = Excon::Response.new
|
55
47
|
response.status = 201
|
56
|
-
response.body = body
|
48
|
+
response.body = { "data" => body }
|
57
49
|
response
|
58
50
|
end
|
59
51
|
end
|
@@ -5,7 +5,7 @@ module Fog
|
|
5
5
|
# Create a new host in the specified zone
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name
|
9
9
|
# * name<~String>
|
10
10
|
# * type<~String>
|
11
11
|
# * content<~String>
|
@@ -17,48 +17,43 @@ module Fog
|
|
17
17
|
# * response<~Excon::Response>:
|
18
18
|
# * body<~Hash>:
|
19
19
|
# * 'record'<~Hash> The representation of the record.
|
20
|
-
def create_record(
|
20
|
+
def create_record(zone_name, name, type, content, options = {})
|
21
21
|
body = {
|
22
|
-
"
|
23
|
-
|
24
|
-
|
25
|
-
"content" => content
|
26
|
-
}
|
22
|
+
"name" => name,
|
23
|
+
"type" => type,
|
24
|
+
"content" => content
|
27
25
|
}
|
28
|
-
|
29
|
-
body["record"].merge!(options)
|
26
|
+
body.merge!(options)
|
30
27
|
|
31
28
|
request(
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
29
|
+
body: Fog::JSON.encode(body),
|
30
|
+
expects: 201,
|
31
|
+
method: "POST",
|
32
|
+
path: "/#{@dnsimple_account}/zones/#{zone_name}/records"
|
36
33
|
)
|
37
34
|
end
|
38
35
|
end
|
39
36
|
|
40
37
|
class Mock
|
41
|
-
def create_record(
|
38
|
+
def create_record(zone_name, name, type, content, options = {})
|
42
39
|
body = {
|
43
|
-
"
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
self.data[:records][domain] ||= []
|
57
|
-
self.data[:records][domain] << body
|
40
|
+
"id" => Fog::Mock.random_numbers(1).to_i,
|
41
|
+
"domain_id" => 1,
|
42
|
+
"name" => name,
|
43
|
+
"content" => content,
|
44
|
+
"ttl" => 3600,
|
45
|
+
"priority" => 0,
|
46
|
+
"type" => type,
|
47
|
+
"system_record" => false,
|
48
|
+
"created_at" => Time.now.iso8601,
|
49
|
+
"updated_at" => Time.now.iso8601,
|
50
|
+
}.merge(options)
|
51
|
+
self.data[:records][zone_name] ||= []
|
52
|
+
self.data[:records][zone_name] << body
|
58
53
|
|
59
54
|
response = Excon::Response.new
|
60
55
|
response.status = 201
|
61
|
-
response.body = body
|
56
|
+
response.body = { "data" => body }
|
62
57
|
response
|
63
58
|
end
|
64
59
|
end
|
@@ -9,24 +9,25 @@ module Fog
|
|
9
9
|
# DNSimple this will not delete the domain from the registry.
|
10
10
|
#
|
11
11
|
# ==== Parameters
|
12
|
-
# *
|
12
|
+
# * account_id<~String> - the account the domain belong to
|
13
|
+
# * zone_name<~String> - zone name
|
13
14
|
#
|
14
|
-
def delete_domain(
|
15
|
+
def delete_domain(zone_name)
|
15
16
|
request(
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
17
|
+
expects: 204,
|
18
|
+
method: "DELETE",
|
19
|
+
path: "/#{@dnsimple_account}/domains/#{zone_name}"
|
19
20
|
)
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
23
24
|
class Mock
|
24
|
-
def delete_domain(
|
25
|
-
self.data[:records].delete
|
26
|
-
self.data[:domains].reject! { |domain| domain["
|
25
|
+
def delete_domain(zone_name)
|
26
|
+
self.data[:records].delete(zone_name)
|
27
|
+
self.data[:domains].reject! { |domain| domain["name"] == zone_name }
|
27
28
|
|
28
29
|
response = Excon::Response.new
|
29
|
-
response.status =
|
30
|
+
response.status = 204
|
30
31
|
response
|
31
32
|
end
|
32
33
|
end
|
@@ -5,23 +5,23 @@ module Fog
|
|
5
5
|
# Delete the record with the given ID for the given domain.
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name
|
9
9
|
# * record_id<~String>
|
10
|
-
def delete_record(
|
10
|
+
def delete_record(zone_name, record_id)
|
11
11
|
request(
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
12
|
+
expects: 204,
|
13
|
+
method: "DELETE",
|
14
|
+
path: "/#{@dnsimple_account}/zones/#{zone_name}/records/#{record_id}"
|
15
15
|
)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
class Mock
|
20
|
-
def delete_record(
|
21
|
-
self.data[:records][
|
20
|
+
def delete_record(zone_name, record_id)
|
21
|
+
self.data[:records][zone_name].reject! { |record| record["id"] == record_id }
|
22
22
|
|
23
23
|
response = Excon::Response.new
|
24
|
-
response.status =
|
24
|
+
response.status = 204
|
25
25
|
response
|
26
26
|
end
|
27
27
|
end
|
@@ -7,30 +7,30 @@ module Fog
|
|
7
7
|
# itself.
|
8
8
|
#
|
9
9
|
# ==== Parameters
|
10
|
-
# *
|
10
|
+
# * zone_name<~String> - zone name
|
11
11
|
#
|
12
12
|
# ==== Returns
|
13
13
|
# * response<~Excon::Response>:
|
14
14
|
# * body<~Hash>:
|
15
|
-
# *
|
16
|
-
def get_domain(
|
15
|
+
# * "data"<~Hash> The representation of the domain.
|
16
|
+
def get_domain(zone_name)
|
17
17
|
request(
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
18
|
+
expects: 200,
|
19
|
+
method: "GET",
|
20
|
+
path: "/#{@dnsimple_account}/domains/#{zone_name}"
|
21
21
|
)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
class Mock
|
26
|
-
def get_domain(
|
26
|
+
def get_domain(zone_name)
|
27
27
|
domain = self.data[:domains].find do |domain|
|
28
|
-
domain["
|
28
|
+
domain["id"] == zone_name || domain["name"] == zone_name
|
29
29
|
end
|
30
30
|
|
31
31
|
response = Excon::Response.new
|
32
32
|
response.status = 200
|
33
|
-
response.body = domain
|
33
|
+
response.body = { "data" => domain }
|
34
34
|
response
|
35
35
|
end
|
36
36
|
end
|
@@ -5,29 +5,29 @@ module Fog
|
|
5
5
|
# Gets record from given domain.
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name
|
9
9
|
# * record_id<~String>
|
10
10
|
#
|
11
11
|
# ==== Returns
|
12
12
|
# * response<~Excon::Response>:
|
13
13
|
# * body<~Hash>:
|
14
|
-
# *
|
15
|
-
def get_record(
|
14
|
+
# * "data"<~Hash> The representation of the record.
|
15
|
+
def get_record(zone_name, record_id)
|
16
16
|
request(
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
17
|
+
expects: 200,
|
18
|
+
method: "GET",
|
19
|
+
path: "/#{@dnsimple_account}/zones/#{zone_name}/records/#{record_id}"
|
20
20
|
)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
class Mock
|
25
|
-
def get_record(
|
25
|
+
def get_record(zone_name, record_id)
|
26
26
|
response = Excon::Response.new
|
27
27
|
|
28
|
-
if self.data[:records].key?(
|
28
|
+
if self.data[:records].key?(zone_name)
|
29
29
|
response.status = 200
|
30
|
-
response.body = self.data[:records][
|
30
|
+
response.body = { "data" => self.data[:records][zone_name].find { |record| record["id"] == record_id }}
|
31
31
|
|
32
32
|
if response.body.nil?
|
33
33
|
response.status = 404
|
@@ -38,7 +38,7 @@ module Fog
|
|
38
38
|
else
|
39
39
|
response.status = 404
|
40
40
|
response.body = {
|
41
|
-
"error" => "Couldn't find Domain with name = #{
|
41
|
+
"error" => "Couldn't find Domain with name = #{zone_name}"
|
42
42
|
}
|
43
43
|
end
|
44
44
|
response
|
@@ -2,21 +2,20 @@ module Fog
|
|
2
2
|
module DNS
|
3
3
|
class Dnsimple
|
4
4
|
class Real
|
5
|
-
# Get the
|
6
|
-
# may pass either the domain numeric ID or the domain name itself.
|
5
|
+
# Get the list of domains in the account.
|
7
6
|
#
|
8
7
|
# ==== Parameters
|
9
8
|
#
|
10
9
|
# ==== Returns
|
11
10
|
# * response<~Excon::Response>:
|
12
11
|
# * body<~Hash>:
|
13
|
-
# * <~Array>:
|
14
|
-
# *
|
12
|
+
# * "data"<~Array>:
|
13
|
+
# * <~Hash> The representation of the domain.
|
15
14
|
def list_domains
|
16
15
|
request(
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
16
|
+
expects: 200,
|
17
|
+
method: "GET",
|
18
|
+
path: "/#{@dnsimple_account}/domains"
|
20
19
|
)
|
21
20
|
end
|
22
21
|
end
|
@@ -25,7 +24,7 @@ module Fog
|
|
25
24
|
def list_domains
|
26
25
|
response = Excon::Response.new
|
27
26
|
response.status = 200
|
28
|
-
response.body = self.data[:domains]
|
27
|
+
response.body = { "data" => self.data[:domains] }
|
29
28
|
response
|
30
29
|
end
|
31
30
|
end
|
@@ -5,27 +5,27 @@ module Fog
|
|
5
5
|
# Get the list of records for the specific domain.
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name
|
9
9
|
#
|
10
10
|
# ==== Returns
|
11
11
|
# * response<~Excon::Response>:
|
12
12
|
# * body<~Hash>:
|
13
|
-
# * <~Array>:
|
14
|
-
# *
|
15
|
-
def list_records(
|
13
|
+
# * "data"<~Array>:
|
14
|
+
# * <~Hash> The representation of the record.
|
15
|
+
def list_records(zone_name)
|
16
16
|
request(
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
17
|
+
expects: 200,
|
18
|
+
method: "GET",
|
19
|
+
path: "/#{@dnsimple_account}/zones/#{zone_name}/records"
|
20
20
|
)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
class Mock
|
25
|
-
def list_records(
|
25
|
+
def list_records(zone_name)
|
26
26
|
response = Excon::Response.new
|
27
27
|
response.status = 200
|
28
|
-
response.body = self.data[:records][
|
28
|
+
response.body = { "data" => self.data[:records][zone_name] || [] }
|
29
29
|
response
|
30
30
|
end
|
31
31
|
end
|
@@ -5,7 +5,7 @@ module Fog
|
|
5
5
|
# Update the given record for the given domain.
|
6
6
|
#
|
7
7
|
# ==== Parameters
|
8
|
-
# *
|
8
|
+
# * zone_name<~String> - zone name
|
9
9
|
# * record_id<~String>
|
10
10
|
# * options<~Hash> - optional
|
11
11
|
# * type<~String>
|
@@ -16,33 +16,31 @@ module Fog
|
|
16
16
|
# ==== Returns
|
17
17
|
# * response<~Excon::Response>:
|
18
18
|
# * body<~Hash>:
|
19
|
-
# *
|
20
|
-
def update_record(
|
21
|
-
body =
|
22
|
-
"record" => options
|
23
|
-
}
|
19
|
+
# * "data"<~Hash> The representation of the record.
|
20
|
+
def update_record(zone_name, record_id, options)
|
21
|
+
body = options
|
24
22
|
|
25
23
|
request(
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
24
|
+
body: Fog::JSON.encode(body),
|
25
|
+
expects: 200,
|
26
|
+
method: "PATCH",
|
27
|
+
path: "/#{@dnsimple_account}/zones/#{zone_name}/records/#{record_id}"
|
30
28
|
)
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
32
|
class Mock
|
35
|
-
def update_record(
|
36
|
-
record = self.data[:records][
|
33
|
+
def update_record(zone_name, record_id, options)
|
34
|
+
record = self.data[:records][zone_name].find { |record| record["id"] == record_id }
|
37
35
|
response = Excon::Response.new
|
38
36
|
|
39
37
|
if record.nil?
|
40
38
|
response.status = 400
|
41
39
|
else
|
42
40
|
response.status = 200
|
43
|
-
record
|
44
|
-
record["
|
45
|
-
response.body = record
|
41
|
+
record.merge!(options)
|
42
|
+
record["updated_at"] = Time.now.iso8601
|
43
|
+
response.body = { "data" => record }
|
46
44
|
end
|
47
45
|
|
48
46
|
response
|
data/lib/fog/dnsimple/version.rb
CHANGED
@@ -6,9 +6,9 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
6
6
|
tests("success") do
|
7
7
|
|
8
8
|
test("get current domain count") do
|
9
|
-
response = Fog::DNS[:dnsimple].list_domains
|
9
|
+
response = Fog::DNS[:dnsimple].list_domains
|
10
10
|
if response.status == 200
|
11
|
-
@domain_count = response.body.size
|
11
|
+
@domain_count = response.body["data"].size
|
12
12
|
end
|
13
13
|
|
14
14
|
response.status == 200
|
@@ -18,7 +18,7 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
18
18
|
domain = generate_unique_domain
|
19
19
|
response = Fog::DNS[:dnsimple].create_domain(domain)
|
20
20
|
if response.status == 201
|
21
|
-
@domain = response.body["
|
21
|
+
@domain = response.body["data"]
|
22
22
|
end
|
23
23
|
|
24
24
|
response.status == 201
|
@@ -37,7 +37,7 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
37
37
|
response = Fog::DNS[:dnsimple].create_record(domain, name, type, content)
|
38
38
|
|
39
39
|
if response.status == 201
|
40
|
-
@record = response.body["
|
40
|
+
@record = response.body["data"]
|
41
41
|
end
|
42
42
|
|
43
43
|
response.status == 201
|
@@ -49,7 +49,7 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
49
49
|
name = ""
|
50
50
|
type = "MX"
|
51
51
|
content = "mail.#{domain}"
|
52
|
-
options = { "ttl" => 60, "
|
52
|
+
options = { "ttl" => 60, "priority" => 10 }
|
53
53
|
response = Fog::DNS[:dnsimple].create_record(domain, name, type, content, options)
|
54
54
|
|
55
55
|
test "MX record creation returns 201" do
|
@@ -57,11 +57,11 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
options.each do |key, value|
|
60
|
-
test("MX record has option #{key}") { value == response.body["
|
60
|
+
test("MX record has option #{key}") { value == response.body["data"][key.to_s] }
|
61
61
|
end
|
62
62
|
|
63
63
|
test "MX record is correct type" do
|
64
|
-
response.body["
|
64
|
+
response.body["data"]["type"] == "MX"
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -71,7 +71,7 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
71
71
|
|
72
72
|
response = Fog::DNS[:dnsimple].get_record(domain, record_id)
|
73
73
|
|
74
|
-
(response.status == 200) and (@record == response.body["
|
74
|
+
(response.status == 200) and (@record == response.body["data"])
|
75
75
|
end
|
76
76
|
|
77
77
|
test("update a record") do
|
@@ -86,11 +86,11 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
86
86
|
response = Fog::DNS[:dnsimple].list_records(@domain["name"])
|
87
87
|
|
88
88
|
if response.status == 200
|
89
|
-
@records = response.body
|
89
|
+
@records = response.body["data"]
|
90
90
|
end
|
91
91
|
|
92
92
|
test "list records returns all records for domain" do
|
93
|
-
@records.reject { |record| record["
|
93
|
+
@records.reject { |record| record["system_record"] }.size == 2
|
94
94
|
end
|
95
95
|
|
96
96
|
response.status == 200
|
@@ -101,9 +101,9 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
101
101
|
|
102
102
|
result = true
|
103
103
|
@records.each do |record|
|
104
|
-
next if record["
|
105
|
-
response = Fog::DNS[:dnsimple].delete_record(domain, record["
|
106
|
-
if response.status !=
|
104
|
+
next if record["system_record"]
|
105
|
+
response = Fog::DNS[:dnsimple].delete_record(domain, record["id"])
|
106
|
+
if response.status != 204
|
107
107
|
result = false
|
108
108
|
break
|
109
109
|
end
|
@@ -114,7 +114,7 @@ Shindo.tests('Fog::DNS[:dnsimple] | DNS requests', ['dnsimple', 'dns']) do
|
|
114
114
|
|
115
115
|
test("delete domain") do
|
116
116
|
response = Fog::DNS[:dnsimple].delete_domain(@domain["name"])
|
117
|
-
response.status ==
|
117
|
+
response.status == 204
|
118
118
|
end
|
119
119
|
|
120
120
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-dnsimple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Carletti
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: shindo
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,16 +56,22 @@ dependencies:
|
|
56
56
|
name: fog-core
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.38'
|
62
|
+
- - "<"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '3'
|
62
65
|
type: :runtime
|
63
66
|
prerelease: false
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
|
-
- - "
|
69
|
+
- - ">="
|
67
70
|
- !ruby/object:Gem::Version
|
68
71
|
version: '1.38'
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '3'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: fog-json
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,9 +91,7 @@ description: |-
|
|
85
91
|
to use the DNSimple in applications.
|
86
92
|
email:
|
87
93
|
- weppos@weppos.net
|
88
|
-
executables:
|
89
|
-
- console
|
90
|
-
- setup
|
94
|
+
executables: []
|
91
95
|
extensions: []
|
92
96
|
extra_rdoc_files: []
|
93
97
|
files:
|
@@ -147,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
151
|
version: '0'
|
148
152
|
requirements: []
|
149
153
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.
|
154
|
+
rubygems_version: 2.6.13
|
151
155
|
signing_key:
|
152
156
|
specification_version: 4
|
153
157
|
summary: Module for the 'fog' gem to support DNSimple.
|