class DnsServices::Linode
Public Class Methods
new(opts={})
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 7 def initialize(opts={}) @access_token = opts.fetch :access_token end
Public Instance Methods
retrieve_ip(fqdn)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 24 def retrieve_ip(fqdn) record_name, domain_name = split_fqdn fqdn if record = fetch_record(domain_name, record_name) record.target end end
update_ip(fqdn, ip)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 11 def update_ip(fqdn, ip) record_name, domain_name = split_fqdn fqdn if record = fetch_record(domain_name, record_name) response = update_record(record.domainid, record.resourceid, record_name, ip) handle_record_response response, ip else domain = fetch_domain(domain_name) response = create_record(domain.domainid, record_name, ip) handle_record_response response, ip end end
Private Instance Methods
client()
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 34 def client @client ||= ::Linode.new api_key: @access_token end
create_record(domain_id, record_name, ip)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 55 def create_record(domain_id, record_name, ip) client.domain.resource.create DomainId: domain_id, Type: 'A', Name: record_name, Target: ip end
fetch_domain(domain_name)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 43 def fetch_domain(domain_name) domain = client.domain.list.select {|d| d.domain == domain_name}.first end
fetch_record(domain_name, record_name)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 47 def fetch_record(domain_name, record_name) domain = fetch_domain domain_name client .domain .resource.list(DomainId: domain.domainid) .select {|r| r.name == record_name}.first end
handle_record_response(response, ip)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 38 def handle_record_response(response, ip) # Linode API only returns resourceid on success ip if response.resourceid end
update_record(domain_id, record_id, record_name, ip)
click to toggle source
# File lib/dnsign/dns_services/linode.rb, line 59 def update_record(domain_id, record_id, record_name, ip) client.domain.resource.update DomainId: domain_id, ResourceId: record_id, Name: record_name, Target: ip end