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