import dns.message
import dns.name
import dns.query

class DNSUtils:
    """ Utilities useful for DNS requests """

    def dns_request(self, domain, ns):
        """ return the ip address of the given domain name from the given nameserver """
        request = dns.message.make_query(domain, dns.rdatatype.A)
        request.flags |= dns.flags.AD
        request.find_rrset(request.additional, dns.name.root, 65535, dns.rdatatype.OPT, create=True, force_unique=True)
        response = dns.query.udp(request, ns)

        for answer in response.answer:
            for item in answer.items:
                return item
