Sha256: 23da10bd8f4cebdad1c3ce968391c601e93f6eadeee936e36cfe76ab383bfb97
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
require_relative 'contracted_object' require_relative 'route53' module Deputy53 # A DNS Zone class Zone < ContractedObject attr_reader :id Contract String => Zone def initialize(id) @id = id self end Contract None => Route53 def route53 @route53 ||= Route53.new end Contract None => ::Aws::Route53::Types::GetHostedZoneResponse def zone @zone ||= route53.api.get_hosted_zone(id: id).data end Contract None => ArrayOf[String] def name_servers @name_servers ||= zone.delegation_set.name_servers end Contract None => ArrayOf[::Aws::Route53::Types::ResourceRecordSet] def records @records ||= route53.api.list_resource_record_sets(hosted_zone_id: id).resource_record_sets end Contract String => ArrayOf[::Aws::Route53::Types::ResourceRecordSet] def records(type) records.select { |r| r.type == type } end Contract String => Bool def delegating?(name) records('NS').any? { |r| r.name == name } end Contract String => ArrayOf[String] def delegation(name) records('NS') .select { |r| r.name == name } .flat_map(&:resource_records) .map(&:value) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
deputy53-0.13.5 | lib/deputy53/zone.rb |
deputy53-0.13.0 | lib/deputy53/zone.rb |
deputy53-0.6.4 | lib/deputy53/zone.rb |