class Dnsruby::Resolv
NOTE! Beware, there is a Ruby library class named Resolv
, and you may need to explicitly specify Dnsruby::Resolv
to use the Dnsruby
Resolv
class, even if you have include'd Dnsruby
.
Constants
- ADDRESS_REGEX
Address RegExp to use for matching IP addresses
Public Class Methods
Iterates over all IP addresses for name
# File lib/dnsruby/resolv.rb, line 38 def self.each_address(name, &block) instance.each_address(name, &block) end
Iterates over all hostnames of address
# File lib/dnsruby/resolv.rb, line 53 def self.each_name(address, &proc) instance.each_name(address, &proc) end
Looks up the first IP address for name
# File lib/dnsruby/resolv.rb, line 28 def self.getaddress(name) instance.getaddress(name) end
Looks up all IP addresses for name
# File lib/dnsruby/resolv.rb, line 33 def self.getaddresses(name) instance.getaddresses(name) end
Looks up the first hostname of address
# File lib/dnsruby/resolv.rb, line 43 def self.getname(address) instance.getname(address) end
Looks up all hostnames of address
# File lib/dnsruby/resolv.rb, line 48 def self.getnames(address) instance.getnames(address) end
Some class methods require the use of an instance to compute their result. For this purpose we create a single instance that can be reused.
# File lib/dnsruby/resolv.rb, line 20 def self.instance @instance ||= self.new end
Creates a new Resolv
using resolvers
# File lib/dnsruby/resolv.rb, line 61 def initialize(resolvers=[Hosts.new, DNS.new]) @resolvers = resolvers end
Public Instance Methods
Iterates over all IP addresses for name
# File lib/dnsruby/resolv.rb, line 87 def each_address(name) getaddresses(name).each { |address| yield(address)} end
Iterates over all hostnames of address
# File lib/dnsruby/resolv.rb, line 112 def each_name(address) getnames(address).each { |address| yield(address) } end
Looks up the first IP address for name
# File lib/dnsruby/resolv.rb, line 66 def getaddress(name) addresses = getaddresses(name) if addresses.empty? raise ResolvError.new("no address for #{name}") else addresses.first end end
Looks up all IP addresses for name
# File lib/dnsruby/resolv.rb, line 76 def getaddresses(name) return [name] if ADDRESS_REGEX.match(name) @resolvers.each do |resolver| addresses = [] resolver.each_address(name) { |address| addresses << address } return addresses unless addresses.empty? end [] end
Looks up the first hostname of address
# File lib/dnsruby/resolv.rb, line 92 def getname(address) names = getnames(address) if names.empty? raise ResolvError.new("no name for #{address}") else names.first end end
Looks up all hostnames of address
# File lib/dnsruby/resolv.rb, line 102 def getnames(address) @resolvers.each do |resolver| names = [] resolver.each_name(address) { |name| names << name } return names unless names.empty? end [] end