From d428c45191faee0e0c64f1076e5d632fe0c0c1e5 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Tue, 28 Mar 2006 02:01:38 +0000 Subject: [PATCH] add dns.e164.query() --- ChangeLog | 8 ++++++++ dns/e164.py | 20 +++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 79c2e735..746f2964 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-03-27 Bob Halley + + * Added dns.e164.query(). This function can be used to look for + NAPTR RRs for a specified number in several domains, e.g.: + + dns.e164.query('16505551212', + ['e164.dnspython.org.', 'e164.arpa.']) + 2006-03-26 Bob Halley * dns/resolver.py (Resolver.query): The resolver deleted from diff --git a/dns/e164.py b/dns/e164.py index bcc7c473..832db24b 100644 --- a/dns/e164.py +++ b/dns/e164.py @@ -13,7 +13,7 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -"""DNS E.164 Names. +"""DNS E.164 helpers @var public_enum_domain: The DNS public ENUM domain, e164.arpa. @type public_enum_domain: dns.name.Name object @@ -21,6 +21,7 @@ import dns.exception import dns.name +import dns.resolver public_enum_domain = dns.name.from_text('e164.arpa.') @@ -59,3 +60,20 @@ def to_e164(name, origin=public_enum_domain, want_plus_prefix=True): if want_plus_prefix: text = '+' + text return text + +def query(number, domains, resolver=None): + """Look for NAPTR RRs for the specified number in the specified domains. + + e.g. lookup('16505551212', ['e164.dnspython.org.', 'e164.arpa.']) + """ + if resolver is None: + resolver = dns.resolver.get_default_resolver() + for domain in domains: + if isinstance(domain, (str, unicode)): + domain = dns.name.from_text(domain) + qname = dns.e164.from_e164(number, domain) + try: + return dns.resolver.query(qname, 'NAPTR') + except dns.resolver.NXDOMAIN: + pass + raise dns.resolver.NXDOMAIN -- 2.47.3