-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathresolve_handle.py
More file actions
61 lines (50 loc) · 1.82 KB
/
Copy pathresolve_handle.py
File metadata and controls
61 lines (50 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
"""Example: Resolve a Handle to a DID.
Usage:
uv run python examples/python/wns_examples/resolve_handle.py
"""
import asyncio
from anp.wns import (
HandleNotFoundError,
HandleResolutionError,
HandleValidationError,
normalize_handle,
parse_wba_uri,
resolve_handle,
resolve_handle_from_uri,
validate_handle,
)
async def main():
# 1. Validate and normalise a Handle
handle = "Alice.Example.com"
normalized = normalize_handle(handle)
print(f"Normalized: {handle} → {normalized}")
local_part, domain = validate_handle(normalized)
print(f" local_part = {local_part}")
print(f" domain = {domain}")
# 2. Parse a wba:// URI
uri = "wba://alice.example.com"
parsed = parse_wba_uri(uri)
print(f"\nParsed URI: {parsed.original_uri}")
print(f" handle = {parsed.handle}")
# 3. Resolve a Handle (requires a real Handle Provider)
print(f"\nResolving handle '{normalized}' ...")
try:
doc = await resolve_handle(normalized)
print(f" DID: {doc.did}")
print(f" Status: {doc.status.value}")
print(f" Binding generation: {doc.binding_generation}")
print(f" Updated: {doc.updated}")
except HandleNotFoundError:
print(" Handle not found (expected if no real provider is running)")
except HandleResolutionError as exc:
print(f" Resolution error: {exc}")
# 4. Resolve from a wba:// URI
print(f"\nResolving URI '{uri}' ...")
try:
doc = await resolve_handle_from_uri(uri)
print(f" DID: {doc.did}")
print(f" Binding generation: {doc.binding_generation}")
except (HandleNotFoundError, HandleResolutionError) as exc:
print(f" Could not resolve: {exc}")
if __name__ == "__main__":
asyncio.run(main())