Class: RecordStore::Provider::DNSimple

Inherits:
RecordStore::Provider show all
Defined in:
lib/record_store/provider/dnsimple.rb

Class Method Summary collapse

Methods inherited from RecordStore::Provider

apply_changeset, build_zone, freezable?, provider_for, record_types, thawable?, to_s

Class Method Details

.add(record, zone) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/record_store/provider/dnsimple.rb', line 10

def add(record, zone)
  record_hash = api_hash(record, zone)
  res = session.create_record(
    zone,
    record_hash.fetch(:name),
    record.type,
    record_hash.fetch(:content),
    ttl: record_hash.fetch(:ttl),
    priority: record_hash.fetch(:prio, nil)
  )

  if record.type == 'ALIAS'
    txt_alias = retrieve_current_records(zone: zone).detect do |rr|
      rr.type == 'TXT' && rr.fqdn == record.fqdn && rr.txtdata == "ALIAS for #{record.alias.chomp('.')}"
    end
    remove(txt_alias, zone)
  end

  res
end

.remove(record, zone) ⇒ Object



31
32
33
# File 'lib/record_store/provider/dnsimple.rb', line 31

def remove(record, zone)
  session.delete_record(zone, record.id)
end

.retrieve_current_records(zone:, stdout: $stdout) ⇒ Object

returns an array of Record objects that match the records which exist in the provider



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/record_store/provider/dnsimple.rb', line 41

def retrieve_current_records(zone:, stdout: $stdout)
  session.list_records(zone).body.map do |record|
    record_body = record.fetch('record')

    begin
      build_from_api(record_body, zone)
    rescue StandardError
      stdout.puts "Cannot build record: #{record_body}"
      raise
    end
  end.select(&:present?)
end

.supports_alias?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/record_store/provider/dnsimple.rb', line 6

def supports_alias?
  true
end

.update(id, record, zone) ⇒ Object



35
36
37
38
# File 'lib/record_store/provider/dnsimple.rb', line 35

def update(id, record, zone)
  record_hash = api_hash(record, zone)
  session.update_record(zone, id, api_hash(record, zone))
end

.zonesObject

Returns an array of the zones managed by provider as strings



55
56
57
# File 'lib/record_store/provider/dnsimple.rb', line 55

def zones
  session.zones.map(&:domain)
end