Sha256: 4abaeafcc7b4f51843b7b2ab440d350b917944faff20803572c16f2eadf051a3
Contents?: true
Size: 1.16 KB
Versions: 4
Compression:
Stored size: 1.16 KB
Contents
require "dns/zonefile" require "zonesync/record" module Zonesync class Provider < Struct.new(:credentials) def self.from credentials Zonesync.const_get(credentials[:provider]).new(credentials) end def diffable_records zonefile.records.map do |record| Record.from_dns_zonefile_record(record) end.select do |record| %w[A AAAA CNAME MX TXT SPF NAPTR PTR].include?(record.type) end.sort end private def zonefile body = read if body !~ /\sSOA\s/ # insert dummy SOA to trick parser if needed body.sub!(/\n([^$])/, "\n@ 1 SOA example.com example.com ( 2000010101 1 1 1 1 )\n\\1") end DNS::Zonefile.load(body) end def read record raise NotImplementedError end def remove record raise NotImplementedError end def change old_record, new_record raise NotImplementedError end def add record raise NotImplementedError end end require "zonesync/cloudflare" class Memory < Provider def read credentials[:string] end end class Filesystem < Provider def read File.read(credentials[:path]) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
zonesync-0.4.1 | lib/zonesync/provider.rb |
zonesync-0.4.0 | lib/zonesync/provider.rb |
zonesync-0.3.0 | lib/zonesync/provider.rb |
zonesync-0.2.0 | lib/zonesync/provider.rb |