From 1e2f73947c714cf1a5d7cb8613ba32f79d74de59 Mon Sep 17 00:00:00 2001 From: Moul <moul@moul.re> Date: Fri, 26 May 2023 17:33:01 +0200 Subject: [PATCH] bma.wot: Support new optimized '?pubkey' query (#201) on requirements, certifiers-of, and certified-by New optional pubkey argument to keep backward compatibility --- duniterpy/api/bma/wot.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/duniterpy/api/bma/wot.py b/duniterpy/api/bma/wot.py index e899aa4..9adc777 100644 --- a/duniterpy/api/bma/wot.py +++ b/duniterpy/api/bma/wot.py @@ -279,26 +279,34 @@ def lookup(client: Client, search: str) -> dict: return client.get(f"{MODULE}/lookup/{search}", schema=LOOKUP_SCHEMA) -def certifiers_of(client: Client, search: str) -> dict: +def certifiers_of(client: Client, search: str, pubkey: bool = False) -> dict: """ GET UID/Public key certifiers :param client: Client to connect to the api :param search: UID or public key + :param pubkey: Query argument for passing a public key for quicker response :return: """ - return client.get(f"{MODULE}/certifiers-of/{search}", schema=CERTIFICATIONS_SCHEMA) + pubkey_query = "?pubkey" if pubkey else "" + return client.get( + f"{MODULE}/certifiers-of/{search}{pubkey_query}", schema=CERTIFICATIONS_SCHEMA + ) -def certified_by(client: Client, search: str) -> dict: +def certified_by(client: Client, search: str, pubkey: bool = False) -> dict: """ GET identities certified by UID/Public key :param client: Client to connect to the api :param search: UID or public key + :param pubkey: Query argument for passing a public key for quicker response :return: """ - return client.get(f"{MODULE}/certified-by/{search}", schema=CERTIFICATIONS_SCHEMA) + pubkey_query = "?pubkey" if pubkey else "" + return client.get( + f"{MODULE}/certified-by/{search}{pubkey_query}", schema=CERTIFICATIONS_SCHEMA + ) def members(client: Client) -> dict: @@ -311,15 +319,19 @@ def members(client: Client) -> dict: return client.get(f"{MODULE}/members", schema=MEMBERS_SCHEMA) -def requirements(client: Client, search: str) -> dict: +def requirements(client: Client, search: str, pubkey: bool = False) -> dict: """ GET list of requirements for a given UID/Public key :param client: Client to connect to the api :param search: UID or public key + :param pubkey: Query argument for passing a public key for quicker response :return: """ - return client.get(f"{MODULE}/requirements/{search}", schema=REQUIREMENTS_SCHEMA) + pubkey_query = "?pubkey" if pubkey else "" + return client.get( + f"{MODULE}/requirements/{search}{pubkey_query}", schema=REQUIREMENTS_SCHEMA + ) def requirements_of_pending(client: Client, minsig: int) -> dict: -- GitLab