gandi_v5 0.6.0 → 0.7.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/CHANGELOG.md +27 -0
- data/README.md +3 -2
- data/lib/gandi_v5.rb +34 -13
- data/lib/gandi_v5/domain.rb +2 -8
- data/lib/gandi_v5/email/forward.rb +2 -8
- data/lib/gandi_v5/email/mailbox.rb +2 -8
- data/lib/gandi_v5/live_dns.rb +0 -12
- data/lib/gandi_v5/live_dns/domain.rb +313 -29
- data/lib/gandi_v5/live_dns/domain/dnssec_key.rb +115 -0
- data/lib/gandi_v5/live_dns/domain/record.rb +81 -0
- data/lib/gandi_v5/live_dns/domain/snapshot.rb +107 -0
- data/lib/gandi_v5/live_dns/domain/tsig_key.rb +71 -0
- data/lib/gandi_v5/version.rb +1 -1
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/fetch.yml +1 -2
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/list_tsig.yml +3 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain/nameservers.yml +3 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/fetch.yml +12 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_DnssecKey/list.yml +9 -0
- data/spec/fixtures/bodies/{GandiV5_LiveDNS_Zone_Snapshot → GandiV5_LiveDNS_Domain_Snapshot}/fetch.yml +4 -3
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_Snapshot/list.yml +5 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/fetch.yml +9 -0
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Domain_TsigKey/list.yml +4 -0
- data/spec/units/gandi_v5/domain_spec.rb +6 -37
- data/spec/units/gandi_v5/email/forward_spec.rb +5 -34
- data/spec/units/gandi_v5/email/mailbox_spec.rb +4 -34
- data/spec/units/gandi_v5/live_dns/domain/dnssec_key_spec.rb +128 -0
- data/spec/units/gandi_v5/live_dns/{record_set_spec.rb → domain/record_spec.rb} +1 -1
- data/spec/units/gandi_v5/live_dns/domain/snapshot_spec.rb +101 -0
- data/spec/units/gandi_v5/live_dns/domain/tsig_key_spec.rb +78 -0
- data/spec/units/gandi_v5/live_dns/domain_spec.rb +297 -118
- data/spec/units/gandi_v5/live_dns_spec.rb +0 -12
- data/spec/units/gandi_v5_spec.rb +111 -14
- metadata +18 -24
- data/lib/gandi_v5/live_dns/has_zone_records.rb +0 -153
- data/lib/gandi_v5/live_dns/record_set.rb +0 -79
- data/lib/gandi_v5/live_dns/zone.rb +0 -160
- data/lib/gandi_v5/live_dns/zone/snapshot.rb +0 -81
- data/spec/features/domain_spec.rb +0 -45
- data/spec/features/livedns_domain_spec.rb +0 -8
- data/spec/features/livedns_zone_spec.rb +0 -44
- data/spec/features/mailbox_spec.rb +0 -18
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/fetch.yml +0 -11
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone/list.yml +0 -11
- data/spec/fixtures/bodies/GandiV5_LiveDNS_Zone_Snapshot/list.yml +0 -3
- data/spec/fixtures/vcr/Domain_features/List_domains.yml +0 -55
- data/spec/fixtures/vcr/Domain_features/Renew_domain.yml +0 -133
- data/spec/fixtures/vcr/LiveDNS_Domain_features/List_domains.yml +0 -32
- data/spec/fixtures/vcr/LiveDNS_Zone_features/List_zones.yml +0 -42
- data/spec/fixtures/vcr/LiveDNS_Zone_features/Make_and_save_snapshot.yml +0 -72
- data/spec/fixtures/vcr/LiveDNS_Zone_features/Save_zone_to_file.yml +0 -28
- data/spec/fixtures/vcr/Mailbox_features/List_mailboxes.yml +0 -39
- data/spec/units/gandi_v5/live_dns/zone/snapshot_spec.rb +0 -66
- data/spec/units/gandi_v5/live_dns/zone_spec.rb +0 -347
@@ -1,160 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class GandiV5
|
4
|
-
class LiveDNS
|
5
|
-
# A zone within the LiveDNS system.
|
6
|
-
# Zones can be used by any number of domains.
|
7
|
-
# @!attribute [r] uuid
|
8
|
-
# @return [String]
|
9
|
-
# @!attribute [r] name
|
10
|
-
# @return [String]
|
11
|
-
# @!attribute [r] sharing_uuid
|
12
|
-
# @return [String]
|
13
|
-
# @!attribute [r] soa_retry
|
14
|
-
# @return [Integer] retry period, as reported in SOA record.
|
15
|
-
# @!attribute [r] soa_minimum
|
16
|
-
# @return [Integer] minimum and negative TTL, as reported in SOA record.
|
17
|
-
# @!attribute [r] soa_refresh
|
18
|
-
# @return [Integer] refresh period, as reported in SOA record.
|
19
|
-
# @!attribute [r] soa_expire
|
20
|
-
# @return [Integer] expire period, as reported in SOA record.
|
21
|
-
# @!attribute [r] soa_serial
|
22
|
-
# @return [Integer] serial number, as reported in SOA record.
|
23
|
-
# @!attribute [r] soa_email
|
24
|
-
# @return [String] admin email address, as reported in SOA record.
|
25
|
-
# @!attribute [r] soa_primary_ns
|
26
|
-
# @return [String] primary name server, as reported in SOA record.
|
27
|
-
class Zone
|
28
|
-
include GandiV5::Data
|
29
|
-
include GandiV5::LiveDNS::HasZoneRecords
|
30
|
-
|
31
|
-
members :uuid, :name
|
32
|
-
member :sharing_uuid, gandi_key: 'sharing_id'
|
33
|
-
member :soa_retry, gandi_key: 'retry'
|
34
|
-
member :soa_minimum, gandi_key: 'minimum'
|
35
|
-
member :soa_refresh, gandi_key: 'refresh'
|
36
|
-
member :soa_expire, gandi_key: 'expire'
|
37
|
-
member :soa_serial, gandi_key: 'serial'
|
38
|
-
member :soa_email, gandi_key: 'email'
|
39
|
-
member :soa_primary_ns, gandi_key: 'primary_ns'
|
40
|
-
|
41
|
-
alias zone_uuid uuid
|
42
|
-
|
43
|
-
# Generate SOA record for the zone
|
44
|
-
# @return [String]
|
45
|
-
def to_s
|
46
|
-
"@\tIN\tSOA\t#{soa_primary_ns} #{soa_email} (\n" \
|
47
|
-
"\t#{soa_serial}\t;Serial\n" \
|
48
|
-
"\t#{soa_refresh}\t\t;Refresh\n" \
|
49
|
-
"\t#{soa_retry}\t\t;Retry\n" \
|
50
|
-
"\t#{soa_expire}\t\t;Expire\n" \
|
51
|
-
"\t#{soa_minimum}\t\t;Minimum & Negative TTL\n" \
|
52
|
-
')'
|
53
|
-
end
|
54
|
-
|
55
|
-
# List the domains that use this zone.
|
56
|
-
# @return [Array<String>] The FQDNs.
|
57
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
58
|
-
def list_domains
|
59
|
-
_response, data = GandiV5.get "#{url}/domains"
|
60
|
-
data.map { |item| item['fqdn'] }
|
61
|
-
end
|
62
|
-
|
63
|
-
# Attach domain to this zone.
|
64
|
-
# @param fqdn [String, #fqdn, #to_s] the fully qualified domain name
|
65
|
-
# that should start using this zone.
|
66
|
-
# @return [String] The confirmation message from Gandi.
|
67
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
68
|
-
def attach_domain(fqdn)
|
69
|
-
fqdn = fqdn.fqdn if fqdn.respond_to?(:fqdn)
|
70
|
-
_resp, data = GandiV5.patch "#{BASE}domains/#{CGI.escape fqdn}", { zone_uuid: uuid }.to_json
|
71
|
-
data['message']
|
72
|
-
end
|
73
|
-
|
74
|
-
# Get snapshot UUIDs for this zone from Gandi.
|
75
|
-
# @return [Hash{String => Time}] Mapping snapshot UUID to time made.
|
76
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
77
|
-
def snapshots
|
78
|
-
GandiV5::LiveDNS::Zone::Snapshot.list uuid
|
79
|
-
end
|
80
|
-
|
81
|
-
# Get snapshot from Gandi.
|
82
|
-
# @param uuid [String] the UUID of the snapshot to fetch.
|
83
|
-
# @return [GandiV5::LiveDNS::Zone::Snapshot]
|
84
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
85
|
-
def snapshot(uuid)
|
86
|
-
GandiV5::LiveDNS::Zone::Snapshot.fetch self.uuid, uuid
|
87
|
-
end
|
88
|
-
|
89
|
-
# Take a snapshot of this zone.
|
90
|
-
# @return [GandiV5::LiveDNS::Zone::Snapshot]
|
91
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
92
|
-
def take_snapshot
|
93
|
-
_response, data = GandiV5.post "#{url}/snapshots"
|
94
|
-
snapshot data['uuid']
|
95
|
-
end
|
96
|
-
|
97
|
-
# Update this zone.
|
98
|
-
# @param name [String, #to_s] new name for the zone.
|
99
|
-
# @return [String] The confirmation message from Gandi.
|
100
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
101
|
-
def update(name:)
|
102
|
-
_response, data = GandiV5.patch url, { name: name }.to_json
|
103
|
-
self.name = name
|
104
|
-
data['message']
|
105
|
-
end
|
106
|
-
|
107
|
-
# Delete this zone from Gandi.
|
108
|
-
# @return [nil]
|
109
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
110
|
-
def delete
|
111
|
-
GandiV5.delete url
|
112
|
-
end
|
113
|
-
|
114
|
-
# Create a new zone.
|
115
|
-
# @param name [String] the name for the created zone.
|
116
|
-
# @param sharing_id [String] the UUID of the account to ceate the zone under.
|
117
|
-
# @return [GandiV5::LiveDNS::Zone] The created zone.
|
118
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
119
|
-
def self.create(name, sharing_id: nil)
|
120
|
-
params = sharing_id ? { sharing_id: sharing_id } : {}
|
121
|
-
|
122
|
-
response, _data = GandiV5.post(
|
123
|
-
url,
|
124
|
-
{ name: name }.to_json,
|
125
|
-
params: params
|
126
|
-
)
|
127
|
-
|
128
|
-
fetch response.headers[:location].split('/').last
|
129
|
-
end
|
130
|
-
|
131
|
-
# List the zones.
|
132
|
-
# @return [Array<GandiV5::LiveDNS::Zone>]
|
133
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
134
|
-
def self.list
|
135
|
-
_response, data = GandiV5.get url
|
136
|
-
data.map { |item| from_gandi item }
|
137
|
-
end
|
138
|
-
|
139
|
-
# Get a zone from Gandi.
|
140
|
-
# @param uuid [String, #to_s] the UUID of the zone to fetch.
|
141
|
-
# @return [GandiV5::LiveDNS::Zone]
|
142
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
143
|
-
def self.fetch(uuid)
|
144
|
-
_response, data = GandiV5.get url(uuid)
|
145
|
-
from_gandi data
|
146
|
-
end
|
147
|
-
|
148
|
-
private
|
149
|
-
|
150
|
-
def url
|
151
|
-
"#{BASE}zones/#{CGI.escape uuid}"
|
152
|
-
end
|
153
|
-
|
154
|
-
def self.url(uuid = nil)
|
155
|
-
BASE + (uuid ? "zones/#{CGI.escape(uuid)}" : 'zones')
|
156
|
-
end
|
157
|
-
private_class_method :url
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class GandiV5
|
4
|
-
class LiveDNS
|
5
|
-
class Zone
|
6
|
-
# A snapshot (backup) of a zone.
|
7
|
-
# @!attribute [r] uuid
|
8
|
-
# @return [String]
|
9
|
-
# @!attribute [r] zone_uuid
|
10
|
-
# @return [String]
|
11
|
-
# @!attribute [r] created_at
|
12
|
-
# @return [Time]
|
13
|
-
# @!attribute [r] records
|
14
|
-
# @return [Array<GandiV5::LiveDNS::RecordSet>]
|
15
|
-
class Snapshot
|
16
|
-
include GandiV5::Data
|
17
|
-
|
18
|
-
members :uuid, :zone_uuid
|
19
|
-
member :created_at, gandi_key: 'date_created', converter: GandiV5::Data::Converter::Time
|
20
|
-
member(
|
21
|
-
:records,
|
22
|
-
gandi_key: 'zone_data',
|
23
|
-
converter: GandiV5::LiveDNS::RecordSet,
|
24
|
-
array: true
|
25
|
-
)
|
26
|
-
|
27
|
-
alias snapshot_uuid uuid
|
28
|
-
|
29
|
-
# Delete this snapshot.
|
30
|
-
# @return [String] The confirmation message from Gandi.
|
31
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
32
|
-
def delete
|
33
|
-
_response, data = GandiV5.delete url
|
34
|
-
data['message']
|
35
|
-
end
|
36
|
-
|
37
|
-
# @see GandiV5::LiveDNS::Zone.fetch
|
38
|
-
def fetch_zone
|
39
|
-
GandiV5::LiveDNS::Zone.fetch zone_uuid
|
40
|
-
end
|
41
|
-
|
42
|
-
# The snapshot's zone (fetching from Gandi if required).
|
43
|
-
# @return [GandiV5::LiveDNS::Zone]
|
44
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
45
|
-
def zone
|
46
|
-
@zone ||= fetch_zone
|
47
|
-
end
|
48
|
-
|
49
|
-
# Get snapshot UUIDs for this zone from Gandi.
|
50
|
-
# @return [Hash{String => Time}] Mapping UUID to time made.
|
51
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
52
|
-
def self.list(zone_uuid)
|
53
|
-
_response, data = GandiV5.get url(zone_uuid)
|
54
|
-
Hash[data.map { |snapshot| [snapshot['uuid'], Time.parse(snapshot['date_created'])] }]
|
55
|
-
end
|
56
|
-
|
57
|
-
# Get snapshot from Gandi.
|
58
|
-
# @param zone_uuid [String, #to_s] the UUID of the zone the snapshot was made of.
|
59
|
-
# @param snapshot_uuid [String, #to_s] the UUID of the snapshot to fetch.
|
60
|
-
# @return [GandiV5::LiveDNS::Zone::Snapshot]
|
61
|
-
# @raise [GandiV5::Error::GandiError] if Gandi returns an error.
|
62
|
-
def self.fetch(zone_uuid, snapshot_uuid)
|
63
|
-
_response, data = GandiV5.get url(zone_uuid, snapshot_uuid)
|
64
|
-
from_gandi data
|
65
|
-
end
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def url
|
70
|
-
"#{BASE}zones/#{CGI.escape zone_uuid}/snapshots/#{CGI.escape uuid}"
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.url(zone_uuid, snapshot_uuid = nil)
|
74
|
-
"#{BASE}zones/#{CGI.escape zone_uuid}/snapshots" +
|
75
|
-
(snapshot_uuid ? "/#{CGI.escape snapshot_uuid}" : '')
|
76
|
-
end
|
77
|
-
private_class_method :url
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
describe 'Domain features' do
|
4
|
-
it 'List domains', :vcr do
|
5
|
-
list = GandiV5.domains
|
6
|
-
|
7
|
-
expect(list.count).to eq 1
|
8
|
-
expect(list.first.fqdn).to eq 'example.net'
|
9
|
-
expect(list.first.fqdn_unicode).to eq 'example.net'
|
10
|
-
expect(list.first.name_servers).to eq []
|
11
|
-
expect(list.first.services).to be nil
|
12
|
-
expect(list.first.sharing_space).to be nil
|
13
|
-
expect(list.first.status).to match_array [:clientTransferProhibited]
|
14
|
-
expect(list.first.tld).to eq 'net'
|
15
|
-
expect(list.first.dates.registry_created_at).to eq Time.new(2019, 2, 13, 10, 4, 18)
|
16
|
-
expect(list.first.dates.updated_at).to eq Time.new(2019, 2, 25, 16, 20, 49)
|
17
|
-
expect(list.first.dates.authinfo_expires_at).to be nil
|
18
|
-
expect(list.first.dates.created_at).to eq Time.new(2019, 2, 13, 11, 4, 18)
|
19
|
-
expect(list.first.dates.deletes_at).to be nil
|
20
|
-
expect(list.first.dates.hold_begins_at).to be nil
|
21
|
-
expect(list.first.dates.hold_ends_at).to be nil
|
22
|
-
expect(list.first.dates.pending_delete_ends_at).to be nil
|
23
|
-
expect(list.first.dates.registry_ends_at).to eq Time.new(2021, 2, 13, 10, 4, 18)
|
24
|
-
expect(list.first.dates.renew_begins_at).to be nil
|
25
|
-
expect(list.first.dates.restore_ends_at).to be nil
|
26
|
-
expect(list.first.can_tld_lock).to be nil
|
27
|
-
expect(list.first.auto_renew.dates).to be nil
|
28
|
-
expect(list.first.auto_renew.duration).to be nil
|
29
|
-
expect(list.first.auto_renew.enabled).to be false
|
30
|
-
expect(list.first.auto_renew.org_id).to be nil
|
31
|
-
expect(list.first.auth_info).to be nil
|
32
|
-
expect(list.first.uuid).to eq 'ba1167be-2f76-11e9-9dfb-00163ec4cb00'
|
33
|
-
expect(list.first.sharing_uuid).to be nil
|
34
|
-
expect(list.first.tags).to match_array []
|
35
|
-
expect(list.first.trustee_roles).to be nil
|
36
|
-
expect(list.first.owner).to eq 'alice_doe'
|
37
|
-
expect(list.first.organisation_owner).to eq 'alice_doe'
|
38
|
-
expect(list.first.domain_owner).to eq 'Alice Doe'
|
39
|
-
expect(list.first.name_server).to be :livedns
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'Renew domain', :vcr do
|
43
|
-
expect(GandiV5::Domain.fetch('example.net').renew_for(2)).to eq 'Domain renewed.'
|
44
|
-
end
|
45
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
describe 'LiveDNS Zone features' do
|
4
|
-
it 'List zones', :vcr do
|
5
|
-
list = GandiV5::LiveDNS::Zone.list
|
6
|
-
|
7
|
-
expect(list.count).to eq 1
|
8
|
-
expect(list.first.uuid).to eq 'uuid-of-zone'
|
9
|
-
expect(list.first.name).to eq 'Zone Name'
|
10
|
-
expect(list.first.sharing_uuid).to be nil
|
11
|
-
expect(list.first.soa_retry).to eq 3_600
|
12
|
-
expect(list.first.soa_minimum).to eq 10_800
|
13
|
-
expect(list.first.soa_refresh).to eq 10_800
|
14
|
-
expect(list.first.soa_expire).to eq 604_800
|
15
|
-
expect(list.first.soa_serial).to eq 1_432_798_405
|
16
|
-
expect(list.first.soa_email).to eq 'hostmaster.gandi.net.'
|
17
|
-
expect(list.first.soa_primary_ns).to eq 'a.dns.gandi.net.'
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'Save zone to file', :vcr do
|
21
|
-
zone = GandiV5::LiveDNS::Zone.new uuid: 'zone-uuid'
|
22
|
-
expect(File).to receive(:write).with('/path/to/file', "Contents of zone file.\n")
|
23
|
-
|
24
|
-
File.write '/path/to/file', zone.fetch_zone_lines
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'Make and save snapshot', :vcr do
|
28
|
-
hash = {
|
29
|
-
uuid: 'snapshot-uuid',
|
30
|
-
zone_uuid: 'zone-uuid',
|
31
|
-
created_at: Time.new(2016, 12, 16, 16, 51, 26),
|
32
|
-
records: [
|
33
|
-
type: 'A',
|
34
|
-
ttl: 10_800,
|
35
|
-
name: 'www',
|
36
|
-
values: ['10.0.1.42']
|
37
|
-
]
|
38
|
-
}
|
39
|
-
|
40
|
-
zone = GandiV5::LiveDNS::Zone.new uuid: 'zone-uuid'
|
41
|
-
snapshot = zone.take_snapshot
|
42
|
-
expect(snapshot.to_h).to eq hash
|
43
|
-
end
|
44
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
describe 'Mailbox features' do
|
4
|
-
it 'List mailboxes', :vcr do
|
5
|
-
list = GandiV5::Email::Mailbox.list 'example.net'
|
6
|
-
|
7
|
-
expect(list.count).to eq 1
|
8
|
-
expect(list.first.login).to eq 'alice'
|
9
|
-
expect(list.first.fqdn).to eq 'example.net'
|
10
|
-
expect(list.first.address).to eq 'alice@example.net'
|
11
|
-
expect(list.first.uuid).to eq '066743e5-96e4-4a1d-9195-8b8a700a8a79'
|
12
|
-
expect(list.first.type).to be :standard
|
13
|
-
expect(list.first.quota_used).to eq 1_200
|
14
|
-
expect(list.first.aliases).to be nil
|
15
|
-
expect(list.first.fallback_email).to be nil
|
16
|
-
expect(list.first.responder).to be nil
|
17
|
-
end
|
18
|
-
end
|
@@ -1,55 +0,0 @@
|
|
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
|
-
Host:
|
15
|
-
- api.gandi.net
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- application/json; charset=utf-8
|
23
|
-
body:
|
24
|
-
encoding: UTF-8
|
25
|
-
string: |-
|
26
|
-
[
|
27
|
-
{
|
28
|
-
"status": [
|
29
|
-
"clientTransferProhibited"
|
30
|
-
],
|
31
|
-
"dates": {
|
32
|
-
"created_at": "2019-02-13T11:04:18Z",
|
33
|
-
"registry_created_at": "2019-02-13T10:04:18Z",
|
34
|
-
"registry_ends_at": "2021-02-13T10:04:18Z",
|
35
|
-
"updated_at": "2019-02-25T16:20:49Z"
|
36
|
-
},
|
37
|
-
"tags": [],
|
38
|
-
"fqdn": "example.net",
|
39
|
-
"id": "ba1167be-2f76-11e9-9dfb-00163ec4cb00",
|
40
|
-
"autorenew": false,
|
41
|
-
"tld": "net",
|
42
|
-
"owner": "alice_doe",
|
43
|
-
"orga_owner": "alice_doe",
|
44
|
-
"domain_owner": "Alice Doe",
|
45
|
-
"nameserver": {
|
46
|
-
"current": "livedns"
|
47
|
-
},
|
48
|
-
"href": "https://api.test/v5/domain/domains/example.net",
|
49
|
-
"fqdn_unicode": "example.net",
|
50
|
-
"nameservers": []
|
51
|
-
}
|
52
|
-
]
|
53
|
-
http_version:
|
54
|
-
recorded_at: Thu, 30 May 2019 06:22:02 GMT
|
55
|
-
recorded_with: VCR 4.0.0
|