Skip to content
Snippets Groups Projects
Commit 2fd92deb authored by Vincent Texier's avatar Vincent Texier
Browse files

[enh] #95 add Identity.from_lookup_response() to simplify examples

parent ce59413b
No related branches found
No related tags found
No related merge requests found
......@@ -257,3 +257,36 @@ Timestamp: {timestamp}
identity.signatures = [signature]
return identity
@classmethod
def from_lookup_response(
cls: Type[IdentityType], version: int, currency: str, lookup_response: dict
) -> IdentityType:
"""
Return Identity instance from bma.lookup request response
:param version: Document version
:param currency: Currency codename
:param lookup_response: Lookup request response
:return:
"""
# parse results
pubkey = lookup_response["results"][0]["pubkey"]
uids = lookup_response["results"][0]["uids"]
uid_data = uids[0]
# capture data
timestamp = BlockUID.from_str(uid_data["meta"]["timestamp"])
uid = uid_data["uid"] # type: str
signature = uid_data["self"] # type: str
# return self-certification document
identity = cls(
version=version,
currency=currency,
pubkey=pubkey,
uid=uid,
timestamp=timestamp,
)
identity.signatures = [signature]
return identity
......@@ -19,7 +19,7 @@ from typing import Optional
from duniterpy.api import bma
from duniterpy.api.client import Client
from duniterpy.documents import BlockUID, Identity, Revocation
from duniterpy.documents import Identity, Revocation
from duniterpy.key import SigningKey
if "XDG_CONFIG_HOME" in os.environ:
......@@ -66,30 +66,10 @@ def get_identity_document(
"""
# Here we request for the path wot/lookup/pubkey
lookup_data = client(bma.wot.lookup, pubkey)
identity = None
# parse results
for result in lookup_data["results"]:
if result["pubkey"] == pubkey:
uids = result["uids"]
uid_data = uids[0]
# capture data
timestamp = BlockUID.from_str(uid_data["meta"]["timestamp"])
uid = uid_data["uid"] # type: str
signature = uid_data["self"] # type: str
# return self-certification document
identity = Identity(
version=10,
currency=current_block["currency"],
pubkey=pubkey,
uid=uid,
timestamp=timestamp,
)
identity.signatures = [signature]
break
return identity
return Identity.from_lookup_response(
PROTOCOL_VERSION, current_block["currency"], lookup_data
)
def get_signed_raw_revocation_document(
......
......@@ -29,6 +29,9 @@ from duniterpy.key import SigningKey
# Here we use the secure BASIC_MERKLED_API (BMAS)
BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443"
# Current protocol version
PROTOCOL_VERSION = 10
################################################
......@@ -47,30 +50,10 @@ def get_identity_document(
"""
# Here we request for the path wot/lookup/pubkey
lookup_data = client(bma.wot.lookup, pubkey)
identity = None
# parse results
for result in lookup_data["results"]:
if result["pubkey"] == pubkey:
uids = result["uids"]
uid_data = uids[0]
# capture data
timestamp = BlockUID.from_str(uid_data["meta"]["timestamp"])
uid = uid_data["uid"] # type: str
signature = uid_data["self"] # type: str
# return self-certification document
identity = Identity(
version=10,
currency=current_block["currency"],
pubkey=pubkey,
uid=uid,
timestamp=timestamp,
)
identity.signatures = [signature]
break
return identity
return Identity.from_lookup_response(
PROTOCOL_VERSION, current_block["currency"], lookup_data
)
def get_certification_document(
......@@ -117,7 +100,7 @@ def send_certification():
pubkey_from = key.pubkey
# prompt entry
pubkey_to = input("Enter certified pubkey: ")
pubkey_to = input("Enter pubkey to certify: ")
# capture current block to get version and currency and blockstamp
current_block = client(bma.blockchain.current)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment