dnsimple 3.0.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -2
- data/README.md +5 -4
- data/dnsimple.gemspec +3 -3
- data/lib/dnsimple.rb +1 -0
- data/lib/dnsimple/client.rb +37 -11
- data/lib/dnsimple/client/accounts.rb +26 -0
- data/lib/dnsimple/client/clients.rb +15 -1
- data/lib/dnsimple/client/contacts.rb +16 -7
- data/lib/dnsimple/client/domains.rb +20 -6
- data/lib/dnsimple/client/domains_email_forwards.rb +17 -8
- data/lib/dnsimple/client/identity.rb +2 -5
- data/lib/dnsimple/client/registrar.rb +1 -1
- data/lib/dnsimple/client/registrar_auto_renewal.rb +2 -2
- data/lib/dnsimple/client/services.rb +15 -3
- data/lib/dnsimple/client/templates.rb +16 -4
- data/lib/dnsimple/client/templates_records.rb +135 -0
- data/lib/dnsimple/client/tlds.rb +13 -4
- data/lib/dnsimple/client/webhooks.rb +11 -2
- data/lib/dnsimple/client/zones.rb +19 -5
- data/lib/dnsimple/client/zones_records.rb +48 -11
- data/lib/dnsimple/default.rb +2 -2
- data/lib/dnsimple/extra.rb +3 -3
- data/lib/dnsimple/options.rb +53 -0
- data/lib/dnsimple/struct.rb +2 -0
- data/lib/dnsimple/struct/account.rb +3 -0
- data/lib/dnsimple/struct/contact.rb +0 -3
- data/lib/dnsimple/struct/record.rb +2 -2
- data/lib/dnsimple/struct/template_record.rb +34 -0
- data/lib/dnsimple/struct/whoami.rb +30 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/accounts_spec.rb +31 -0
- data/spec/dnsimple/client/contacts_spec.rb +19 -2
- data/spec/dnsimple/client/domains_email_forwards_spec.rb +18 -1
- data/spec/dnsimple/client/domains_spec.rb +30 -1
- data/spec/dnsimple/client/identity_spec.rb +6 -6
- data/spec/dnsimple/client/services_spec.rb +30 -1
- data/spec/dnsimple/client/templates_records_spec.rb +226 -0
- data/spec/dnsimple/client/templates_spec.rb +30 -1
- data/spec/dnsimple/client/tlds_spec.rb +18 -1
- data/spec/dnsimple/client/webhooks_spec.rb +6 -0
- data/spec/dnsimple/client/zones_records_spec.rb +30 -1
- data/spec/dnsimple/client/zones_spec.rb +30 -1
- data/spec/dnsimple/client_spec.rb +35 -14
- data/spec/dnsimple/options/base_spec.rb +22 -0
- data/spec/dnsimple/options/list_options_spec.rb +100 -0
- data/spec/fixtures.http/accounts/success-account.http +21 -0
- data/spec/fixtures.http/accounts/success-user.http +21 -0
- data/spec/fixtures.http/createContact/created.http +1 -1
- data/spec/fixtures.http/createTemplateRecord/created.http +17 -0
- data/spec/fixtures.http/deleteTemplateRecord/success.http +13 -0
- data/spec/fixtures.http/getContact/success.http +1 -1
- data/spec/fixtures.http/getTemplateRecord/success.http +17 -0
- data/spec/fixtures.http/listContacts/success.http +1 -1
- data/spec/fixtures.http/listTemplateRecords/success.http +17 -0
- data/spec/fixtures.http/notfound-template.http +12 -0
- data/spec/fixtures.http/updateContact/success.http +1 -1
- data/spec/spec_helper.rb +0 -11
- metadata +35 -2
@@ -31,7 +31,7 @@ describe Dnsimple::Client do
|
|
31
31
|
subject = described_class.new(username: "user", password: "pass")
|
32
32
|
subject.execute(:get, "test", {})
|
33
33
|
|
34
|
-
expect(WebMock).to have_requested(:get, "https://
|
34
|
+
expect(WebMock).to have_requested(:get, "https://api.dnsimple.com/test").with(basic_auth: %w(user pass))
|
35
35
|
end
|
36
36
|
|
37
37
|
it "uses access token if there's an access token provided" do
|
@@ -43,14 +43,6 @@ describe Dnsimple::Client do
|
|
43
43
|
expect(WebMock).to have_requested(:get, "https://api.dnsimple.com/test").
|
44
44
|
with { |req| req.headers["Authorization"] == "Bearer access-token" }
|
45
45
|
end
|
46
|
-
|
47
|
-
it "raises an error if there's no password, domain token or access token provided" do
|
48
|
-
subject = described_class.new(username: "user", oauth_client_id: "id", oauth_client_secret: "secret")
|
49
|
-
|
50
|
-
expect {
|
51
|
-
subject.execute(:get, "test", {})
|
52
|
-
}.to raise_error(Dnsimple::Error, "A password, domain API token or access token is required for all API requests.")
|
53
|
-
end
|
54
46
|
end
|
55
47
|
|
56
48
|
describe "#get" do
|
@@ -124,8 +116,9 @@ describe Dnsimple::Client do
|
|
124
116
|
|
125
117
|
subject.request(:get, 'foo', {})
|
126
118
|
|
127
|
-
expect(WebMock).to have_requested(:get, "https://
|
128
|
-
with(
|
119
|
+
expect(WebMock).to have_requested(:get, "https://api.dnsimple.com/foo").
|
120
|
+
with(basic_auth: %w(user pass),
|
121
|
+
headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT })
|
129
122
|
end
|
130
123
|
|
131
124
|
it "delegates to HTTParty" do
|
@@ -136,7 +129,7 @@ describe Dnsimple::Client do
|
|
136
129
|
"#{subject.base_url}foo",
|
137
130
|
format: :json,
|
138
131
|
basic_auth: { username: "user", password: "pass" },
|
139
|
-
headers: { 'Accept' => 'application/json', 'User-Agent' =>
|
132
|
+
headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
|
140
133
|
).
|
141
134
|
and_return(double('response', code: 200))
|
142
135
|
|
@@ -151,7 +144,7 @@ describe Dnsimple::Client do
|
|
151
144
|
body: JSON.dump(something: "else"),
|
152
145
|
query: { foo: "bar" },
|
153
146
|
basic_auth: { username: "user", password: "pass" },
|
154
|
-
headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' =>
|
147
|
+
headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT, "Custom" => "Header" }
|
155
148
|
).
|
156
149
|
and_return(double('response', code: 200))
|
157
150
|
|
@@ -165,12 +158,40 @@ describe Dnsimple::Client do
|
|
165
158
|
format: :json,
|
166
159
|
body: { something: "else" },
|
167
160
|
basic_auth: { username: "user", password: "pass" },
|
168
|
-
headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' =>
|
161
|
+
headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => Dnsimple::Default::USER_AGENT }
|
169
162
|
).
|
170
163
|
and_return(double('response', code: 200))
|
171
164
|
|
172
165
|
subject.request(:post, 'foo', { something: "else" }, { headers: { "Content-Type" => "application/x-www-form-urlencoded" } })
|
173
166
|
end
|
167
|
+
|
168
|
+
it "includes options for proxy support" do
|
169
|
+
expect(HTTParty).to receive(:get).
|
170
|
+
with(
|
171
|
+
"#{subject.base_url}test",
|
172
|
+
format: :json,
|
173
|
+
http_proxyaddr: "example-proxy.com",
|
174
|
+
http_proxyport: "4321",
|
175
|
+
headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
|
176
|
+
).
|
177
|
+
and_return(double('response', code: 200))
|
178
|
+
|
179
|
+
subject = described_class.new(proxy: "example-proxy.com:4321")
|
180
|
+
subject.request(:get, "test", nil, {})
|
181
|
+
end
|
182
|
+
|
183
|
+
it "supports custom user agent" do
|
184
|
+
expect(HTTParty).to receive(:get).
|
185
|
+
with(
|
186
|
+
"#{subject.base_url}test",
|
187
|
+
format: :json,
|
188
|
+
headers: hash_including("User-Agent" => "#{Dnsimple::Default::USER_AGENT} customAgent")
|
189
|
+
).
|
190
|
+
and_return(double("response", code: 200))
|
191
|
+
|
192
|
+
subject = described_class.new(user_agent: "customAgent")
|
193
|
+
subject.request(:get, "test", nil)
|
194
|
+
end
|
174
195
|
end
|
175
196
|
|
176
197
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Dnsimple::Options::Base do
|
4
|
+
describe '#initialize' do
|
5
|
+
it 'accepts a hash' do
|
6
|
+
hash = { a: 1 }
|
7
|
+
expect(described_class.new(hash).to_h).to eq(hash)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'accepts nil' do
|
11
|
+
expect(described_class.new(nil).to_h).to eq({})
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'duplicates given hash' do
|
15
|
+
hash = { a: [1] }
|
16
|
+
base = described_class.new(hash)
|
17
|
+
base.to_h[:a] << 2
|
18
|
+
|
19
|
+
expect(base.to_h).to eq(hash)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Dnsimple::Options::ListOptions do
|
4
|
+
describe '#to_h' do
|
5
|
+
it 'returns empty hash if given options equal to nil' do
|
6
|
+
options = described_class.new(nil)
|
7
|
+
expect(options.to_h).to eq({})
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'returns empty hash if given options are empty' do
|
11
|
+
options = described_class.new({})
|
12
|
+
expect(options.to_h).to eq({})
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'query' do
|
16
|
+
it 'adds "query" key if given options are filled' do
|
17
|
+
options = described_class.new(a: 1)
|
18
|
+
expect(options.to_h).to have_key(:query)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'pagination' do
|
23
|
+
it 'adds "page" to "query"' do
|
24
|
+
raw = { page: '23' }
|
25
|
+
expected = { query: raw }
|
26
|
+
options = described_class.new(raw)
|
27
|
+
|
28
|
+
expect(options.to_h).to eq(expected)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'adds "per_page" to "query"' do
|
32
|
+
raw = { per_page: '500' }
|
33
|
+
expected = { query: raw }
|
34
|
+
options = described_class.new(raw)
|
35
|
+
|
36
|
+
expect(options.to_h).to eq(expected)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'combines "page" and "per_page"' do
|
40
|
+
raw = { page: '1', per_page: '100' }
|
41
|
+
expected = { query: raw }
|
42
|
+
options = described_class.new(raw)
|
43
|
+
|
44
|
+
expect(options.to_h).to eq(expected)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'sorting' do
|
49
|
+
it 'adds sorting policy to "query"' do
|
50
|
+
raw = { sort: 'name:desc' }
|
51
|
+
expected = { query: raw }
|
52
|
+
options = described_class.new(raw)
|
53
|
+
|
54
|
+
expect(options.to_h).to eq(expected)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'combines with filtering' do
|
58
|
+
raw = { sort: 'name:desc', filter: { name: 'foo' } }
|
59
|
+
expected = { query: { sort: raw.fetch(:sort) }.merge(raw.fetch(:filter)) }
|
60
|
+
options = described_class.new(raw)
|
61
|
+
|
62
|
+
expect(options.to_h).to eq(expected)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'combines with pagination' do
|
66
|
+
raw = { sort: 'name:desc', page: '2', per_page: '100' }
|
67
|
+
expected = { query: raw }
|
68
|
+
options = described_class.new(raw)
|
69
|
+
|
70
|
+
expect(options.to_h).to eq(expected)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'filtering' do
|
75
|
+
it 'adds filtering policy to "query"' do
|
76
|
+
raw = { filter: { name_like: 'example' } }
|
77
|
+
expected = { query: raw.fetch(:filter) }
|
78
|
+
options = described_class.new(raw)
|
79
|
+
|
80
|
+
expect(options.to_h).to eq(expected)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'combines with sorting' do
|
84
|
+
raw = { filter: { name_like: 'bar' }, sort: 'tld:desc' }
|
85
|
+
expected = { query: raw.fetch(:filter).merge(sort: raw.fetch(:sort)) }
|
86
|
+
options = described_class.new(raw)
|
87
|
+
|
88
|
+
expect(options.to_h).to eq(expected)
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'combines with pagination' do
|
92
|
+
raw = { filter: { name_like: 'example' }, page: '1', per_page: '20' }
|
93
|
+
expected = { query: { page: raw.fetch(:page), per_page: raw.fetch(:per_page) }.merge(raw.fetch(:filter)) }
|
94
|
+
options = described_class.new(raw)
|
95
|
+
|
96
|
+
expect(options.to_h).to eq(expected)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 14 Jun 2016 12:02:58 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
X-RateLimit-Limit: 2400
|
8
|
+
X-RateLimit-Remaining: 2391
|
9
|
+
X-RateLimit-Reset: 1465908577
|
10
|
+
ETag: W/"9ef3b4bf1f441a9b1cd6d7041bc181aa"
|
11
|
+
Cache-Control: max-age=0, private, must-revalidate
|
12
|
+
X-Request-Id: f705b65b-3589-43ad-97ca-3b2821d49d81
|
13
|
+
X-Runtime: 0.012661
|
14
|
+
X-Content-Type-Options: nosniff
|
15
|
+
X-Download-Options: noopen
|
16
|
+
X-Frame-Options: DENY
|
17
|
+
X-Permitted-Cross-Domain-Policies: none
|
18
|
+
X-XSS-Protection: 1; mode=block
|
19
|
+
Strict-Transport-Security: max-age=31536000
|
20
|
+
|
21
|
+
{"data":[{"id":123,"email":"john@example.com","plan_identifier":"dnsimple-personal","created_at":"2011-09-11T17:15:58.930Z","updated_at":"2016-06-03T15:02:26.325Z"}]}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 14 Jun 2016 12:05:38 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
X-RateLimit-Limit: 2400
|
8
|
+
X-RateLimit-Remaining: 2390
|
9
|
+
X-RateLimit-Reset: 1465908577
|
10
|
+
ETag: W/"b8dc5b6e94652da599d15d4668b723b5"
|
11
|
+
Cache-Control: max-age=0, private, must-revalidate
|
12
|
+
X-Request-Id: 745455ba-3871-440d-b703-1448b9708c14
|
13
|
+
X-Runtime: 0.014727
|
14
|
+
X-Content-Type-Options: nosniff
|
15
|
+
X-Download-Options: noopen
|
16
|
+
X-Frame-Options: DENY
|
17
|
+
X-Permitted-Cross-Domain-Policies: none
|
18
|
+
X-XSS-Protection: 1; mode=block
|
19
|
+
Strict-Transport-Security: max-age=31536000
|
20
|
+
|
21
|
+
{"data":[{"id":123,"email":"john@example.com","plan_identifier":"dnsimple-personal","created_at":"2011-09-11T17:15:58.930Z","updated_at":"2016-06-03T15:02:26.325Z"},{"id":456,"email":"ops@company.com","plan_identifier":"dnsimple-professional","created_at":"2012-03-16T16:02:54.736Z","updated_at":"2016-06-14T11:23:16.828Z"}]}
|
@@ -14,4 +14,4 @@ X-Request-Id: 9f577b9e-5bc4-4a8f-adfb-09dbb1992b0e
|
|
14
14
|
X-Runtime: 0.061482
|
15
15
|
Strict-Transport-Security: max-age=31536000
|
16
16
|
|
17
|
-
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","
|
17
|
+
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26.066Z","updated_at":"2016-01-19T20:50:26.066Z"}}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
HTTP/1.1 201 Created
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 03 May 2016 07:51:33 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Status: 201 Created
|
8
|
+
X-RateLimit-Limit: 2400
|
9
|
+
X-RateLimit-Remaining: 2398
|
10
|
+
X-RateLimit-Reset: 1462265481
|
11
|
+
ETag: W/"a8518ecf2fd31e6c22b0acccb5cef797"
|
12
|
+
Cache-Control: max-age=0, private, must-revalidate
|
13
|
+
X-Request-Id: b2d51e79-b3d2-4abe-9184-155fb5546617
|
14
|
+
X-Runtime: 0.190813
|
15
|
+
Strict-Transport-Security: max-age=31536000
|
16
|
+
|
17
|
+
{"data":{"id":300,"template_id":268,"name":"","content":"mx.example.com","ttl":600,"priority":10,"type":"MX","created_at":"2016-05-03T07:51:33.202Z","updated_at":"2016-05-03T07:51:33.202Z"}}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
HTTP/1.1 204 No Content
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 03 May 2016 08:00:35 GMT
|
4
|
+
Connection: keep-alive
|
5
|
+
Status: 204 No Content
|
6
|
+
X-RateLimit-Limit: 2400
|
7
|
+
X-RateLimit-Remaining: 2397
|
8
|
+
X-RateLimit-Reset: 1462265481
|
9
|
+
Cache-Control: no-cache
|
10
|
+
X-Request-Id: f0a48944-1c61-41f4-b379-04f8644d883b
|
11
|
+
X-Runtime: 0.122787
|
12
|
+
Strict-Transport-Security: max-age=31536000
|
13
|
+
|
@@ -14,4 +14,4 @@ X-Request-Id: 4c0679ed-5c79-41bf-84cb-0dc2250a07ce
|
|
14
14
|
X-Runtime: 0.127802
|
15
15
|
Strict-Transport-Security: max-age=31536000
|
16
16
|
|
17
|
-
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","
|
17
|
+
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26.066Z","updated_at":"2016-01-19T20:50:26.066Z"}}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 03 May 2016 08:04:20 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Status: 200 OK
|
8
|
+
X-RateLimit-Limit: 2400
|
9
|
+
X-RateLimit-Remaining: 2394
|
10
|
+
X-RateLimit-Reset: 1462265481
|
11
|
+
ETag: W/"743142eab9fecf3edb41e9b3f30a903f"
|
12
|
+
Cache-Control: max-age=0, private, must-revalidate
|
13
|
+
X-Request-Id: 6484e900-7255-4194-9ff8-ae5650ebd765
|
14
|
+
X-Runtime: 0.138017
|
15
|
+
Strict-Transport-Security: max-age=31536000
|
16
|
+
|
17
|
+
{"data":{"id":301,"template_id":268,"name":"","content":"mx.example.com","ttl":600,"priority":10,"type":"MX","created_at":"2016-05-03T08:03:26.444Z","updated_at":"2016-05-03T08:03:26.444Z"}}
|
@@ -14,4 +14,4 @@ X-Request-Id: 7871da61-ecf1-4771-8560-efbcf7f4b961
|
|
14
14
|
X-Runtime: 0.067822
|
15
15
|
Strict-Transport-Security: max-age=31536000
|
16
16
|
|
17
|
-
{"data":[{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","
|
17
|
+
{"data":[{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2013-11-08T17:23:15.884Z","updated_at":"2015-01-08T21:30:50.228Z"},{"id":2,"account_id":1010,"label":"","first_name":"Second","last_name":"User","job_title":"","organization_name":"","email_address":"second@example.com","phone":"+18881234567","fax":"","address1":"French Street","address2":"c/o Someone","city":"Paris","state_province":"XY","postal_code":"00200","country":"FR","created_at":"2014-12-06T15:46:18.014Z","updated_at":"2014-12-06T15:46:18.014Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 03 May 2016 08:07:17 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Status: 200 OK
|
8
|
+
X-RateLimit-Limit: 2400
|
9
|
+
X-RateLimit-Remaining: 2391
|
10
|
+
X-RateLimit-Reset: 1462265481
|
11
|
+
ETag: W/"3e53584bcf1ce7c7ee4c0bdf734224fa"
|
12
|
+
Cache-Control: max-age=0, private, must-revalidate
|
13
|
+
X-Request-Id: 79c25a93-0660-4479-a71f-201c26309e00
|
14
|
+
X-Runtime: 0.252889
|
15
|
+
Strict-Transport-Security: max-age=31536000
|
16
|
+
|
17
|
+
{"data":[{"id":296,"template_id":268,"name":"","content":"192.168.1.1","ttl":3600,"priority":null,"type":"A","created_at":"2016-04-26T08:23:54.597Z","updated_at":"2016-04-26T08:23:54.597Z"},{"id":298,"template_id":268,"name":"www","content":"{{domain}}","ttl":3600,"priority":null,"type":"CNAME","created_at":"2016-04-26T08:25:11.959Z","updated_at":"2016-04-26T08:25:11.959Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
HTTP/1.1 404 Not Found
|
2
|
+
Server: nginx
|
3
|
+
Date: Wed, 04 May 2016 09:35:45 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Status: 404 Not Found
|
8
|
+
Cache-Control: no-cache
|
9
|
+
X-Request-Id: 8d380d93-b974-4d51-82a3-5b10bce4167a
|
10
|
+
X-Runtime: 0.071884
|
11
|
+
|
12
|
+
{"message":"Template `beta` not found"}
|
@@ -14,4 +14,4 @@ X-Request-Id: c0e1e24f-d22d-4832-a30e-2f4ffc40b029
|
|
14
14
|
X-Runtime: 0.053262
|
15
15
|
Strict-Transport-Security: max-age=31536000
|
16
16
|
|
17
|
-
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","
|
17
|
+
{"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26.066Z","updated_at":"2016-01-19T20:50:26.066Z"}}
|
data/spec/spec_helper.rb
CHANGED
@@ -12,15 +12,4 @@ unless defined?(SPEC_ROOT)
|
|
12
12
|
SPEC_ROOT = File.expand_path("../", __FILE__)
|
13
13
|
end
|
14
14
|
|
15
|
-
RSpec.configure do |c|
|
16
|
-
# Silent the puts call in the commands
|
17
|
-
# c.before do
|
18
|
-
# @_stdout = $stdout
|
19
|
-
# $stdout = StringIO.new
|
20
|
-
# end
|
21
|
-
# c.after do
|
22
|
-
# $stdout = @_stdout
|
23
|
-
# end
|
24
|
-
end
|
25
|
-
|
26
15
|
Dir[File.join(SPEC_ROOT, "support/**/*.rb")].each { |f| require f }
|
metadata
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnsimple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Eden
|
8
8
|
- Simone Carletti
|
9
|
+
- Javier Acero
|
10
|
+
- Joseph Caudle
|
11
|
+
- Luca Guidi
|
9
12
|
autorequire:
|
10
13
|
bindir: bin
|
11
14
|
cert_chain: []
|
12
|
-
date: 2016-
|
15
|
+
date: 2016-06-21 00:00:00.000000000 Z
|
13
16
|
dependencies:
|
14
17
|
- !ruby/object:Gem::Dependency
|
15
18
|
name: httparty
|
@@ -85,6 +88,9 @@ description: The DNSimple API client for Ruby.
|
|
85
88
|
email:
|
86
89
|
- anthony.eden@dnsimple.com
|
87
90
|
- simone.carletti@dnsimple.com
|
91
|
+
- javier.acero@dnsimple.com
|
92
|
+
- joseph.caudle@dnsimple.com
|
93
|
+
- luca.guidi@dnsimple.com
|
88
94
|
executables: []
|
89
95
|
extensions: []
|
90
96
|
extra_rdoc_files:
|
@@ -108,6 +114,7 @@ files:
|
|
108
114
|
- dnsimple.gemspec
|
109
115
|
- lib/dnsimple.rb
|
110
116
|
- lib/dnsimple/client.rb
|
117
|
+
- lib/dnsimple/client/accounts.rb
|
111
118
|
- lib/dnsimple/client/clients.rb
|
112
119
|
- lib/dnsimple/client/contacts.rb
|
113
120
|
- lib/dnsimple/client/domains.rb
|
@@ -120,6 +127,7 @@ files:
|
|
120
127
|
- lib/dnsimple/client/registrar_whois_privacy.rb
|
121
128
|
- lib/dnsimple/client/services.rb
|
122
129
|
- lib/dnsimple/client/templates.rb
|
130
|
+
- lib/dnsimple/client/templates_records.rb
|
123
131
|
- lib/dnsimple/client/tlds.rb
|
124
132
|
- lib/dnsimple/client/webhooks.rb
|
125
133
|
- lib/dnsimple/client/zones.rb
|
@@ -127,6 +135,7 @@ files:
|
|
127
135
|
- lib/dnsimple/default.rb
|
128
136
|
- lib/dnsimple/error.rb
|
129
137
|
- lib/dnsimple/extra.rb
|
138
|
+
- lib/dnsimple/options.rb
|
130
139
|
- lib/dnsimple/response.rb
|
131
140
|
- lib/dnsimple/struct.rb
|
132
141
|
- lib/dnsimple/struct/account.rb
|
@@ -139,12 +148,15 @@ files:
|
|
139
148
|
- lib/dnsimple/struct/record.rb
|
140
149
|
- lib/dnsimple/struct/service.rb
|
141
150
|
- lib/dnsimple/struct/template.rb
|
151
|
+
- lib/dnsimple/struct/template_record.rb
|
142
152
|
- lib/dnsimple/struct/tld.rb
|
143
153
|
- lib/dnsimple/struct/user.rb
|
144
154
|
- lib/dnsimple/struct/webhook.rb
|
155
|
+
- lib/dnsimple/struct/whoami.rb
|
145
156
|
- lib/dnsimple/struct/whois_privacy.rb
|
146
157
|
- lib/dnsimple/struct/zone.rb
|
147
158
|
- lib/dnsimple/version.rb
|
159
|
+
- spec/dnsimple/client/accounts_spec.rb
|
148
160
|
- spec/dnsimple/client/client_service_spec.rb
|
149
161
|
- spec/dnsimple/client/contacts_spec.rb
|
150
162
|
- spec/dnsimple/client/domains_email_forwards_spec.rb
|
@@ -156,6 +168,7 @@ files:
|
|
156
168
|
- spec/dnsimple/client/registrar_spec.rb
|
157
169
|
- spec/dnsimple/client/registrar_whois_privacy_spec.rb
|
158
170
|
- spec/dnsimple/client/services_spec.rb
|
171
|
+
- spec/dnsimple/client/templates_records_spec.rb
|
159
172
|
- spec/dnsimple/client/templates_spec.rb
|
160
173
|
- spec/dnsimple/client/tlds_spec.rb
|
161
174
|
- spec/dnsimple/client/webhooks_spec.rb
|
@@ -163,6 +176,10 @@ files:
|
|
163
176
|
- spec/dnsimple/client/zones_spec.rb
|
164
177
|
- spec/dnsimple/client_spec.rb
|
165
178
|
- spec/dnsimple/extra_spec.rb
|
179
|
+
- spec/dnsimple/options/base_spec.rb
|
180
|
+
- spec/dnsimple/options/list_options_spec.rb
|
181
|
+
- spec/fixtures.http/accounts/success-account.http
|
182
|
+
- spec/fixtures.http/accounts/success-user.http
|
166
183
|
- spec/fixtures.http/badgateway.http
|
167
184
|
- spec/fixtures.http/changeDomainDelegation/success.http
|
168
185
|
- spec/fixtures.http/checkDomain/success.http
|
@@ -170,12 +187,14 @@ files:
|
|
170
187
|
- spec/fixtures.http/createDomain/created.http
|
171
188
|
- spec/fixtures.http/createEmailForward/created.http
|
172
189
|
- spec/fixtures.http/createTemplate/created.http
|
190
|
+
- spec/fixtures.http/createTemplateRecord/created.http
|
173
191
|
- spec/fixtures.http/createWebhook/created.http
|
174
192
|
- spec/fixtures.http/createZoneRecord/created.http
|
175
193
|
- spec/fixtures.http/deleteContact/success.http
|
176
194
|
- spec/fixtures.http/deleteDomain/success.http
|
177
195
|
- spec/fixtures.http/deleteEmailForward/success.http
|
178
196
|
- spec/fixtures.http/deleteTemplate/success.http
|
197
|
+
- spec/fixtures.http/deleteTemplateRecord/success.http
|
179
198
|
- spec/fixtures.http/deleteWebhook/success.http
|
180
199
|
- spec/fixtures.http/deleteZoneRecord/success.http
|
181
200
|
- spec/fixtures.http/disableAutoRenewal/success.http
|
@@ -190,6 +209,7 @@ files:
|
|
190
209
|
- spec/fixtures.http/getEmailForward/success.http
|
191
210
|
- spec/fixtures.http/getService/success.http
|
192
211
|
- spec/fixtures.http/getTemplate/success.http
|
212
|
+
- spec/fixtures.http/getTemplateRecord/success.http
|
193
213
|
- spec/fixtures.http/getTld/success.http
|
194
214
|
- spec/fixtures.http/getTldExtendedAttributes/success-noattributes.http
|
195
215
|
- spec/fixtures.http/getTldExtendedAttributes/success.http
|
@@ -201,6 +221,7 @@ files:
|
|
201
221
|
- spec/fixtures.http/listDomains/success.http
|
202
222
|
- spec/fixtures.http/listEmailForwards/success.http
|
203
223
|
- spec/fixtures.http/listServices/success.http
|
224
|
+
- spec/fixtures.http/listTemplateRecords/success.http
|
204
225
|
- spec/fixtures.http/listTemplates/success.http
|
205
226
|
- spec/fixtures.http/listTlds/success.http
|
206
227
|
- spec/fixtures.http/listWebhooks/success.http
|
@@ -211,6 +232,7 @@ files:
|
|
211
232
|
- spec/fixtures.http/notfound-domain.http
|
212
233
|
- spec/fixtures.http/notfound-emailforward.http
|
213
234
|
- spec/fixtures.http/notfound-record.http
|
235
|
+
- spec/fixtures.http/notfound-template.http
|
214
236
|
- spec/fixtures.http/notfound-webhook.http
|
215
237
|
- spec/fixtures.http/notfound-zone.http
|
216
238
|
- spec/fixtures.http/oauthAccessToken/success.http
|
@@ -259,6 +281,7 @@ signing_key:
|
|
259
281
|
specification_version: 4
|
260
282
|
summary: The DNSimple API client for Ruby
|
261
283
|
test_files:
|
284
|
+
- spec/dnsimple/client/accounts_spec.rb
|
262
285
|
- spec/dnsimple/client/client_service_spec.rb
|
263
286
|
- spec/dnsimple/client/contacts_spec.rb
|
264
287
|
- spec/dnsimple/client/domains_email_forwards_spec.rb
|
@@ -270,6 +293,7 @@ test_files:
|
|
270
293
|
- spec/dnsimple/client/registrar_spec.rb
|
271
294
|
- spec/dnsimple/client/registrar_whois_privacy_spec.rb
|
272
295
|
- spec/dnsimple/client/services_spec.rb
|
296
|
+
- spec/dnsimple/client/templates_records_spec.rb
|
273
297
|
- spec/dnsimple/client/templates_spec.rb
|
274
298
|
- spec/dnsimple/client/tlds_spec.rb
|
275
299
|
- spec/dnsimple/client/webhooks_spec.rb
|
@@ -277,6 +301,10 @@ test_files:
|
|
277
301
|
- spec/dnsimple/client/zones_spec.rb
|
278
302
|
- spec/dnsimple/client_spec.rb
|
279
303
|
- spec/dnsimple/extra_spec.rb
|
304
|
+
- spec/dnsimple/options/base_spec.rb
|
305
|
+
- spec/dnsimple/options/list_options_spec.rb
|
306
|
+
- spec/fixtures.http/accounts/success-account.http
|
307
|
+
- spec/fixtures.http/accounts/success-user.http
|
280
308
|
- spec/fixtures.http/badgateway.http
|
281
309
|
- spec/fixtures.http/changeDomainDelegation/success.http
|
282
310
|
- spec/fixtures.http/checkDomain/success.http
|
@@ -284,12 +312,14 @@ test_files:
|
|
284
312
|
- spec/fixtures.http/createDomain/created.http
|
285
313
|
- spec/fixtures.http/createEmailForward/created.http
|
286
314
|
- spec/fixtures.http/createTemplate/created.http
|
315
|
+
- spec/fixtures.http/createTemplateRecord/created.http
|
287
316
|
- spec/fixtures.http/createWebhook/created.http
|
288
317
|
- spec/fixtures.http/createZoneRecord/created.http
|
289
318
|
- spec/fixtures.http/deleteContact/success.http
|
290
319
|
- spec/fixtures.http/deleteDomain/success.http
|
291
320
|
- spec/fixtures.http/deleteEmailForward/success.http
|
292
321
|
- spec/fixtures.http/deleteTemplate/success.http
|
322
|
+
- spec/fixtures.http/deleteTemplateRecord/success.http
|
293
323
|
- spec/fixtures.http/deleteWebhook/success.http
|
294
324
|
- spec/fixtures.http/deleteZoneRecord/success.http
|
295
325
|
- spec/fixtures.http/disableAutoRenewal/success.http
|
@@ -304,6 +334,7 @@ test_files:
|
|
304
334
|
- spec/fixtures.http/getEmailForward/success.http
|
305
335
|
- spec/fixtures.http/getService/success.http
|
306
336
|
- spec/fixtures.http/getTemplate/success.http
|
337
|
+
- spec/fixtures.http/getTemplateRecord/success.http
|
307
338
|
- spec/fixtures.http/getTld/success.http
|
308
339
|
- spec/fixtures.http/getTldExtendedAttributes/success-noattributes.http
|
309
340
|
- spec/fixtures.http/getTldExtendedAttributes/success.http
|
@@ -315,6 +346,7 @@ test_files:
|
|
315
346
|
- spec/fixtures.http/listDomains/success.http
|
316
347
|
- spec/fixtures.http/listEmailForwards/success.http
|
317
348
|
- spec/fixtures.http/listServices/success.http
|
349
|
+
- spec/fixtures.http/listTemplateRecords/success.http
|
318
350
|
- spec/fixtures.http/listTemplates/success.http
|
319
351
|
- spec/fixtures.http/listTlds/success.http
|
320
352
|
- spec/fixtures.http/listWebhooks/success.http
|
@@ -325,6 +357,7 @@ test_files:
|
|
325
357
|
- spec/fixtures.http/notfound-domain.http
|
326
358
|
- spec/fixtures.http/notfound-emailforward.http
|
327
359
|
- spec/fixtures.http/notfound-record.http
|
360
|
+
- spec/fixtures.http/notfound-template.http
|
328
361
|
- spec/fixtures.http/notfound-webhook.http
|
329
362
|
- spec/fixtures.http/notfound-zone.http
|
330
363
|
- spec/fixtures.http/oauthAccessToken/success.http
|