gandi_v5 0.1.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +14 -4
- data/.travis.yml +16 -1
- data/CHANGELOG.md +80 -2
- data/FUNDING.yml +10 -0
- data/Guardfile +5 -6
- data/LICENSE.md +2 -6
- data/README.md +17 -23
- data/gandi_v5.gemspec +4 -3
- data/lib/gandi_v5.rb +54 -15
- data/lib/gandi_v5/billing.rb +2 -4
- data/lib/gandi_v5/billing/info.rb +0 -2
- data/lib/gandi_v5/data.rb +1 -2
- data/lib/gandi_v5/data/converter.rb +0 -4
- data/lib/gandi_v5/data/converter/integer.rb +26 -0
- data/lib/gandi_v5/domain.rb +201 -101
- data/lib/gandi_v5/domain/auto_renew.rb +4 -4
- data/lib/gandi_v5/domain/availability.rb +46 -0
- data/lib/gandi_v5/domain/availability/product.rb +49 -0
- data/lib/gandi_v5/domain/availability/product/period.rb +24 -0
- data/lib/gandi_v5/domain/availability/product/price.rb +36 -0
- data/lib/gandi_v5/domain/availability/tax.rb +20 -0
- data/lib/gandi_v5/domain/live_dns.rb +42 -0
- data/lib/gandi_v5/domain/renewal_information.rb +0 -3
- data/lib/gandi_v5/domain/sharing_space.rb +10 -2
- data/lib/gandi_v5/domain/tld.rb +57 -0
- data/lib/gandi_v5/email.rb +0 -4
- data/lib/gandi_v5/email/forward.rb +108 -0
- data/lib/gandi_v5/email/mailbox.rb +85 -24
- data/lib/gandi_v5/email/mailbox/responder.rb +43 -2
- data/lib/gandi_v5/email/offer.rb +2 -2
- data/lib/gandi_v5/email/slot.rb +52 -18
- data/lib/gandi_v5/error.rb +0 -2
- data/lib/gandi_v5/error/gandi_error.rb +2 -2
- data/lib/gandi_v5/live_dns.rb +20 -4
- data/lib/gandi_v5/live_dns/domain.rb +21 -150
- data/lib/gandi_v5/live_dns/has_zone_records.rb +153 -0
- data/lib/gandi_v5/live_dns/record_set.rb +1 -1
- data/lib/gandi_v5/live_dns/zone.rb +24 -165
- data/lib/gandi_v5/live_dns/zone/snapshot.rb +27 -8
- data/lib/gandi_v5/organization.rb +39 -6
- data/lib/gandi_v5/organization/customer.rb +90 -0
- data/lib/gandi_v5/version.rb +1 -1
- data/spec/.rubocop.yml +9 -2
- data/spec/features/domain_spec.rb +2 -2
- data/spec/features/livedns_zone_spec.rb +12 -13
- data/spec/fixtures/bodies/GandiV5_Billing/{info.yaml → info.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Domain/{get.yaml → fetch.yml} +8 -0
- data/spec/fixtures/bodies/GandiV5_Domain/{fetch_contacts.yaml → fetch_contacts.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Domain/fetch_glue_records.yml +7 -0
- data/spec/fixtures/bodies/GandiV5_Domain/fetch_livedns.yml +6 -0
- data/spec/fixtures/bodies/GandiV5_Domain/fetch_name_servers.yml +2 -0
- data/spec/fixtures/bodies/GandiV5_Domain/{renewal_info.yaml → fetch_renewal_info.yml} +0 -3
- data/spec/fixtures/bodies/GandiV5_Domain/{restore_info.yaml → fetch_restore_info.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Domain/{list.yaml → list.yml} +1 -0
- data/spec/fixtures/bodies/{GandiV5_Domain/availability.yaml → GandiV5_Domain_Availability/fetch.yml} +0 -0
- data/spec/fixtures/bodies/{GandiV5_Domain/tld.yaml → GandiV5_Domain_TLD/fetch.yml} +0 -0
- data/spec/fixtures/bodies/{GandiV5_Domain/tlds.yaml → GandiV5_Domain_TLD/list.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Email_Forward/list.yml +6 -0
- data/spec/fixtures/bodies/GandiV5_Email_Mailbox/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Email_Mailbox/{list.yaml → list.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Email_Slot/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Email_Slot/{list.yaml → list.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/{list.yaml → list.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/{list.yaml → list.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/list.yml +3 -0
- data/spec/fixtures/bodies/GandiV5_Organization/{get.yaml → fetch.yml} +0 -0
- data/spec/fixtures/bodies/GandiV5_Organization/list.yml +7 -0
- data/spec/fixtures/bodies/GandiV5_Organization_Customer/list.yml +8 -0
- data/spec/fixtures/vcr/Domain_features/List_domains.yml +2 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/units/gandi_v5/billing_spec.rb +4 -4
- data/spec/units/gandi_v5/data/converter/integer_spec.rb +16 -0
- data/spec/units/gandi_v5/domain/auto_renew_spec.rb +5 -5
- data/spec/units/gandi_v5/domain/availability/product/period_spec.rb +4 -0
- data/spec/units/gandi_v5/domain/availability/product/price_spec.rb +4 -0
- data/spec/units/gandi_v5/domain/availability/product_spec.rb +4 -0
- data/spec/units/gandi_v5/domain/availability/tax_spec.rb +4 -0
- data/spec/units/gandi_v5/domain/availability_spec.rb +43 -0
- data/spec/units/gandi_v5/domain/live_dns_spec.rb +45 -0
- data/spec/units/gandi_v5/domain/tld_spec.rb +29 -0
- data/spec/units/gandi_v5/domain_spec.rb +359 -91
- data/spec/units/gandi_v5/email/forward_spec.rb +121 -0
- data/spec/units/gandi_v5/email/mailbox/responder_spec.rb +52 -0
- data/spec/units/gandi_v5/email/mailbox_spec.rb +174 -33
- data/spec/units/gandi_v5/email/offer_spec.rb +1 -1
- data/spec/units/gandi_v5/email/slot_spec.rb +113 -17
- data/spec/units/gandi_v5/live_dns/domain_spec.rb +73 -43
- data/spec/units/gandi_v5/live_dns/zone/snapshot_spec.rb +32 -3
- data/spec/units/gandi_v5/live_dns/zone_spec.rb +70 -52
- data/spec/units/gandi_v5/live_dns_spec.rb +24 -0
- data/spec/units/gandi_v5/organization/customer_spec.rb +81 -0
- data/spec/units/gandi_v5/organization_spec.rb +52 -1
- data/spec/units/gandi_v5_spec.rb +56 -19
- metadata +71 -29
- data/TODO.md +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 023623b5d81a2f3acc4a5fee812f0e8ca24dd8735f59a0f12b53ad35ddb7a397
|
4
|
+
data.tar.gz: 3cf89099c45295da9b06a53ad64b601b3a77525a13ddade403d600c382be02d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e816b9de44330c832f6591ca6724b44f5b05c6fab53d8fda6d13a9820211292f29ee608953d8a562da97f4bcfee38f24f799b4a68184bba2b0ec751d21b3f61
|
7
|
+
data.tar.gz: 622bded49d8bae3129ad74fae6fcaf1e8d7c3639b40348b7537e0ba46a3d5c668d2a134754dcf1ff31bcffe3cf0797f5c4368cbc849c386b4648f850d9e24117
|
data/.gitignore
CHANGED
@@ -5,6 +5,7 @@ Gemfile.lock
|
|
5
5
|
# And because this is Ruby, ignore the following
|
6
6
|
# (source: https://github.com/github/gitignore/blob/master/Ruby.gitignore):
|
7
7
|
|
8
|
+
.ruby-version
|
8
9
|
notes.txt
|
9
10
|
todo.txt
|
10
11
|
*.gem
|
@@ -16,6 +17,7 @@ InstalledFiles
|
|
16
17
|
lib/bundler/man
|
17
18
|
pkg
|
18
19
|
rdoc
|
20
|
+
doc
|
19
21
|
spec/reports
|
20
22
|
test/tmp
|
21
23
|
test/version_tmp
|
data/.rubocop.yml
CHANGED
@@ -5,16 +5,26 @@ AllCops:
|
|
5
5
|
Gemspec/RequiredRubyVersion:
|
6
6
|
Enabled: false
|
7
7
|
Metrics/AbcSize:
|
8
|
-
Max:
|
8
|
+
Max: 20
|
9
9
|
Metrics/ClassLength:
|
10
|
-
Max:
|
11
|
-
Metrics/
|
12
|
-
Max:
|
10
|
+
Max: 250
|
11
|
+
Metrics/CyclomaticComplexity:
|
12
|
+
Max: 8
|
13
13
|
Metrics/MethodLength:
|
14
14
|
Max: 15
|
15
15
|
Metrics/ModuleLength:
|
16
16
|
Max: 200
|
17
|
+
Metrics/ParameterLists:
|
18
|
+
Max: 6
|
17
19
|
Style/DocumentationMethod:
|
18
20
|
Enabled: true
|
21
|
+
Style/HashEachMethods:
|
22
|
+
Enabled: true
|
23
|
+
Style/HashTransformKeys:
|
24
|
+
Enabled: true
|
25
|
+
Style/HashTransformValues:
|
26
|
+
Enabled: true
|
19
27
|
Style/SignalException:
|
20
28
|
Enabled: false
|
29
|
+
Layout/LineLength:
|
30
|
+
Max: 100
|
data/.travis.yml
CHANGED
@@ -3,6 +3,13 @@ rvm:
|
|
3
3
|
- 2.6.0
|
4
4
|
- 2.6.1
|
5
5
|
- 2.6.2
|
6
|
+
- 2.6.3
|
7
|
+
- 2.6.4
|
8
|
+
- 2.6.5
|
9
|
+
- 2.6.6
|
10
|
+
- 2.7.0
|
11
|
+
- 2.7.1
|
12
|
+
- truffleruby-20.1.0
|
6
13
|
gemfile:
|
7
14
|
- Gemfile
|
8
15
|
branches:
|
@@ -11,10 +18,18 @@ branches:
|
|
11
18
|
- staging
|
12
19
|
- /gh(?:\d)+(?:-.+)?/
|
13
20
|
- /dev_ver_\d+\.\d+/
|
21
|
+
env:
|
22
|
+
global:
|
23
|
+
# CC_TEST_REPORTER_ID for reporting test coverage to code climate
|
24
|
+
- secure: "C3AcK+/2A4h2+ZayJXc89EQp76o8/2RL03PdtVjWPI6cfBSwN174ImWSdIcs6+Bjv8GH+bADsM4epkTjI7H24wh80If/4jAZJMB6LsAxVC3rZVx2UfDghp1Lwcy6BkNx4VVXMQJUR4rA8fXNd1l6n2a72RbPhTaGYxggw+yiKYNjj5m/u3HWPzTQ9wIx/rLzb2shQU1P9tDX4eRqJixYsd8LvStvXewUKlTQSaxNczzfcSOmeJrrytJGuPQxgBx67hlN40cs84oEbhndjlekZRwYepsRcan9umJEDHnE+k0wLlz/vb2cshYp5tdcfkqspaEhUSV7Vr7ZQNIppI3XyY1hs/pTYc2Vytp3OiY0EXBjKRmiHcnmA8EIkrV9i4OSt6Af3EQJaYU56a0BCaEqzRoQJWOZDS8bVowuO4rY8/xINQBwTojIYAplI/vqX/7xvlRbzIgeWdpvQipPC01d2JtmI/5D1FdGWtzYcDCTRTbHyWmjhr7Jt8qEDMFkbpkcAQiS61baEQ0p4CxaLYm/lpPco1U3e/gMOb/EXDhOrF1I8lSBmVJE/Uz2/3kfOa1DQSxDSRmV1nU3pSd7PUi25Pdx0rezJjRl1UC2gnsNZrCLbplk+VkImXTt3iirV/RuHDo+YVT0efaws7TVH7Uf87jqWf4VZEw/KI3tzfF43CE="
|
14
25
|
before_install: gem update bundler
|
26
|
+
before_script:
|
27
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter && chmod +x ./cc-test-reporter && ./cc-test-reporter before-build
|
15
28
|
script:
|
16
|
-
- bundle exec rubocop
|
29
|
+
- if [[ $(echo $TRAVIS_JOB_NUMBER | awk -F . '{ print $2 }') == '1' ]]; then bundle exec rubocop; fi
|
17
30
|
- bundle exec rspec
|
31
|
+
after_script:
|
32
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
18
33
|
notifications:
|
19
34
|
slack:
|
20
35
|
on_success: always
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,81 @@
|
|
1
|
-
|
1
|
+
# Gandi V5 API Gem Changelog
|
2
2
|
|
3
|
-
|
3
|
+
## Version 0.6.0
|
4
|
+
|
5
|
+
* GandiV5::Email::Slot.create now supports sharing_id
|
6
|
+
* GandiV5::Email::Slot.create's type argument is now named not positional
|
7
|
+
* Add reseller information to GandiV5::Domain
|
8
|
+
|
9
|
+
## Version 0.5.0
|
10
|
+
|
11
|
+
* Add support for truffleruby 20.1.0
|
12
|
+
* Fix issue with rails in production
|
13
|
+
|
14
|
+
## Version 0.4.0
|
15
|
+
|
16
|
+
* Fix exception when delete returns no content-type
|
17
|
+
* Add support for ruby 2.7.0
|
18
|
+
* Add up/downgrading mailbox offer
|
19
|
+
* Add dry run option to creating a mailbox
|
20
|
+
* Add sharing_id & dry run option for renewing domain
|
21
|
+
* Add listing customers under a reseller organization (GandiV5::Organization::Customer.list and GandiV5::Organization#customers)
|
22
|
+
* Add creating customer under a reseller organization (GandiV5::Organization::Customer.create and GandiV5::Organization#create_customer)
|
23
|
+
|
24
|
+
## Version 0.3.0
|
25
|
+
|
26
|
+
* Additions to GandiV5::Domain
|
27
|
+
* Glue record management
|
28
|
+
* LiveDNS management
|
29
|
+
* Name server management
|
30
|
+
* Update GandiV5::Domain.create to allow purchasing as a reseller and billing to a different organization
|
31
|
+
* Add forwarding address management to GandiV5::Email::Forwarding
|
32
|
+
* Add GandiV5::Organization.list
|
33
|
+
* Uses Zeitwerk for auto loading
|
34
|
+
* Add aliasing methods:
|
35
|
+
* GandiV5::Domain.mailboxes -> GandiV5::Email::Mailbox.list
|
36
|
+
* GandiV5::Domain.mailbox_slots -> GandiV5::Email::Slot.list
|
37
|
+
* GandiV5::Domain.email_forwards -> GandiV5::Email::Forward.list
|
38
|
+
|
39
|
+
## Version 0.2.0
|
40
|
+
|
41
|
+
* Enhancements to GandiV5::Domain
|
42
|
+
* .availability(fqdn, **options) moved to GandiV5::Domain::Availability.fetch(fqdn, **options)
|
43
|
+
* .create now returns created domain (except in dry-run mode)
|
44
|
+
* .tlds moved to GandiV5::Domain::TLD.list
|
45
|
+
* .tld(name) moved to GandiV5::Domain::TLD.fetch(name)
|
46
|
+
* #renewal_price(currency: 'GBP', period: 1) added
|
47
|
+
* Enhancements to GandiV5::Email::Mailbox
|
48
|
+
* .create now returns created mailbox
|
49
|
+
* .create now checks for available slots and a valid type has been passed
|
50
|
+
* Enhancements to GandiV5::Email::Mailbox::Responder
|
51
|
+
* Add #enable(message:, ends_at:, starts_at: Time.now) to enable the auto responder in Gandi
|
52
|
+
* Add #disable to disable the auto responder in Gandi
|
53
|
+
* Enhancements to GandiV5::Email::Slot
|
54
|
+
* .create now returns created slot
|
55
|
+
* #delete now checks for inactiveness and refundableness
|
56
|
+
* Enhancements to GandiV5::LiveDNS::Domain
|
57
|
+
* Add #zone and #fetch_zone
|
58
|
+
* Remove #replace_*_records_for methods
|
59
|
+
* Changes to #replace_records_for to allow calling with name, type, ttl and values. When calling with name and fecords records MUST be passed as an array.
|
60
|
+
* Enhancements to GandiV5::LiveDNS::Zone
|
61
|
+
* .create now returns created zone
|
62
|
+
* Remove #replace_*_records_for methods
|
63
|
+
* Changes to #replace_records_for to allow calling with name, type, ttl and values. When calling with name and fecords records MUST be passed as an array.
|
64
|
+
* Enhancements to GandiV5::LiveDNS::Zone::Snapshot
|
65
|
+
* Add .list
|
66
|
+
* Add .fetch
|
67
|
+
* Add #zone and #fetch_zone
|
68
|
+
* Add support for ruby 2.6.3
|
69
|
+
* Add aliasing methods:
|
70
|
+
* GandiV5.domains -> GandiV5::Domain.list
|
71
|
+
* GandiV5.domain -> GandiV5::Domain.fetch
|
72
|
+
* GandiV5.mailboxes -> GandiV5::Email::Mailbox.list
|
73
|
+
* GandiV5.mailbox_slots -> GandiV5::Email::Slot.list
|
74
|
+
* GandiV5::LiveDNS.domains -> GandiV5::LiveDNS::Domain.list
|
75
|
+
* GandiV5::LiveDNS.domain -> GandiV5::LiveDNS::Domain.fetch
|
76
|
+
* GandiV5::LiveDNS.zones -> GandiV5::LiveDNS::Zone.list
|
77
|
+
* GandiV5::LiveDNS.zone -> GandiV5::LiveDNS::Zone.fetch
|
78
|
+
|
79
|
+
## Version 0.1.0
|
80
|
+
|
81
|
+
* Initial release.
|
data/FUNDING.yml
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
2
|
+
patreon: robertgauld
|
3
|
+
open_collective: # Replace with a single Open Collective username
|
4
|
+
ko_fi: # Replace with a single Ko-fi username
|
5
|
+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
6
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
7
|
+
liberapay: # Replace with a single Liberapay username
|
8
|
+
issuehunt: # Replace with a single IssueHunt username
|
9
|
+
otechie: # Replace with a single Otechie username
|
10
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
data/Guardfile
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
guard :bundler do
|
4
|
-
watch(/^Gemfile(?:\.lock)
|
5
|
-
watch(/^.+\.gemspec
|
4
|
+
watch(/^Gemfile(?:\.lock)$/)
|
5
|
+
watch(/^.+\.gemspec$/)
|
6
6
|
end
|
7
7
|
|
8
8
|
# rubocop:disable Metrics/BlockLength
|
9
9
|
group :red_green_refactor, halt_on_fail: true do
|
10
10
|
group :rspec do
|
11
11
|
guard(
|
12
|
-
|
12
|
+
:rspec,
|
13
13
|
all_on_start: true,
|
14
14
|
all_after_pass: false,
|
15
15
|
notification: :failed,
|
@@ -24,12 +24,11 @@ group :red_green_refactor, halt_on_fail: true do
|
|
24
24
|
|
25
25
|
group :rubocop do
|
26
26
|
guard(
|
27
|
-
|
27
|
+
:rubocop,
|
28
28
|
all_on_start: true,
|
29
29
|
all_after_pass: false,
|
30
30
|
notification: :failed,
|
31
|
-
keep_failed: false
|
32
|
-
cmd: 'bundle exec rubocop'
|
31
|
+
keep_failed: false
|
33
32
|
) do
|
34
33
|
watch(%r{^lib/(.+)\.rb$}) { |m| [m[0], "spec/units/#{m[1]}_spec.rb"] }
|
35
34
|
watch(%r{^spec/.+?/(.+)_spec\.rb$}) { |m| [m[0], "lib/#{m[1]}.rb"] }
|
data/LICENSE.md
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
-
##
|
2
|
-
Copyright (c) 2018, Robert Gauld. All rights reserved.
|
3
|
-
|
4
|
-
|
5
|
-
##License
|
1
|
+
## License
|
6
2
|
This code can be used under the BSD License (reproduced below).
|
7
3
|
Commiters to the project give Robert Gauld the right to redistribute their commits
|
8
4
|
under the BSD license.
|
9
5
|
|
10
6
|
|
11
|
-
###BSD License
|
7
|
+
### BSD License
|
12
8
|
Redistribution and use in source and binary forms, with or without modification,
|
13
9
|
are permitted provided that the following conditions are met:
|
14
10
|
|
data/README.md
CHANGED
@@ -1,29 +1,18 @@
|
|
1
1
|
[![Gem Version](https://badge.fury.io/rb/gandi_v5.png)](http://badge.fury.io/rb/gandi_v5)
|
2
|
-
|
3
|
-
Master branch:
|
4
2
|
[![Build Status](https://secure.travis-ci.org/robertgauld/gandi_v5.png?branch=master)](http://travis-ci.org/robertgauld/gandi_v5)
|
5
3
|
[![Coveralls Status](https://coveralls.io/repos/robertgauld/gandi_v5/badge.png?branch=master)](https://coveralls.io/r/robertgauld/gandi_v5)
|
6
4
|
[![Code Climate](https://codeclimate.com/github/robertgauld/gandi_v5.png?branch=master)](https://codeclimate.com/github/robertgauld/gandi_v5)
|
7
|
-
|
8
|
-
Staging branch:
|
9
|
-
[![Build Status](https://secure.travis-ci.org/robertgauld/gandi_v5.png?branch=staging)](http://travis-ci.org/robertgauld/gandi_v5)
|
10
|
-
[![Coveralls Status](https://coveralls.io/repos/robertgauld/gandi_v5/badge.png?branch=staging)](https://coveralls.io/r/robertgauld/gandi_v5)
|
11
|
-
|
12
|
-
|
13
|
-
## Build State
|
14
|
-
This project uses continuous integration to help ensure that a quality product is delivered.
|
15
|
-
Travis CI monitors two branches (versions) of the code:
|
16
|
-
|
17
|
-
* Master (which is what gets released)
|
18
|
-
* Staging (which is what is currently being developed ready for moving to master).
|
19
|
-
|
5
|
+
[![security](https://hakiri.io/github/robertgauld/gandi_v5/master.svg)](https://hakiri.io/github/robertgauld/gandi_v5/master)
|
20
6
|
|
21
7
|
## Ruby Versions
|
22
8
|
This gem supports the following versions of ruby, it may work on other versions but is not tested against them so don't rely on it.
|
23
9
|
|
24
10
|
* ruby:
|
25
|
-
* 2.6.0 - 2.6.
|
11
|
+
* 2.6.0 - 2.6.6
|
12
|
+
* 2.7.0 - 2.7.1
|
13
|
+
* truffleruby 20.1.0
|
26
14
|
* jruby, once it's reached parity with ruby 2.6.x
|
15
|
+
* rubinius, once it's reached parity with ruby 2.6.x
|
27
16
|
|
28
17
|
|
29
18
|
## Gandi V5
|
@@ -38,8 +27,8 @@ But then you were going to be careful anyway as this gem is currently in the ver
|
|
38
27
|
|
39
28
|
Details of the API can be found at:
|
40
29
|
|
41
|
-
*
|
42
|
-
*
|
30
|
+
* <https://api.gandi.net/docs/>
|
31
|
+
* <https://doc.livedns.gandi.net/>
|
43
32
|
|
44
33
|
|
45
34
|
## Installation
|
@@ -73,7 +62,7 @@ GandiV5.api_key = '…' # Unless you've set it in the environment variable GANDI
|
|
73
62
|
|
74
63
|
```ruby
|
75
64
|
# Get an array of all your domains.
|
76
|
-
domains = GandiV5
|
65
|
+
domains = GandiV5.domains
|
77
66
|
|
78
67
|
# Since each domain has only basic information, lets get all of the information.
|
79
68
|
domains.map!(&:refresh)
|
@@ -86,9 +75,14 @@ TODO: More examples!
|
|
86
75
|
|
87
76
|
We follow the [Semantic Versioning](http://semver.org/) concept.
|
88
77
|
|
89
|
-
| Gem Version | Gandi API Release Date
|
90
|
-
| --------------- |
|
91
|
-
| 0.
|
78
|
+
| Gem Version | Gandi API Release Date |
|
79
|
+
| --------------- | ------------------------ |
|
80
|
+
| 0.6.0 | 2020-05-07 (not LiveDNS) |
|
81
|
+
| 0.5.0 | 2019-10-01 |
|
82
|
+
| 0.4.0 | 2019-10-01 |
|
83
|
+
| 0.3.0 | 2019-08-22 |
|
84
|
+
| 0.2.0 | 2019-05-16 |
|
85
|
+
| 0.1.0 | 2019-05-16 |
|
92
86
|
|
93
|
-
See
|
87
|
+
See <https://api.gandi.net/docs/reference#API-Changelog> to find out what
|
94
88
|
Gandi changed on each date.
|
data/gandi_v5.gemspec
CHANGED
@@ -22,8 +22,9 @@ Gem::Specification.new do |gem|
|
|
22
22
|
|
23
23
|
gem.add_dependency 'dotenv', '~> 2.5'
|
24
24
|
gem.add_dependency 'rest-client', '>= 2', '< 3'
|
25
|
+
gem.add_dependency 'zeitwerk', '~> 2.1'
|
25
26
|
|
26
|
-
gem.add_development_dependency 'coveralls', '~> 0.
|
27
|
+
gem.add_development_dependency 'coveralls', '~> 0.8'
|
27
28
|
gem.add_development_dependency 'guard', '~> 2.15'
|
28
29
|
gem.add_development_dependency 'guard-bundler', '~> 2.2'
|
29
30
|
gem.add_development_dependency 'guard-rspec', '~> 4.2', '>= 4.2.5'
|
@@ -32,10 +33,10 @@ Gem::Specification.new do |gem|
|
|
32
33
|
gem.add_development_dependency 'rb-inotify', '~> 0.9'
|
33
34
|
gem.add_development_dependency 'rspec', '>= 3.7', '< 4'
|
34
35
|
gem.add_development_dependency 'rspec-its', '~> 1.3'
|
35
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
36
|
+
gem.add_development_dependency 'rubocop', '~> 0.73'
|
36
37
|
gem.add_development_dependency 'rubocop-performance', '~> 1.1'
|
37
38
|
gem.add_development_dependency 'simplecov', '~> 0.7'
|
38
39
|
gem.add_development_dependency 'timecop', '~> 0.5'
|
39
40
|
gem.add_development_dependency 'vcr', '~> 4.0'
|
40
|
-
gem.add_development_dependency 'webmock', '~> 3.
|
41
|
+
gem.add_development_dependency 'webmock', '~> 3.6'
|
41
42
|
end
|
data/lib/gandi_v5.rb
CHANGED
@@ -1,17 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'gandi_v5/version'
|
4
|
-
require_relative 'gandi_v5/data'
|
5
|
-
require_relative 'gandi_v5/error'
|
6
|
-
|
7
|
-
require_relative 'gandi_v5/billing'
|
8
|
-
require_relative 'gandi_v5/domain'
|
9
|
-
require_relative 'gandi_v5/email'
|
10
|
-
require_relative 'gandi_v5/live_dns'
|
11
|
-
require_relative 'gandi_v5/organization'
|
12
|
-
|
13
3
|
require 'rest_client'
|
14
4
|
require 'securerandom'
|
5
|
+
require 'zeitwerk'
|
6
|
+
|
7
|
+
# Custom inflector for Zeitwerk.
|
8
|
+
class MyInflector < Zeitwerk::Inflector
|
9
|
+
# Convert file's base name to class name when
|
10
|
+
# Zeitwerk's included inflector gets it wrong.
|
11
|
+
# @param basename [String] the file's base name (no path or extension)
|
12
|
+
# @param abspath [String] the file's absolute path
|
13
|
+
# @return [String] the class name
|
14
|
+
def camelize(basename, _abspath)
|
15
|
+
case basename
|
16
|
+
when 'live_dns'
|
17
|
+
'LiveDNS'
|
18
|
+
when 'tld'
|
19
|
+
'TLD'
|
20
|
+
when 'version'
|
21
|
+
'VERSION'
|
22
|
+
else
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
loader = Zeitwerk::Loader.for_gem
|
29
|
+
loader.inflector = MyInflector.new
|
30
|
+
loader.setup
|
15
31
|
|
16
32
|
# Namespace for classes which access the Gandi V5 API.
|
17
33
|
# Also provides useful methods and constants for them.
|
@@ -26,6 +42,26 @@ require 'securerandom'
|
|
26
42
|
class GandiV5
|
27
43
|
BASE = 'https://api.gandi.net/v5/'
|
28
44
|
|
45
|
+
# @see GandiV5::Domain.fetch
|
46
|
+
def self.domain(fqdn)
|
47
|
+
GandiV5::Domain.fetch(fqdn)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @see GandiV5::Domain.list
|
51
|
+
def self.domains(**params)
|
52
|
+
GandiV5::Domain.list(**params)
|
53
|
+
end
|
54
|
+
|
55
|
+
# @see GandiV5::Email::Mailbox.list
|
56
|
+
def self.mailboxes(fqdn, **params)
|
57
|
+
GandiV5::Email::Mailbox.list(fqdn, **params)
|
58
|
+
end
|
59
|
+
|
60
|
+
# @see GandiV5::Email::Slot.list
|
61
|
+
def self.mailbox_slots(fqdn)
|
62
|
+
GandiV5::Email::Slot.list(fqdn)
|
63
|
+
end
|
64
|
+
|
29
65
|
class << self
|
30
66
|
attr_writer :api_key
|
31
67
|
|
@@ -41,7 +77,7 @@ class GandiV5
|
|
41
77
|
def get(url, **headers)
|
42
78
|
prepare_headers headers, url
|
43
79
|
response = RestClient.get url, **headers
|
44
|
-
parse_response
|
80
|
+
[response, parse_response(response)]
|
45
81
|
rescue RestClient::BadRequest => e
|
46
82
|
handle_bad_request(e)
|
47
83
|
end
|
@@ -59,7 +95,10 @@ class GandiV5
|
|
59
95
|
def delete(url, **headers)
|
60
96
|
prepare_headers headers, url
|
61
97
|
response = RestClient.delete url, **headers
|
62
|
-
|
98
|
+
[
|
99
|
+
response,
|
100
|
+
response.headers.key?(:content_type) ? parse_response(response) : nil
|
101
|
+
]
|
63
102
|
rescue RestClient::BadRequest => e
|
64
103
|
handle_bad_request(e)
|
65
104
|
end
|
@@ -79,7 +118,7 @@ class GandiV5
|
|
79
118
|
prepare_headers headers, url
|
80
119
|
headers[:'content-type'] ||= 'application/json'
|
81
120
|
response = RestClient.patch url, payload, **headers
|
82
|
-
parse_response
|
121
|
+
[response, parse_response(response)]
|
83
122
|
rescue RestClient::BadRequest => e
|
84
123
|
handle_bad_request(e)
|
85
124
|
end
|
@@ -99,7 +138,7 @@ class GandiV5
|
|
99
138
|
prepare_headers headers, url
|
100
139
|
headers[:'content-type'] ||= 'application/json'
|
101
140
|
response = RestClient.post url, payload, **headers
|
102
|
-
parse_response
|
141
|
+
[response, parse_response(response)]
|
103
142
|
rescue RestClient::BadRequest => e
|
104
143
|
handle_bad_request(e)
|
105
144
|
end
|
@@ -119,7 +158,7 @@ class GandiV5
|
|
119
158
|
prepare_headers headers, url
|
120
159
|
headers[:'content-type'] ||= 'application/json'
|
121
160
|
response = RestClient.put url, payload, **headers
|
122
|
-
parse_response
|
161
|
+
[response, parse_response(response)]
|
123
162
|
rescue RestClient::BadRequest => e
|
124
163
|
handle_bad_request(e)
|
125
164
|
end
|