gandi_v5 0.6.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +81 -5
  3. data/README.md +65 -14
  4. data/lib/gandi_v5.rb +139 -70
  5. data/lib/gandi_v5/billing/info/prepaid.rb +1 -0
  6. data/lib/gandi_v5/data.rb +3 -2
  7. data/lib/gandi_v5/data/converter.rb +3 -2
  8. data/lib/gandi_v5/data/converter/array_of.rb +3 -2
  9. data/lib/gandi_v5/data/converter/integer.rb +3 -2
  10. data/lib/gandi_v5/data/converter/symbol.rb +3 -2
  11. data/lib/gandi_v5/data/converter/time.rb +3 -2
  12. data/lib/gandi_v5/domain.rb +55 -18
  13. data/lib/gandi_v5/domain/availability/product/period.rb +1 -1
  14. data/lib/gandi_v5/domain/contact.rb +5 -5
  15. data/lib/gandi_v5/domain/tld.rb +2 -2
  16. data/lib/gandi_v5/domain/transfer_in.rb +172 -0
  17. data/lib/gandi_v5/domain/transfer_in/availability.rb +51 -0
  18. data/lib/gandi_v5/domain/web_forwarding.rb +182 -0
  19. data/lib/gandi_v5/email.rb +3 -0
  20. data/lib/gandi_v5/email/forward.rb +3 -9
  21. data/lib/gandi_v5/email/mailbox.rb +5 -11
  22. data/lib/gandi_v5/error/gandi_error.rb +1 -0
  23. data/lib/gandi_v5/live_dns.rb +2 -12
  24. data/lib/gandi_v5/live_dns/domain.rb +340 -29
  25. data/lib/gandi_v5/live_dns/domain/dnssec_key.rb +120 -0
  26. data/lib/gandi_v5/live_dns/domain/record.rb +81 -0
  27. data/lib/gandi_v5/live_dns/domain/snapshot.rb +111 -0
  28. data/lib/gandi_v5/live_dns/domain/tsig_key.rb +74 -0
  29. data/lib/gandi_v5/sharing_space.rb +27 -0
  30. data/lib/gandi_v5/simple_hosting.rb +13 -0
  31. data/lib/gandi_v5/simple_hosting/instance.rb +251 -0
  32. data/lib/gandi_v5/simple_hosting/instance/application.rb +45 -0
  33. data/lib/gandi_v5/simple_hosting/instance/database.rb +20 -0
  34. data/lib/gandi_v5/simple_hosting/instance/language.rb +22 -0
  35. data/lib/gandi_v5/simple_hosting/instance/upgrade.rb +22 -0
  36. data/lib/gandi_v5/simple_hosting/instance/virtual_host.rb +272 -0
  37. data/lib/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone.rb +75 -0
  38. data/lib/gandi_v5/template.rb +271 -0
  39. data/lib/gandi_v5/template/dispatch.rb +109 -0
  40. data/lib/gandi_v5/template/payload.rb +64 -0
  41. data/lib/gandi_v5/template/payload/dns_record.rb +23 -0
  42. data/lib/gandi_v5/template/payload/web_forwarding.rb +82 -0
  43. data/lib/gandi_v5/version.rb +1 -1
  44. data/spec/.rubocop.yml +9 -9
  45. data/spec/features/list_domain_renewals_spec.rb +16 -0
  46. data/spec/features/list_email_addresses_spec.rb +39 -0
  47. data/spec/fixtures/bodies/GandiV5_Domain_TransferIn/fetch.yml +21 -0
  48. data/spec/fixtures/bodies/GandiV5_Domain_TransferIn_Availability/fetch.yml +10 -0
  49. data/spec/fixtures/bodies/GandiV5_Domain_WebForwarding/fetch.yml +9 -0
  50. data/spec/fixtures/bodies/GandiV5_Domain_WebForwarding/list.yml +9 -0
  51. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/fetch.yml +1 -2
  52. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list_tsig.yml +3 -0
  53. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/nameservers.yml +3 -0
  54. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/fetch.yml +12 -0
  55. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/list.yml +9 -0
  56. data/spec/fixtures/bodies/{GandiV5_LiveDNS_Zone_Snapshot → GandiV5_LiveDNS_Domain_Snapshot}/fetch.yml +4 -3
  57. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/list.yml +5 -0
  58. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/fetch.yml +9 -0
  59. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/list.yml +4 -0
  60. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/fetch.yml +80 -0
  61. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/list.yml +38 -0
  62. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/fetch.yml +26 -0
  63. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/list.yml +18 -0
  64. data/spec/fixtures/bodies/GandiV5_Template/fetch.yml +41 -0
  65. data/spec/fixtures/bodies/GandiV5_Template/list.yml +20 -0
  66. data/spec/fixtures/bodies/GandiV5_Template_Dispatch/fetch.yml +49 -0
  67. data/spec/fixtures/vcr/Examples/List_domain_renewals.yml +54 -0
  68. data/spec/fixtures/vcr/Examples/List_email_addresses.yml +103 -0
  69. data/spec/spec_helper.rb +8 -7
  70. data/spec/units/gandi_v5/domain/transfer_in/availability_spec.rb +49 -0
  71. data/spec/units/gandi_v5/domain/transfer_in_spec.rb +143 -0
  72. data/spec/units/gandi_v5/domain/web_forwarding_spec.rb +150 -0
  73. data/spec/units/gandi_v5/domain_spec.rb +56 -37
  74. data/spec/units/gandi_v5/email/forward_spec.rb +5 -34
  75. data/spec/units/gandi_v5/email/mailbox_spec.rb +4 -34
  76. data/spec/units/gandi_v5/live_dns/domain/dnssec_key_spec.rb +128 -0
  77. data/spec/units/gandi_v5/live_dns/{record_set_spec.rb → domain/record_spec.rb} +1 -1
  78. data/spec/units/gandi_v5/live_dns/domain/snapshot_spec.rb +101 -0
  79. data/spec/units/gandi_v5/live_dns/domain/tsig_key_spec.rb +78 -0
  80. data/spec/units/gandi_v5/live_dns/domain_spec.rb +297 -118
  81. data/spec/units/gandi_v5/live_dns_spec.rb +0 -12
  82. data/spec/units/gandi_v5/simple_hosting/instance/application_spec.rb +37 -0
  83. data/spec/units/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone_spec.rb +50 -0
  84. data/spec/units/gandi_v5/simple_hosting/instance/virtual_host_spec.rb +324 -0
  85. data/spec/units/gandi_v5/simple_hosting/instance_spec.rb +190 -0
  86. data/spec/units/gandi_v5/simple_hosting_spec.rb +9 -0
  87. data/spec/units/gandi_v5/template/dispatch_spec.rb +70 -0
  88. data/spec/units/gandi_v5/template/payload/web_forwarding_spec.rb +44 -0
  89. data/spec/units/gandi_v5/template_spec.rb +341 -0
  90. data/spec/units/gandi_v5_spec.rb +111 -14
  91. metadata +226 -79
  92. data/.gitignore +0 -26
  93. data/.rspec +0 -3
  94. data/.rubocop.yml +0 -30
  95. data/.travis.yml +0 -38
  96. data/FUNDING.yml +0 -10
  97. data/Gemfile +0 -6
  98. data/Guardfile +0 -39
  99. data/Rakefile +0 -3
  100. data/bin/console +0 -13
  101. data/gandi_v5.gemspec +0 -42
  102. data/lib/gandi_v5/domain/sharing_space.rb +0 -29
  103. data/lib/gandi_v5/live_dns/has_zone_records.rb +0 -153
  104. data/lib/gandi_v5/live_dns/record_set.rb +0 -79
  105. data/lib/gandi_v5/live_dns/zone.rb +0 -160
  106. data/lib/gandi_v5/live_dns/zone/snapshot.rb +0 -81
  107. data/spec/features/domain_spec.rb +0 -45
  108. data/spec/features/livedns_domain_spec.rb +0 -8
  109. data/spec/features/livedns_zone_spec.rb +0 -44
  110. data/spec/features/mailbox_spec.rb +0 -18
  111. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/fetch.yml +0 -11
  112. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/list.yml +0 -11
  113. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/list.yml +0 -3
  114. data/spec/fixtures/vcr/Domain_features/List_domains.yml +0 -55
  115. data/spec/fixtures/vcr/Domain_features/Renew_domain.yml +0 -133
  116. data/spec/fixtures/vcr/LiveDNS_Domain_features/List_domains.yml +0 -32
  117. data/spec/fixtures/vcr/LiveDNS_Zone_features/List_zones.yml +0 -42
  118. data/spec/fixtures/vcr/LiveDNS_Zone_features/Make_and_save_snapshot.yml +0 -72
  119. data/spec/fixtures/vcr/LiveDNS_Zone_features/Save_zone_to_file.yml +0 -28
  120. data/spec/fixtures/vcr/Mailbox_features/List_mailboxes.yml +0 -39
  121. data/spec/units/gandi_v5/billing/info_spec.rb +0 -4
  122. data/spec/units/gandi_v5/domain/availability/product/period_spec.rb +0 -4
  123. data/spec/units/gandi_v5/domain/availability/product/price_spec.rb +0 -4
  124. data/spec/units/gandi_v5/domain/availability/product_spec.rb +0 -4
  125. data/spec/units/gandi_v5/domain/availability/tax_spec.rb +0 -4
  126. data/spec/units/gandi_v5/domain/contract_spec.rb +0 -4
  127. data/spec/units/gandi_v5/domain/dates_spec.rb +0 -4
  128. data/spec/units/gandi_v5/domain/restore_information_spec.rb +0 -4
  129. data/spec/units/gandi_v5/domain/sharing_space_spec.rb +0 -4
  130. data/spec/units/gandi_v5/error_spec.rb +0 -4
  131. data/spec/units/gandi_v5/live_dns/zone/snapshot_spec.rb +0 -66
  132. data/spec/units/gandi_v5/live_dns/zone_spec.rb +0 -347
@@ -57,8 +57,10 @@ describe GandiV5 do
57
57
  response_data = { 'hello' => 'world' }
58
58
  response = double RestClient::Response, body: response_data.to_json, headers: { content_type: 'application/json' }
59
59
  expect(described_class).to receive(:prepare_headers)
60
- expect(RestClient).to receive(method).with('url', hash_including(accept: 'application/json')).and_return(response)
61
- expect(described_class.send(method, 'url', accept: 'application/json')).to match_array [response, response_data]
60
+ expect(RestClient).to receive(method).with('url', hash_including(accept: 'application/json'))
61
+ .and_return(response)
62
+ expect(described_class.send(method, 'url', accept: 'application/json'))
63
+ .to match_array [response, response_data]
62
64
  end
63
65
 
64
66
  it 'As text' do
@@ -75,7 +77,7 @@ describe GandiV5 do
75
77
  end
76
78
 
77
79
  it 'Adds authentication header' do
78
- expect(RestClient).to receive(method).with(anything, hash_including(Authorization: 'Apikey abdce12345'))
80
+ expect(RestClient).to receive(method).with(anything, hash_including(authorization: 'Apikey abdce12345'))
79
81
  .and_return(response)
80
82
  expect(described_class).to receive(:parse_response)
81
83
  expect(described_class.send(method, 'https://api.gandi.net/v5/')).to match_array [response, nil]
@@ -146,7 +148,7 @@ describe GandiV5 do
146
148
  end
147
149
 
148
150
  it 'Adds authentication header' do
149
- expect(RestClient).to receive(method).with(any_args, hash_including(Authorization: 'Apikey abdce12345'))
151
+ expect(RestClient).to receive(method).with(any_args, hash_including(authorization: 'Apikey abdce12345'))
150
152
  .and_return(response)
151
153
  expect(described_class).to receive(:parse_response)
152
154
  expect(described_class.send(method, 'https://api.gandi.net/v5/', payload)).to match_array [response, nil]
@@ -168,20 +170,23 @@ describe GandiV5 do
168
170
  end
169
171
  end
170
172
 
171
- describe 'Generates correct authorisation header' do
172
- it 'When requesting from main V5 API' do
173
- expect(described_class.send(:authorisation_header, 'https://api.gandi.net/v5/example'))
174
- .to eq(Authorization: "Apikey #{api_key}")
173
+ describe 'Prepares headers' do
174
+ it 'Sets accept it not present' do
175
+ headers = {}
176
+ described_class.send(:prepare_headers, headers, GandiV5::BASE)
177
+ expect(headers[:accept]).to eq 'application/json'
175
178
  end
176
179
 
177
- it 'When requesting from main LiveDNS V5 API' do
178
- expect(described_class.send(:authorisation_header, 'https://dns.api.gandi.net/api/v5/example'))
179
- .to eq('X-Api-Key': api_key)
180
+ it 'Leaves accept alone if present' do
181
+ headers = { accept: 'leave/alone' }
182
+ described_class.send(:prepare_headers, headers, GandiV5::BASE)
183
+ expect(headers[:accept]).to eq 'leave/alone'
180
184
  end
181
185
 
182
- it 'Raises ArgumentError when requesting an unknown url' do
183
- expect { described_class.send(:authorisation_header, 'https://unknown.example.com') }
184
- .to raise_error ArgumentError, 'Don\'t know how to authorise for url: https://unknown.example.com'
186
+ it 'Sets authorization' do
187
+ headers = {}
188
+ described_class.send(:prepare_headers, headers, GandiV5::BASE)
189
+ expect(headers[:authorization]).to eq "Apikey #{api_key}"
185
190
  end
186
191
  end
187
192
 
@@ -238,4 +243,96 @@ describe GandiV5 do
238
243
  .to raise_error GandiV5::Error::GandiError, 'field: message'
239
244
  end
240
245
  end
246
+
247
+ describe '.paginated_get' do
248
+ let(:url) { "#{GandiV5::BASE}test/url" }
249
+ let(:do_nothing) { ->(_this_data) {} }
250
+
251
+ it 'Keeps fetching until getting a partial list' do
252
+ headers1 = { params: { 'page' => 1, 'per_page' => 2 } }
253
+ headers2 = { params: { 'page' => 2, 'per_page' => 2 } }
254
+ expect(GandiV5).to receive(:get).with(url, headers1)
255
+ .ordered
256
+ .and_return([nil, %i[a b]])
257
+ expect(GandiV5).to receive(:get).with(url, headers2)
258
+ .ordered
259
+ .and_return([nil, %i[c]])
260
+
261
+ described_class.paginated_get(url, (1..2), 2, &do_nothing)
262
+ end
263
+
264
+ it 'Keeps fetching until getting an empty list' do
265
+ headers1 = { params: { 'page' => 1, 'per_page' => 2 } }
266
+ headers2 = { params: { 'page' => 2, 'per_page' => 2 } }
267
+ expect(GandiV5).to receive(:get).with(url, headers1)
268
+ .ordered
269
+ .and_return([nil, %i[a b]])
270
+ expect(GandiV5).to receive(:get).with(url, headers2)
271
+ .ordered
272
+ .and_return([nil, []])
273
+
274
+ described_class.paginated_get(url, (1..2), 2, &do_nothing)
275
+ end
276
+
277
+ it 'Passes per_page option' do
278
+ headers = { params: { 'page' => 1, 'per_page' => 100 } }
279
+ expect(GandiV5).to receive(:get).with(url, headers)
280
+ .and_return([nil, []])
281
+ described_class.paginated_get(url, 1, 100, &do_nothing)
282
+ end
283
+
284
+ it 'Passes on other params' do
285
+ headers = { params: { 'page' => 1, 'per_page' => 100, 'custom' => 'value' } }
286
+ expect(GandiV5).to receive(:get).with(url, headers)
287
+ .and_return([nil, []])
288
+ described_class.paginated_get(url, 1, 100, params: { custom: 'value' }, &do_nothing)
289
+ end
290
+
291
+ it 'Passes on other headers' do
292
+ headers = { params: { 'page' => 1, 'per_page' => 100 }, custom: :value }
293
+ expect(GandiV5).to receive(:get).with(url, headers)
294
+ .and_return([nil, []])
295
+ described_class.paginated_get(url, 1, 100, custom: :value, &do_nothing)
296
+ end
297
+
298
+ describe 'Honors passed pages' do
299
+ it 'Has an each method' do
300
+ headers1 = { params: { 'page' => 1, 'per_page' => 2 } }
301
+ headers2 = { params: { 'page' => 2, 'per_page' => 2 } }
302
+ expect(GandiV5).to receive(:get).with(url, headers1)
303
+ .ordered
304
+ .and_return([nil, %i[a b]])
305
+ expect(GandiV5).to receive(:get).with(url, headers2)
306
+ .ordered
307
+ .and_return([nil, %i[c d]])
308
+
309
+ described_class.paginated_get(url, (1..2), 2, &do_nothing)
310
+ end
311
+
312
+ it 'Positive integer' do
313
+ headers = { params: { 'page' => 3, 'per_page' => 2 } }
314
+ expect(GandiV5).to receive(:get).with(url, headers)
315
+ .ordered
316
+ .and_return([nil, %i[a b c]])
317
+ described_class.paginated_get(url, 3, 2, &do_nothing)
318
+ end
319
+
320
+ it 'Nonpositive integer' do
321
+ expect { described_class.paginated_get(url, -3, 2, &do_nothing) }.to \
322
+ raise_error ArgumentError, 'page must be positive'
323
+ end
324
+ end
325
+
326
+ it 'Relies on caller to build their list' do
327
+ this_data = [:a]
328
+ expect(GandiV5).to receive(:get).and_return([nil, this_data])
329
+ expect { |b| described_class.paginated_get(url, 1, 100, &b) }.to yield_with_args(this_data)
330
+ end
331
+
332
+ it 'Requires a block' do
333
+ allow(GandiV5).to receive(:get).and_return([nil, [:a]])
334
+
335
+ expect { described_class.paginated_get(url) }.to raise_error LocalJumpError
336
+ end
337
+ end
241
338
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gandi_v5
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Gauld
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-25 00:00:00.000000000 Z
11
+ date: 2021-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -58,20 +58,6 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '2.1'
61
- - !ruby/object:Gem::Dependency
62
- name: coveralls
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '0.8'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '0.8'
75
61
  - !ruby/object:Gem::Dependency
76
62
  name: guard
77
63
  requirement: !ruby/object:Gem::Requirement
@@ -202,42 +188,84 @@ dependencies:
202
188
  requirements:
203
189
  - - "~>"
204
190
  - !ruby/object:Gem::Version
205
- version: '0.73'
191
+ version: '1.7'
206
192
  type: :development
207
193
  prerelease: false
208
194
  version_requirements: !ruby/object:Gem::Requirement
209
195
  requirements:
210
196
  - - "~>"
211
197
  - !ruby/object:Gem::Version
212
- version: '0.73'
198
+ version: '1.7'
213
199
  - !ruby/object:Gem::Dependency
214
200
  name: rubocop-performance
215
201
  requirement: !ruby/object:Gem::Requirement
216
202
  requirements:
217
203
  - - "~>"
218
204
  - !ruby/object:Gem::Version
219
- version: '1.1'
205
+ version: '1.7'
220
206
  type: :development
221
207
  prerelease: false
222
208
  version_requirements: !ruby/object:Gem::Requirement
223
209
  requirements:
224
210
  - - "~>"
225
211
  - !ruby/object:Gem::Version
226
- version: '1.1'
212
+ version: '1.7'
213
+ - !ruby/object:Gem::Dependency
214
+ name: rubocop-rake
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: 0.5.1
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - "~>"
225
+ - !ruby/object:Gem::Version
226
+ version: 0.5.1
227
+ - !ruby/object:Gem::Dependency
228
+ name: rubocop-rspec
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: '2.1'
234
+ type: :development
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - "~>"
239
+ - !ruby/object:Gem::Version
240
+ version: '2.1'
227
241
  - !ruby/object:Gem::Dependency
228
242
  name: simplecov
229
243
  requirement: !ruby/object:Gem::Requirement
230
244
  requirements:
231
245
  - - "~>"
232
246
  - !ruby/object:Gem::Version
233
- version: '0.7'
247
+ version: '0.18'
248
+ type: :development
249
+ prerelease: false
250
+ version_requirements: !ruby/object:Gem::Requirement
251
+ requirements:
252
+ - - "~>"
253
+ - !ruby/object:Gem::Version
254
+ version: '0.18'
255
+ - !ruby/object:Gem::Dependency
256
+ name: simplecov-lcov
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - "~>"
260
+ - !ruby/object:Gem::Version
261
+ version: '0.8'
234
262
  type: :development
235
263
  prerelease: false
236
264
  version_requirements: !ruby/object:Gem::Requirement
237
265
  requirements:
238
266
  - - "~>"
239
267
  - !ruby/object:Gem::Version
240
- version: '0.7'
268
+ version: '0.8'
241
269
  - !ruby/object:Gem::Dependency
242
270
  name: timecop
243
271
  requirement: !ruby/object:Gem::Requirement
@@ -280,27 +308,19 @@ dependencies:
280
308
  - - "~>"
281
309
  - !ruby/object:Gem::Version
282
310
  version: '3.6'
283
- description:
311
+ description:
284
312
  email:
285
- - robert@robertgauld.co.uk
286
- executables:
287
- - console
313
+ - robert@robertgauld.uk
314
+ executables: []
288
315
  extensions: []
289
- extra_rdoc_files: []
316
+ extra_rdoc_files:
317
+ - README.md
318
+ - CHANGELOG.md
319
+ - LICENSE.md
290
320
  files:
291
- - ".gitignore"
292
- - ".rspec"
293
- - ".rubocop.yml"
294
- - ".travis.yml"
295
321
  - CHANGELOG.md
296
- - FUNDING.yml
297
- - Gemfile
298
- - Guardfile
299
322
  - LICENSE.md
300
323
  - README.md
301
- - Rakefile
302
- - bin/console
303
- - gandi_v5.gemspec
304
324
  - lib/gandi_v5.rb
305
325
  - lib/gandi_v5/billing.rb
306
326
  - lib/gandi_v5/billing/info.rb
@@ -324,8 +344,10 @@ files:
324
344
  - lib/gandi_v5/domain/live_dns.rb
325
345
  - lib/gandi_v5/domain/renewal_information.rb
326
346
  - lib/gandi_v5/domain/restore_information.rb
327
- - lib/gandi_v5/domain/sharing_space.rb
328
347
  - lib/gandi_v5/domain/tld.rb
348
+ - lib/gandi_v5/domain/transfer_in.rb
349
+ - lib/gandi_v5/domain/transfer_in/availability.rb
350
+ - lib/gandi_v5/domain/web_forwarding.rb
329
351
  - lib/gandi_v5/email.rb
330
352
  - lib/gandi_v5/email/forward.rb
331
353
  - lib/gandi_v5/email/mailbox.rb
@@ -336,18 +358,30 @@ files:
336
358
  - lib/gandi_v5/error/gandi_error.rb
337
359
  - lib/gandi_v5/live_dns.rb
338
360
  - lib/gandi_v5/live_dns/domain.rb
339
- - lib/gandi_v5/live_dns/has_zone_records.rb
340
- - lib/gandi_v5/live_dns/record_set.rb
341
- - lib/gandi_v5/live_dns/zone.rb
342
- - lib/gandi_v5/live_dns/zone/snapshot.rb
361
+ - lib/gandi_v5/live_dns/domain/dnssec_key.rb
362
+ - lib/gandi_v5/live_dns/domain/record.rb
363
+ - lib/gandi_v5/live_dns/domain/snapshot.rb
364
+ - lib/gandi_v5/live_dns/domain/tsig_key.rb
343
365
  - lib/gandi_v5/organization.rb
344
366
  - lib/gandi_v5/organization/customer.rb
367
+ - lib/gandi_v5/sharing_space.rb
368
+ - lib/gandi_v5/simple_hosting.rb
369
+ - lib/gandi_v5/simple_hosting/instance.rb
370
+ - lib/gandi_v5/simple_hosting/instance/application.rb
371
+ - lib/gandi_v5/simple_hosting/instance/database.rb
372
+ - lib/gandi_v5/simple_hosting/instance/language.rb
373
+ - lib/gandi_v5/simple_hosting/instance/upgrade.rb
374
+ - lib/gandi_v5/simple_hosting/instance/virtual_host.rb
375
+ - lib/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone.rb
376
+ - lib/gandi_v5/template.rb
377
+ - lib/gandi_v5/template/dispatch.rb
378
+ - lib/gandi_v5/template/payload.rb
379
+ - lib/gandi_v5/template/payload/dns_record.rb
380
+ - lib/gandi_v5/template/payload/web_forwarding.rb
345
381
  - lib/gandi_v5/version.rb
346
382
  - spec/.rubocop.yml
347
- - spec/features/domain_spec.rb
348
- - spec/features/livedns_domain_spec.rb
349
- - spec/features/livedns_zone_spec.rb
350
- - spec/features/mailbox_spec.rb
383
+ - spec/features/list_domain_renewals_spec.rb
384
+ - spec/features/list_email_addresses_spec.rb
351
385
  - spec/fixtures/bodies/GandiV5_Billing/info.yml
352
386
  - spec/fixtures/bodies/GandiV5_Domain/fetch.yml
353
387
  - spec/fixtures/bodies/GandiV5_Domain/fetch_contacts.yml
@@ -360,6 +394,10 @@ files:
360
394
  - spec/fixtures/bodies/GandiV5_Domain_Availability/fetch.yml
361
395
  - spec/fixtures/bodies/GandiV5_Domain_TLD/fetch.yml
362
396
  - spec/fixtures/bodies/GandiV5_Domain_TLD/list.yml
397
+ - spec/fixtures/bodies/GandiV5_Domain_TransferIn/fetch.yml
398
+ - spec/fixtures/bodies/GandiV5_Domain_TransferIn_Availability/fetch.yml
399
+ - spec/fixtures/bodies/GandiV5_Domain_WebForwarding/fetch.yml
400
+ - spec/fixtures/bodies/GandiV5_Domain_WebForwarding/list.yml
363
401
  - spec/fixtures/bodies/GandiV5_Email_Forward/list.yml
364
402
  - spec/fixtures/bodies/GandiV5_Email_Mailbox/fetch.yml
365
403
  - spec/fixtures/bodies/GandiV5_Email_Mailbox/list.yml
@@ -367,24 +405,29 @@ files:
367
405
  - spec/fixtures/bodies/GandiV5_Email_Slot/list.yml
368
406
  - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/fetch.yml
369
407
  - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list.yml
370
- - spec/fixtures/bodies/GandiV5_LiveDNS_Zone/fetch.yml
371
- - spec/fixtures/bodies/GandiV5_LiveDNS_Zone/list.yml
372
- - spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/fetch.yml
373
- - spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/list.yml
408
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list_tsig.yml
409
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/nameservers.yml
410
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/fetch.yml
411
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/list.yml
412
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/fetch.yml
413
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/list.yml
414
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/fetch.yml
415
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/list.yml
374
416
  - spec/fixtures/bodies/GandiV5_Organization/fetch.yml
375
417
  - spec/fixtures/bodies/GandiV5_Organization/list.yml
376
418
  - spec/fixtures/bodies/GandiV5_Organization_Customer/list.yml
377
- - spec/fixtures/vcr/Domain_features/List_domains.yml
378
- - spec/fixtures/vcr/Domain_features/Renew_domain.yml
379
- - spec/fixtures/vcr/LiveDNS_Domain_features/List_domains.yml
380
- - spec/fixtures/vcr/LiveDNS_Zone_features/List_zones.yml
381
- - spec/fixtures/vcr/LiveDNS_Zone_features/Make_and_save_snapshot.yml
382
- - spec/fixtures/vcr/LiveDNS_Zone_features/Save_zone_to_file.yml
383
- - spec/fixtures/vcr/Mailbox_features/List_mailboxes.yml
419
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/fetch.yml
420
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/list.yml
421
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/fetch.yml
422
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/list.yml
423
+ - spec/fixtures/bodies/GandiV5_Template/fetch.yml
424
+ - spec/fixtures/bodies/GandiV5_Template/list.yml
425
+ - spec/fixtures/bodies/GandiV5_Template_Dispatch/fetch.yml
426
+ - spec/fixtures/vcr/Examples/List_domain_renewals.yml
427
+ - spec/fixtures/vcr/Examples/List_email_addresses.yml
384
428
  - spec/spec_helper.rb
385
429
  - spec/test.env
386
430
  - spec/units/gandi_v5/billing/info/prepaid_spec.rb
387
- - spec/units/gandi_v5/billing/info_spec.rb
388
431
  - spec/units/gandi_v5/billing_spec.rb
389
432
  - spec/units/gandi_v5/data/converter/array_of_spec.rb
390
433
  - spec/units/gandi_v5/data/converter/integer_spec.rb
@@ -393,19 +436,14 @@ files:
393
436
  - spec/units/gandi_v5/data/converter_spec.rb
394
437
  - spec/units/gandi_v5/data_spec.rb
395
438
  - spec/units/gandi_v5/domain/auto_renew_spec.rb
396
- - spec/units/gandi_v5/domain/availability/product/period_spec.rb
397
- - spec/units/gandi_v5/domain/availability/product/price_spec.rb
398
- - spec/units/gandi_v5/domain/availability/product_spec.rb
399
- - spec/units/gandi_v5/domain/availability/tax_spec.rb
400
439
  - spec/units/gandi_v5/domain/availability_spec.rb
401
440
  - spec/units/gandi_v5/domain/contact_spec.rb
402
- - spec/units/gandi_v5/domain/contract_spec.rb
403
- - spec/units/gandi_v5/domain/dates_spec.rb
404
441
  - spec/units/gandi_v5/domain/live_dns_spec.rb
405
442
  - spec/units/gandi_v5/domain/renewal_information_spec.rb
406
- - spec/units/gandi_v5/domain/restore_information_spec.rb
407
- - spec/units/gandi_v5/domain/sharing_space_spec.rb
408
443
  - spec/units/gandi_v5/domain/tld_spec.rb
444
+ - spec/units/gandi_v5/domain/transfer_in/availability_spec.rb
445
+ - spec/units/gandi_v5/domain/transfer_in_spec.rb
446
+ - spec/units/gandi_v5/domain/web_forwarding_spec.rb
409
447
  - spec/units/gandi_v5/domain_spec.rb
410
448
  - spec/units/gandi_v5/email/forward_spec.rb
411
449
  - spec/units/gandi_v5/email/mailbox/responder_spec.rb
@@ -413,21 +451,41 @@ files:
413
451
  - spec/units/gandi_v5/email/offer_spec.rb
414
452
  - spec/units/gandi_v5/email/slot_spec.rb
415
453
  - spec/units/gandi_v5/error/gandi_error_spec.rb
416
- - spec/units/gandi_v5/error_spec.rb
454
+ - spec/units/gandi_v5/live_dns/domain/dnssec_key_spec.rb
455
+ - spec/units/gandi_v5/live_dns/domain/record_spec.rb
456
+ - spec/units/gandi_v5/live_dns/domain/snapshot_spec.rb
457
+ - spec/units/gandi_v5/live_dns/domain/tsig_key_spec.rb
417
458
  - spec/units/gandi_v5/live_dns/domain_spec.rb
418
- - spec/units/gandi_v5/live_dns/record_set_spec.rb
419
- - spec/units/gandi_v5/live_dns/zone/snapshot_spec.rb
420
- - spec/units/gandi_v5/live_dns/zone_spec.rb
421
459
  - spec/units/gandi_v5/live_dns_spec.rb
422
460
  - spec/units/gandi_v5/organization/customer_spec.rb
423
461
  - spec/units/gandi_v5/organization_spec.rb
462
+ - spec/units/gandi_v5/simple_hosting/instance/application_spec.rb
463
+ - spec/units/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone_spec.rb
464
+ - spec/units/gandi_v5/simple_hosting/instance/virtual_host_spec.rb
465
+ - spec/units/gandi_v5/simple_hosting/instance_spec.rb
466
+ - spec/units/gandi_v5/simple_hosting_spec.rb
467
+ - spec/units/gandi_v5/template/dispatch_spec.rb
468
+ - spec/units/gandi_v5/template/payload/web_forwarding_spec.rb
469
+ - spec/units/gandi_v5/template_spec.rb
424
470
  - spec/units/gandi_v5_spec.rb
425
471
  homepage: https://github.com/robertgauld/gandi_v5
426
472
  licenses:
427
- - BSD 3 clause
428
- metadata: {}
429
- post_install_message:
430
- rdoc_options: []
473
+ - BSD-3-Clause
474
+ metadata:
475
+ bug_tracker_uri: https://github.com/robertgauld/gandi_v5/issues
476
+ changelog_uri: https://github.com/robertgauld/gandi_v5/blob/main/CHANGELOG.md
477
+ documentation_uri: https://rubydoc.info/github/robertgauld/gandi_v5/main
478
+ homepage_uri: https://github.com/robertgauld/gandi_v5
479
+ source_code_uri: https://github.com/robertgauld/gandi_v5
480
+ post_install_message:
481
+ rdoc_options:
482
+ - "--title"
483
+ - gandi_v5 - Make use of Gandi's V5 API.
484
+ - "--main"
485
+ - README.md
486
+ - "--line-numbers"
487
+ - "--inline-source"
488
+ - "--quiet"
431
489
  require_paths:
432
490
  - lib
433
491
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -441,8 +499,97 @@ required_rubygems_version: !ruby/object:Gem::Requirement
441
499
  - !ruby/object:Gem::Version
442
500
  version: 2.6.14
443
501
  requirements: []
444
- rubygems_version: 3.1.2
445
- signing_key:
502
+ rubygems_version: 3.2.3
503
+ signing_key:
446
504
  specification_version: 4
447
505
  summary: Make use of Gandi's V5 API.
448
- test_files: []
506
+ test_files:
507
+ - spec/.rubocop.yml
508
+ - spec/features/list_domain_renewals_spec.rb
509
+ - spec/features/list_email_addresses_spec.rb
510
+ - spec/fixtures/bodies/GandiV5_Billing/info.yml
511
+ - spec/fixtures/bodies/GandiV5_Domain/fetch.yml
512
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_contacts.yml
513
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_glue_records.yml
514
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_livedns.yml
515
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_name_servers.yml
516
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_renewal_info.yml
517
+ - spec/fixtures/bodies/GandiV5_Domain/fetch_restore_info.yml
518
+ - spec/fixtures/bodies/GandiV5_Domain/list.yml
519
+ - spec/fixtures/bodies/GandiV5_Domain_Availability/fetch.yml
520
+ - spec/fixtures/bodies/GandiV5_Domain_TLD/fetch.yml
521
+ - spec/fixtures/bodies/GandiV5_Domain_TLD/list.yml
522
+ - spec/fixtures/bodies/GandiV5_Domain_TransferIn/fetch.yml
523
+ - spec/fixtures/bodies/GandiV5_Domain_TransferIn_Availability/fetch.yml
524
+ - spec/fixtures/bodies/GandiV5_Domain_WebForwarding/fetch.yml
525
+ - spec/fixtures/bodies/GandiV5_Domain_WebForwarding/list.yml
526
+ - spec/fixtures/bodies/GandiV5_Email_Forward/list.yml
527
+ - spec/fixtures/bodies/GandiV5_Email_Mailbox/fetch.yml
528
+ - spec/fixtures/bodies/GandiV5_Email_Mailbox/list.yml
529
+ - spec/fixtures/bodies/GandiV5_Email_Slot/fetch.yml
530
+ - spec/fixtures/bodies/GandiV5_Email_Slot/list.yml
531
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/fetch.yml
532
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list.yml
533
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list_tsig.yml
534
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain/nameservers.yml
535
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/fetch.yml
536
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/list.yml
537
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/fetch.yml
538
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/list.yml
539
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/fetch.yml
540
+ - spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/list.yml
541
+ - spec/fixtures/bodies/GandiV5_Organization/fetch.yml
542
+ - spec/fixtures/bodies/GandiV5_Organization/list.yml
543
+ - spec/fixtures/bodies/GandiV5_Organization_Customer/list.yml
544
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/fetch.yml
545
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/list.yml
546
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/fetch.yml
547
+ - spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/list.yml
548
+ - spec/fixtures/bodies/GandiV5_Template/fetch.yml
549
+ - spec/fixtures/bodies/GandiV5_Template/list.yml
550
+ - spec/fixtures/bodies/GandiV5_Template_Dispatch/fetch.yml
551
+ - spec/fixtures/vcr/Examples/List_domain_renewals.yml
552
+ - spec/fixtures/vcr/Examples/List_email_addresses.yml
553
+ - spec/spec_helper.rb
554
+ - spec/test.env
555
+ - spec/units/gandi_v5/billing/info/prepaid_spec.rb
556
+ - spec/units/gandi_v5/billing_spec.rb
557
+ - spec/units/gandi_v5/data/converter/array_of_spec.rb
558
+ - spec/units/gandi_v5/data/converter/integer_spec.rb
559
+ - spec/units/gandi_v5/data/converter/symbol_spec.rb
560
+ - spec/units/gandi_v5/data/converter/time_spec.rb
561
+ - spec/units/gandi_v5/data/converter_spec.rb
562
+ - spec/units/gandi_v5/data_spec.rb
563
+ - spec/units/gandi_v5/domain/auto_renew_spec.rb
564
+ - spec/units/gandi_v5/domain/availability_spec.rb
565
+ - spec/units/gandi_v5/domain/contact_spec.rb
566
+ - spec/units/gandi_v5/domain/live_dns_spec.rb
567
+ - spec/units/gandi_v5/domain/renewal_information_spec.rb
568
+ - spec/units/gandi_v5/domain/tld_spec.rb
569
+ - spec/units/gandi_v5/domain/transfer_in/availability_spec.rb
570
+ - spec/units/gandi_v5/domain/transfer_in_spec.rb
571
+ - spec/units/gandi_v5/domain/web_forwarding_spec.rb
572
+ - spec/units/gandi_v5/domain_spec.rb
573
+ - spec/units/gandi_v5/email/forward_spec.rb
574
+ - spec/units/gandi_v5/email/mailbox/responder_spec.rb
575
+ - spec/units/gandi_v5/email/mailbox_spec.rb
576
+ - spec/units/gandi_v5/email/offer_spec.rb
577
+ - spec/units/gandi_v5/email/slot_spec.rb
578
+ - spec/units/gandi_v5/error/gandi_error_spec.rb
579
+ - spec/units/gandi_v5/live_dns/domain/dnssec_key_spec.rb
580
+ - spec/units/gandi_v5/live_dns/domain/record_spec.rb
581
+ - spec/units/gandi_v5/live_dns/domain/snapshot_spec.rb
582
+ - spec/units/gandi_v5/live_dns/domain/tsig_key_spec.rb
583
+ - spec/units/gandi_v5/live_dns/domain_spec.rb
584
+ - spec/units/gandi_v5/live_dns_spec.rb
585
+ - spec/units/gandi_v5/organization/customer_spec.rb
586
+ - spec/units/gandi_v5/organization_spec.rb
587
+ - spec/units/gandi_v5/simple_hosting/instance/application_spec.rb
588
+ - spec/units/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone_spec.rb
589
+ - spec/units/gandi_v5/simple_hosting/instance/virtual_host_spec.rb
590
+ - spec/units/gandi_v5/simple_hosting/instance_spec.rb
591
+ - spec/units/gandi_v5/simple_hosting_spec.rb
592
+ - spec/units/gandi_v5/template/dispatch_spec.rb
593
+ - spec/units/gandi_v5/template/payload/web_forwarding_spec.rb
594
+ - spec/units/gandi_v5/template_spec.rb
595
+ - spec/units/gandi_v5_spec.rb