gandi_v5 0.1.0 → 0.6.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/.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
|
[](http://badge.fury.io/rb/gandi_v5)
|
|
2
|
-
|
|
3
|
-
Master branch:
|
|
4
2
|
[](http://travis-ci.org/robertgauld/gandi_v5)
|
|
5
3
|
[](https://coveralls.io/r/robertgauld/gandi_v5)
|
|
6
4
|
[](https://codeclimate.com/github/robertgauld/gandi_v5)
|
|
7
|
-
|
|
8
|
-
Staging branch:
|
|
9
|
-
[](http://travis-ci.org/robertgauld/gandi_v5)
|
|
10
|
-
[](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
|
+
[](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
|