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

each_address(name, &block) click to toggle source

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
each_name(address, &proc) click to toggle source

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
getaddress(name) click to toggle source

Looks up the first IP address for name

# File lib/dnsruby/resolv.rb, line 28
def self.getaddress(name)
  instance.getaddress(name)
end
getaddresses(name) click to toggle source

Looks up all IP addresses for name

# File lib/dnsruby/resolv.rb, line 33
def self.getaddresses(name)
  instance.getaddresses(name)
end
getname(address) click to toggle source

Looks up the first hostname of address

# File lib/dnsruby/resolv.rb, line 43
def self.getname(address)
  instance.getname(address)
end
getnames(address) click to toggle source

Looks up all hostnames of address

# File lib/dnsruby/resolv.rb, line 48
def self.getnames(address)
  instance.getnames(address)
end
instance() click to toggle source

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
new(resolvers=[Hosts.new, DNS.new]) click to toggle source

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

each_address(name) { |address| ... } click to toggle source

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
each_name(address) { |address| ... } click to toggle source

Iterates over all hostnames of address

# File lib/dnsruby/resolv.rb, line 112
def each_name(address)
  getnames(address).each { |address| yield(address) }
end
getaddress(name) click to toggle source

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
getaddresses(name) click to toggle source

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
getname(address) click to toggle source

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
getnames(address) click to toggle source

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