Sha256: 04233f8680f5eaf0a354426ccb4cbbdfe0c44a1359b622da4d0fabebbd1872eb

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require 'singleton'

module Dnsdeploy
  class Local
    def initialize(records_file_path)
      @records_file_path = records_file_path
    end

    def all_records
      @all_records ||= json.map do |record_set|
        domain = dnsimple_domain(record_set['zone'])
        create_records(domain, record_set['records'])
      end.flatten
    end

    def records(domain)
      all_records.select { |r| r.domain.name == domain.name }
    end

    def domains
      @domains ||= json.map do |record_set|
        domain = dnsimple_domain(record_set['zone'])
      end
    end

    def create_records(domain, json_records)
      json_records.map do |record|
        Record.new(domain: domain, name: record['name'], record_type: record['type'],
          content: record['value'], ttl: record['ttl'], prio: record['prio'])
      end
    end

    def json
      @json ||= JSON.load(@records_file_path.read)
    end

    def dnsimple_domain(zone)
      @dnsimple_domains ||= {}
      @dnsimple_domains[zone] ||= DNSimple::Domain.all.select { |d| d.name == zone }.first
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dnsdeploy-0.0.1 lib/dnsdeploy/local.rb