gandi_v5 0.5.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +69 -5
  3. data/LICENSE.md +2 -6
  4. data/README.md +67 -18
  5. data/lib/gandi_v5.rb +137 -70
  6. data/lib/gandi_v5/billing/info/prepaid.rb +1 -0
  7. data/lib/gandi_v5/data.rb +3 -2
  8. data/lib/gandi_v5/data/converter.rb +3 -2
  9. data/lib/gandi_v5/data/converter/array_of.rb +3 -2
  10. data/lib/gandi_v5/data/converter/integer.rb +3 -2
  11. data/lib/gandi_v5/data/converter/symbol.rb +3 -2
  12. data/lib/gandi_v5/data/converter/time.rb +3 -2
  13. data/lib/gandi_v5/domain.rb +16 -17
  14. data/lib/gandi_v5/domain/availability/product/period.rb +1 -1
  15. data/lib/gandi_v5/domain/contact.rb +5 -5
  16. data/lib/gandi_v5/domain/tld.rb +2 -2
  17. data/lib/gandi_v5/domain/transfer_in.rb +170 -0
  18. data/lib/gandi_v5/domain/transfer_in/availability.rb +51 -0
  19. data/lib/gandi_v5/email.rb +1 -0
  20. data/lib/gandi_v5/email/forward.rb +2 -8
  21. data/lib/gandi_v5/email/mailbox.rb +4 -10
  22. data/lib/gandi_v5/email/slot.rb +11 -3
  23. data/lib/gandi_v5/error/gandi_error.rb +1 -0
  24. data/lib/gandi_v5/live_dns.rb +2 -12
  25. data/lib/gandi_v5/live_dns/domain.rb +340 -29
  26. data/lib/gandi_v5/live_dns/domain/dnssec_key.rb +120 -0
  27. data/lib/gandi_v5/live_dns/domain/record.rb +81 -0
  28. data/lib/gandi_v5/live_dns/domain/snapshot.rb +111 -0
  29. data/lib/gandi_v5/live_dns/domain/tsig_key.rb +74 -0
  30. data/lib/gandi_v5/sharing_space.rb +27 -0
  31. data/lib/gandi_v5/simple_hosting.rb +13 -0
  32. data/lib/gandi_v5/simple_hosting/instance.rb +245 -0
  33. data/lib/gandi_v5/simple_hosting/instance/application.rb +45 -0
  34. data/lib/gandi_v5/simple_hosting/instance/database.rb +20 -0
  35. data/lib/gandi_v5/simple_hosting/instance/language.rb +22 -0
  36. data/lib/gandi_v5/simple_hosting/instance/upgrade.rb +22 -0
  37. data/lib/gandi_v5/simple_hosting/instance/virtual_host.rb +187 -0
  38. data/lib/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone.rb +75 -0
  39. data/lib/gandi_v5/version.rb +1 -1
  40. data/spec/.rubocop.yml +9 -9
  41. data/spec/features/list_domain_renewals_spec.rb +16 -0
  42. data/spec/features/list_email_addresses_spec.rb +39 -0
  43. data/spec/fixtures/bodies/GandiV5_Domain/fetch.yml +8 -0
  44. data/spec/fixtures/bodies/GandiV5_Domain_TransferIn/fetch.yml +21 -0
  45. data/spec/fixtures/bodies/GandiV5_Domain_TransferIn_Availability/fetch.yml +10 -0
  46. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/fetch.yml +1 -2
  47. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list_tsig.yml +3 -0
  48. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/nameservers.yml +3 -0
  49. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/fetch.yml +12 -0
  50. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/list.yml +9 -0
  51. data/spec/fixtures/bodies/{GandiV5_LiveDNS_Zone_Snapshot → GandiV5_LiveDNS_Domain_Snapshot}/fetch.yml +4 -3
  52. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/list.yml +5 -0
  53. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/fetch.yml +9 -0
  54. data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/list.yml +4 -0
  55. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/fetch.yml +80 -0
  56. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance/list.yml +38 -0
  57. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/fetch.yml +26 -0
  58. data/spec/fixtures/bodies/GandiV5_SimpleHosting_Instance_VirtualHost/list.yml +18 -0
  59. data/spec/fixtures/vcr/Examples/List_domain_renewals.yml +54 -0
  60. data/spec/fixtures/vcr/Examples/List_email_addresses.yml +103 -0
  61. data/spec/units/gandi_v5/domain/transfer_in/availability_spec.rb +49 -0
  62. data/spec/units/gandi_v5/domain/transfer_in_spec.rb +143 -0
  63. data/spec/units/gandi_v5/domain_spec.rb +13 -39
  64. data/spec/units/gandi_v5/email/forward_spec.rb +5 -34
  65. data/spec/units/gandi_v5/email/mailbox_spec.rb +4 -34
  66. data/spec/units/gandi_v5/email/slot_spec.rb +10 -2
  67. data/spec/units/gandi_v5/live_dns/domain/dnssec_key_spec.rb +128 -0
  68. data/spec/units/gandi_v5/live_dns/{record_set_spec.rb → domain/record_spec.rb} +1 -1
  69. data/spec/units/gandi_v5/live_dns/domain/snapshot_spec.rb +101 -0
  70. data/spec/units/gandi_v5/live_dns/domain/tsig_key_spec.rb +78 -0
  71. data/spec/units/gandi_v5/live_dns/domain_spec.rb +297 -118
  72. data/spec/units/gandi_v5/live_dns_spec.rb +0 -12
  73. data/spec/units/gandi_v5/sharing_space_spec.rb +4 -0
  74. data/spec/units/gandi_v5/simple_hosting/instance/application_spec.rb +37 -0
  75. data/spec/units/gandi_v5/simple_hosting/instance/database_spec.rb +4 -0
  76. data/spec/units/gandi_v5/simple_hosting/instance/language_spec.rb +4 -0
  77. data/spec/units/gandi_v5/simple_hosting/instance/upgrade_spec.rb +4 -0
  78. data/spec/units/gandi_v5/simple_hosting/instance/virtual_host/linked_dns_zone_spec.rb +50 -0
  79. data/spec/units/gandi_v5/simple_hosting/instance/virtual_host_spec.rb +199 -0
  80. data/spec/units/gandi_v5/simple_hosting/instance_spec.rb +182 -0
  81. data/spec/units/gandi_v5/simple_hosting_spec.rb +9 -0
  82. data/spec/units/gandi_v5_spec.rb +111 -14
  83. metadata +174 -53
  84. data/.gitignore +0 -26
  85. data/.rspec +0 -3
  86. data/.rubocop.yml +0 -30
  87. data/.travis.yml +0 -38
  88. data/FUNDING.yml +0 -10
  89. data/Gemfile +0 -6
  90. data/Guardfile +0 -39
  91. data/Rakefile +0 -3
  92. data/bin/console +0 -13
  93. data/gandi_v5.gemspec +0 -42
  94. data/lib/gandi_v5/domain/sharing_space.rb +0 -21
  95. data/lib/gandi_v5/live_dns/has_zone_records.rb +0 -153
  96. data/lib/gandi_v5/live_dns/record_set.rb +0 -79
  97. data/lib/gandi_v5/live_dns/zone.rb +0 -160
  98. data/lib/gandi_v5/live_dns/zone/snapshot.rb +0 -81
  99. data/spec/features/domain_spec.rb +0 -45
  100. data/spec/features/livedns_domain_spec.rb +0 -8
  101. data/spec/features/livedns_zone_spec.rb +0 -44
  102. data/spec/features/mailbox_spec.rb +0 -18
  103. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/fetch.yml +0 -11
  104. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/list.yml +0 -11
  105. data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/list.yml +0 -3
  106. data/spec/fixtures/vcr/Domain_features/List_domains.yml +0 -55
  107. data/spec/fixtures/vcr/Domain_features/Renew_domain.yml +0 -133
  108. data/spec/fixtures/vcr/LiveDNS_Domain_features/List_domains.yml +0 -32
  109. data/spec/fixtures/vcr/LiveDNS_Zone_features/List_zones.yml +0 -42
  110. data/spec/fixtures/vcr/LiveDNS_Zone_features/Make_and_save_snapshot.yml +0 -72
  111. data/spec/fixtures/vcr/LiveDNS_Zone_features/Save_zone_to_file.yml +0 -28
  112. data/spec/fixtures/vcr/Mailbox_features/List_mailboxes.yml +0 -39
  113. data/spec/units/gandi_v5/domain/sharing_space_spec.rb +0 -4
  114. data/spec/units/gandi_v5/live_dns/zone/snapshot_spec.rb +0 -66
  115. data/spec/units/gandi_v5/live_dns/zone_spec.rb +0 -347
@@ -35,3 +35,11 @@ contacts:
35
35
  services:
36
36
  - gandilivedns
37
37
  - dnssec
38
+ sharing_space:
39
+ id: SHARING-UUID
40
+ name: User
41
+ type: user
42
+ reseller: true
43
+ sharing_space:
44
+ id: RESELLER-UUID
45
+ name: Reseller
@@ -0,0 +1,21 @@
1
+ ---
2
+ created_at: '2011-02-21T10:39:00Z'
3
+ owner_contact: owner contact
4
+ params:
5
+ domain: example.com
6
+ duration: 1
7
+ reseller: reseller-uuid
8
+ tld: com
9
+ version: 0
10
+ step: step text
11
+ step_nb: 2
12
+ updated_at: '2011-02-22T10:39:00Z'
13
+ errortype: error-type
14
+ errortype_label: error label
15
+ foa:
16
+ - answer: ans
17
+ email: user@example.com
18
+ inner_step: inner-step
19
+ regac_at: '2011-02-23T10:39:00Z'
20
+ start_at: '2011-02-24T10:39:00Z'
21
+ transfer_procedure: transfer-procedure
@@ -0,0 +1,10 @@
1
+ ---
2
+ available: true
3
+ fqdn: example.com
4
+ fqdn_ulabel: EXAMPLE.COM
5
+ corporate: false
6
+ internal: false
7
+ durations: [1, 2, 3]
8
+ minimum_duration: 1
9
+ maximum_duration: 3
10
+ msg: This is a message
@@ -1,4 +1,3 @@
1
1
  ---
2
- zonedata: /zones/zone-uuid/recprds
3
2
  fqdn: example.com
4
- zone: /zones/zone-uuid
3
+ automatic_snapshots: true
@@ -0,0 +1,3 @@
1
+ ---
2
+ - id: key-uuid
3
+ key_name: key-name
@@ -0,0 +1,3 @@
1
+ ---
2
+ - a.example.com
3
+ - b.example.com
@@ -0,0 +1,12 @@
1
+ ---
2
+ id: key-uuid
3
+ status: status
4
+ fqdn: example.com
5
+ algorithm: 2
6
+ algorithm_name: Diffie-Hellman
7
+ deleted: false
8
+ ds: ds-record
9
+ flags: 256
10
+ fingerprint: fp
11
+ public_key: pub-key
12
+ tag: tag
@@ -0,0 +1,9 @@
1
+ ---
2
+ - id: key-uuid
3
+ status: status
4
+ fqdn: example.com
5
+ algorithm: 2
6
+ algorithm_name: Diffie-Hellman
7
+ deleted: false
8
+ ds: ds-record
9
+ flags: 256
@@ -1,7 +1,8 @@
1
1
  ---
2
- date_created: '2016-12-16T16:51:26Z'
3
- uuid: snapshot-uuid
4
- zone_uuid: zone-uuid
2
+ created_at: '2016-12-16T16:51:26Z'
3
+ id: snapshot-uuid
4
+ name: snapshot-name
5
+ automatic: true
5
6
  zone_data:
6
7
  - rrset_type: A
7
8
  rrset_ttl: 10800
@@ -0,0 +1,5 @@
1
+ ---
2
+ - id: snapshot-uuid
3
+ name: snapshot-name
4
+ automatic: true
5
+ created_at: '2016-12-16T16:51:26Z'
@@ -0,0 +1,9 @@
1
+ ---
2
+ id: key-uuid
3
+ key_name: key-name
4
+ secret: key-secret
5
+ config_samples:
6
+ bind: bind-sample
7
+ knot: knot-sample
8
+ nsd: nsd-sample
9
+ powerdns: powerdns-sample
@@ -0,0 +1,4 @@
1
+ ---
2
+ - id: key-uuid
3
+ key_name: key-name
4
+ secret: key-secret
@@ -0,0 +1,80 @@
1
+ ---
2
+ access_information:
3
+ admin_url: admin.example.com/
4
+ database:
5
+ admins:
6
+ - type: phpMyAdmin
7
+ url: admin.example.com/phpmyadmin
8
+ username: database admin username
9
+ host: database.example.com
10
+ port: 1234
11
+ socket: /socket/for/database
12
+ deploy:
13
+ - cli:
14
+ init: cli init string
15
+ git:
16
+ deploy: git deploy string
17
+ remote: git remote string
18
+ url: git url string
19
+ sftp:
20
+ directory: sftp directory
21
+ document_root: sftp document root
22
+ server: sftp server
23
+ url: sftp url
24
+ vhost:
25
+ fqdn: example.com
26
+ href: link/to/href/details/virtualhost-uuid
27
+ user: A user
28
+ available_upgrade: false
29
+ console:
30
+ enabled: true
31
+ url: console.example.com/
32
+ created_at: 2020-01-02T12:34:56+00
33
+ database:
34
+ name: database name
35
+ status: database status
36
+ version: database version
37
+ datacenter:
38
+ code: FR-SD5
39
+ name: SD5
40
+ region: FR
41
+ expire_at: 2021-01-02T12:34:56+00
42
+ id: instance-uuid
43
+ is_trial: false
44
+ language:
45
+ name: ruby
46
+ single_application: true
47
+ status: great
48
+ version: "2.7"
49
+ name: instance name
50
+ sharing_space:
51
+ id: sharing-space-uuid
52
+ name: sharing space name
53
+ size: s+
54
+ snapshot_enabled: true
55
+ status: active
56
+ storage:
57
+ additional:
58
+ unit: GB
59
+ value: 10
60
+ base:
61
+ unit: GB
62
+ value: 20
63
+ total:
64
+ unit: GB
65
+ value: 30
66
+ vhosts:
67
+ - fqdn: vhost1.example.com
68
+ href: link/to.vhost/details
69
+ autorenew:
70
+ duration: 1
71
+ duration_type: m
72
+ compatible_applications:
73
+ - name: compatable name
74
+ parameters: {}
75
+ password_updated_at: 2020-06-02T12:34:56+00
76
+ upgrade_to:
77
+ - name: upgrade to name
78
+ status: upgrade to status
79
+ type: database
80
+ version: upgrade to version
@@ -0,0 +1,38 @@
1
+ ---
2
+ - available_upgrade: true
3
+ created_at: 2020-01-02T12:34:56+00
4
+ database:
5
+ name: database name
6
+ status: database status
7
+ version: database version
8
+ datacenter:
9
+ code: FR-SD5
10
+ name: SD5
11
+ region: FR
12
+ expire_at: 2021-01-02T12:34:56+00
13
+ id: instance-uuid
14
+ language:
15
+ name: ruby
16
+ single_application: true
17
+ status: great
18
+ version: "2.7"
19
+ name: instance name
20
+ sharing_space:
21
+ id: sharing-space-uuid
22
+ name: sharing space name
23
+ size: s+
24
+ snapshot_enabled: true
25
+ status: active
26
+ storage:
27
+ additional:
28
+ unit: GB
29
+ value: 10
30
+ base:
31
+ unit: GB
32
+ value: 20
33
+ total:
34
+ unit: GB
35
+ value: 30
36
+ autorenew:
37
+ duration: 1
38
+ duration_type: m
@@ -0,0 +1,26 @@
1
+ ---
2
+ created_at: 2020-01-02T12:34:56+00
3
+ fqdn: vh.example.com
4
+ is_a_test_vhost: false
5
+ linked_dns_zone:
6
+ allow_alteration: true
7
+ cname: cn
8
+ domain: example.com
9
+ ipv4: 1.2.3.4
10
+ ipv6: 1:2::3:4
11
+ is_alterable: true
12
+ is_root: true
13
+ key: www
14
+ txt: abcd1234
15
+ last_checked_status: unknown
16
+ last_checked_at: 2020-02-03T23:45:56+00
17
+ status: running
18
+ application:
19
+ name: app-name
20
+ status: being_created
21
+ parameters: {}
22
+ certificates:
23
+ - href: example.com
24
+ id: cert-id
25
+ pending: true
26
+ https_strategy: redirect_HTTP_to_HTTPS
@@ -0,0 +1,18 @@
1
+ ---
2
+ - created_at: 2020-01-02T12:34:56+00
3
+ fqdn: vh.example.com
4
+ is_a_test_vhost: false
5
+ linked_dns_zone:
6
+ allow_alteration: true
7
+ last_checked_status: unknown
8
+ last_checked_at: 2020-02-03T23:45:56+00
9
+ status: running
10
+ application:
11
+ name: app-name
12
+ status: being_created
13
+ parameters: {}
14
+ certificates:
15
+ - href: example.com
16
+ id: cert-id
17
+ pending: true
18
+ https_strategy: redirect_HTTP_to_HTTPS
@@ -0,0 +1,54 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.gandi.net/v5/domain/domains?page=1&per_page=100
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Authorization:
13
+ - Apikey abdce12345
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json; charset=utf-8
21
+ Content-Length:
22
+ - '461'
23
+ body:
24
+ encoding: UTF-8
25
+ string: '[{"status":[],"dates":{"created_at":"2011-02-21T10:39:00Z","registry_created_at":"2003-03-12T12:02:11Z","registry_ends_at":"2021-03-12T12:02:11Z","updated_at":"2020-03-25T17:06:34Z"},"tags":[],"fqdn":"example.com","id":"domain-uuid","autorenew":false,"tld":"com","owner":"Mr. Example","orga_owner":"Example Org","domain_owner":"Owner","nameserver":{"current":"livedns"},"href":"https://api.gandi.net/v5/domain/domains/example.com","fqdn_unicode":"example.com"}]'
26
+ recorded_at: Mon, 17 Aug 2020 16:02:51 GMT
27
+
28
+ - request:
29
+ method: get
30
+ uri: https://api.gandi.net/v5/domain/check?currency=GBP&name=example.com&period=1&processes%5B%5D=renew
31
+ body:
32
+ encoding: US-ASCII
33
+ string: ''
34
+ headers:
35
+ Accept:
36
+ - application/json
37
+ Authorization:
38
+ - Apikey abcde12345
39
+ response:
40
+ status:
41
+ code: 200
42
+ message: OK
43
+ headers:
44
+ Content-Type:
45
+ - application/json; charset=utf-8
46
+ Content-Length:
47
+ - '353'
48
+ body:
49
+ encoding: UTF-8
50
+ string: '{"currency":"GBP","products":[{"name":"example.com","taxes":[{"rate":20,"name":"vat","type":"service"}],"process":"renew","prices":[{"min_duration":1,"discount":false,"price_after_taxes":8.87,"max_duration":9,"price_before_taxes":7.39,"duration_unit":"y"}],"status":"unavailable"}],"grid":"A","taxes":[{"rate":20,"name":"vat","type":"service"}]}'
51
+ http_version:
52
+ recorded_at: Mon, 17 Aug 2020 16:53:54 GMT
53
+
54
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,103 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.gandi.net/v5/domain/domains?page=1&per_page=100
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Authorization:
13
+ - Apikey abdce12345
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json; charset=utf-8
21
+ Content-Length:
22
+ - '461'
23
+ body:
24
+ encoding: UTF-8
25
+ string: '[{"status":[],"dates":{"created_at":"2011-02-21T10:39:00Z","registry_created_at":"2003-03-12T12:02:11Z","registry_ends_at":"2021-03-12T12:02:11Z","updated_at":"2020-03-25T17:06:34Z"},"tags":[],"fqdn":"example.com","id":"domain-uuid","autorenew":false,"tld":"com","owner":"Mr. Example","orga_owner":"Example Org","domain_owner":"Owner","nameserver":{"current":"livedns"},"href":"https://api.gandi.net/v5/domain/domains/example.com","fqdn_unicode":"example.com"}]'
26
+ recorded_at: Mon, 17 Aug 2020 16:02:51 GMT
27
+
28
+ - request:
29
+ method: get
30
+ uri: https://api.gandi.net/v5/email/mailboxes/example.com?page=1&per_page=100
31
+ body:
32
+ encoding: US-ASCII
33
+ string: ''
34
+ headers:
35
+ Accept:
36
+ - application/json
37
+ Authorization:
38
+ - Apikey abdce12345
39
+ response:
40
+ status:
41
+ code: 200
42
+ message: OK
43
+ headers:
44
+ Content-Type:
45
+ - application/json; charset=utf-8
46
+ Content-Length:
47
+ - '284'
48
+ body:
49
+ encoding: UTF-8
50
+ string: '[{"responder":{"message":"","enabled":false},"mailbox_type":"standard","login":"user","quota_used":3597,"domain":"example.com","aliases":["alias"],"address":"user@example.com","href":"https://api.gandi.net/v5/email/mailboxes/example.com/mailbox-uuid","id":"mailbox-uuid"}]'
51
+ recorded_at: Mon, 17 Aug 2020 16:02:51 GMT
52
+
53
+ - request:
54
+ method: get
55
+ uri: https://api.gandi.net/v5/email/mailboxes/example.com/mailbox-uuid
56
+ body:
57
+ encoding: US-ASCII
58
+ string: ''
59
+ headers:
60
+ Accept:
61
+ - application/json
62
+ Authorization:
63
+ - Apikey abdce12345
64
+ response:
65
+ status:
66
+ code: 200
67
+ message: OK
68
+ headers:
69
+ Content-Type:
70
+ - application/json; charset=utf-8
71
+ Content-Length:
72
+ - '270'
73
+ body:
74
+ encoding: UTF-8
75
+ string: '{"responder":{"message":"","enabled":false},"mailbox_type":"standard","login":"user","quota_used":3597,"domain":"example.com","aliases":["alias"],"address":"user@example.com","href":"https://api.gandi.net/v5/email/mailboxes/example.com/mailbox-uuid","id":"mailbox-uuid"}'
76
+ recorded_at: Mon, 17 Aug 2020 16:17:50 GMT
77
+
78
+ - request:
79
+ method: get
80
+ uri: https://api.gandi.net/v5/email/forwards/example.com?page=1&per_page=100
81
+ body:
82
+ encoding: US-ASCII
83
+ string: ''
84
+ headers:
85
+ Accept:
86
+ - application/json
87
+ Authorization:
88
+ - Apikey abdce12345
89
+ response:
90
+ status:
91
+ code: 200
92
+ message: OK
93
+ headers:
94
+ Content-Type:
95
+ - application/json; charset=utf-8
96
+ Content-Length:
97
+ - '127'
98
+ body:
99
+ encoding: UTF-8
100
+ string: '[{"destinations":["user@example.com"],"source":"forward","href":"https://api.gandi.net/v5/email/forwards/example.com/forward"}]'
101
+ recorded_at: Mon, 17 Aug 2020 16:02:52 GMT
102
+
103
+ recorded_with: VCR 4.0.0