diff options
| author | Bob Halley <halley@dnspython.org> | 2020-07-20 06:12:32 -0700 |
|---|---|---|
| committer | Bob Halley <halley@dnspython.org> | 2020-07-20 06:18:43 -0700 |
| commit | 0a1a837e07016f63f88a52afc424a380a264d79e (patch) | |
| tree | 97cb68cbae33a06553d5dea348867f42dd1720f7 /dns | |
| parent | c5ca21f2ddc4d390bebaaca4ba6887268b8c6742 (diff) | |
| download | dnspython-0a1a837e07016f63f88a52afc424a380a264d79e.tar.gz | |
Add canonical_name() to async resolver too.
Diffstat (limited to 'dns')
| -rw-r--r-- | dns/asyncresolver.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/dns/asyncresolver.py b/dns/asyncresolver.py index 3ac334f..0aaeb9c 100644 --- a/dns/asyncresolver.py +++ b/dns/asyncresolver.py @@ -165,6 +165,28 @@ class Resolver(dns.resolver.Resolver): rdclass=dns.rdataclass.IN, *args, **kwargs) + async def canonical_name(self, name): + """Determine the canonical name of *name*. + + The canonical name is the name the resolver uses for queries + after all CNAME and DNAME renamings have been applied. + + *name*, a ``dns.name.Name`` or ``str``, the query name. + + This method can raise any exception that ``resolve()`` can + raise, other than ``dns.resolver.NoAnswer`` and + ``dns.resolver.NXDOMAIN``. + + Returns a ``dns.name.Name``. + """ + try: + answer = await self.resolve(name, raise_on_no_answer=False) + canonical_name = answer.canonical_name + except dns.resolver.NXDOMAIN as e: + canonical_name = e.canonical_name + return canonical_name + + default_resolver = None @@ -212,6 +234,14 @@ async def resolve_address(ipaddr, *args, **kwargs): return await get_default_resolver().resolve_address(ipaddr, *args, **kwargs) +async def canonical_name(name): + """Determine the canonical name of *name*. + + See ``dns.resolver.Resolver.canonical_name`` for more information on the + parameters and possible exceptions. + """ + + return await get_default_resolver().canonical_name(name) async def zone_for_name(name, rdclass=dns.rdataclass.IN, tcp=False, resolver=None, backend=None): |
