lib/glare/domain.rb in glare-0.1.1 vs lib/glare/domain.rb in glare-0.1.2

- old
+ new

@@ -1,94 +1,10 @@ +require 'glare/domain/zone' +require 'glare/domain/record' + module Glare class Domain - class Zone - def initialize(client, fqdn) - @client = client - @fqdn = fqdn - end - - def records(type) - records = record_search(type) - DnsRecords.new(records) - end - - def id - return @id if @id - zone_search = @client.get('/zones', name: registered_domain) - @id = Result.new(zone_search).first_result_id - end - - private - - def registered_domain - PublicSuffix.parse(@fqdn).domain - end - - def record_search(type) - @client.get("/zones/#{id}/dns_records", name: @fqdn, type: type) - end - end - - class Record - class << self - def register(client, zone, dns_records) - @client = client - existing_records = zone.records(dns_records.first.type) - zone_id = zone.id - - update(zone_id, dns_records, existing_records) - end - - def deregister(client, zone, dns_records) - @client = client - zone_id = zone.id - - delete(zone_id, dns_records) - end - - private - - def delete(zone_id, dns_records) - dns_records.each do |record| - @client.delete("/zones/#{zone_id}/dns_records/#{record.id}") - end - end - - def update(zone_id, dns_records, existing_records) - update_current_records(zone_id, dns_records, existing_records) - delete_uneeded_records(zone_id, dns_records, existing_records) - create_new_records(zone_id, dns_records, existing_records) - end - - def update_current_records(zone_id, dns_records, existing_records) - records_to_update = existing_records.records_to_update(dns_records) - updates = records_to_update.zip(dns_records) - updates.each do |existing_record, dns_record| - @client.put("/zones/#{zone_id}/dns_records/#{existing_record.id}", dns_record.to_h) - end - end - - def delete_uneeded_records(zone_id, dns_records, existing_records) - records_to_delete = existing_records.records_to_delete(dns_records.count) - records_to_delete.each do |record| - @client.delete("/zones/#{zone_id}/dns_records/#{record.id}") - end - end - - def create_new_records(zone_id, dns_records, existing_records) - records_to_create = existing_records.records_to_create(dns_records) - create(zone_id, records_to_create) - end - - def create(zone_id, dns_records) - dns_records.each do |dns_record| - @client.post("/zones/#{zone_id}/dns_records", dns_record.to_h) - end - end - end - end - def initialize(client) @client = client end def register(fqdn, destinations, type) @@ -100,11 +16,11 @@ Record.register(@client, zone, dns_records) end def resolve(fqdn, type) zone = Zone.new(@client, fqdn) - result = zone.records(type) - result.contents + records = zone.records(type) + records.contents end def deregister(fqdn, type) zone = Zone.new(@client, fqdn) dns_records = zone.records(type)