From 64cd696afa6f5ff509ca85b488f4327575151d0f Mon Sep 17 00:00:00 2001 From: Vincent Texier <vit@free.fr> Date: Sun, 29 Nov 2020 19:06:13 +0100 Subject: [PATCH] [enh] #140 remove asyncio and aiohttp in examples except for the request_data_async.py example --- examples/listen_ws2p.py | 49 +++++++++++--------------- examples/request_available_nodes.py | 15 +++----- examples/request_data.py | 25 +++++-------- examples/request_data_async.py | 11 +++--- examples/request_data_elasticsearch.py | 21 ++++------- examples/request_data_graphql.py | 14 +++----- examples/request_web_socket_block.py | 24 ++++--------- examples/request_ws2p.py | 41 ++++++++------------- examples/save_revoke_document.py | 22 +++++------- examples/send_certification.py | 28 ++++++--------- examples/send_identity.py | 21 +++++------ examples/send_membership.py | 23 +++++------- examples/send_transaction.py | 23 +++++------- 13 files changed, 115 insertions(+), 202 deletions(-) diff --git a/examples/listen_ws2p.py b/examples/listen_ws2p.py index 9ef2f464..6a8c4f24 100644 --- a/examples/listen_ws2p.py +++ b/examples/listen_ws2p.py @@ -15,13 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import json import sys - -from _socket import gaierror - -import aiohttp import jsonschema from jsonschema import ValidationError @@ -42,7 +37,7 @@ CURRENCY = "g1-test" ################################################ -async def main(): +def main(): """ Main code """ @@ -63,7 +58,7 @@ async def main(): # Create Client from endpoint string in Duniter format try: - ws2p_endpoint = await generate_ws2p_endpoint(BMAS_ENDPOINT) + ws2p_endpoint = generate_ws2p_endpoint(BMAS_ENDPOINT) except ValueError as e: print(e) return @@ -71,7 +66,7 @@ async def main(): try: # Create a Web Socket connection - ws = await client.connect_ws() + ws = client.connect_ws() print("Successfully connected to the web socket endpoint") @@ -79,7 +74,7 @@ async def main(): try: # Resolve handshake print("Handshake...") - await handshake(ws, signing_key, CURRENCY) + handshake(ws, signing_key, CURRENCY) except ValidationError as exception: print(exception.message) print("HANDSHAKE FAILED !") @@ -87,27 +82,23 @@ async def main(): print("Handshake ok") - loop = True - # Iterate on each message received... - while loop: - print("Waiting message...") - # Wait and capture next message - data = await ws.receive_json() - print("Message received:") - print(json.dumps(data, indent=2)) - - # Close session - await client.close() - - except (aiohttp.WSServerHandshakeError, ValueError) as e: - print("Websocket handshake {0} : {1}".format(type(e).__name__, str(e))) - except (aiohttp.ClientError, gaierror, TimeoutError) as e: - print("{0} : {1}".format(str(e), ws2p_endpoint.inline())) + try: + loop = True + # Iterate on each message received... + while loop: + print("Waiting message, press CTRL-C to stop...") + # Wait and capture next message + data = ws.receive_json() + print("Message received:") + print(json.dumps(data, indent=2)) + except KeyboardInterrupt: + # close the websocket connection + ws.close() + print("Connection closed.") + except jsonschema.ValidationError as e: print("{:}:{:}".format(str(e.__class__.__name__), str(e))) - await client.close() -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_available_nodes.py b/examples/request_available_nodes.py index 1b9a208e..e4a394bd 100644 --- a/examples/request_available_nodes.py +++ b/examples/request_available_nodes.py @@ -15,8 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio - from duniterpy.helpers import network from duniterpy.api.client import Client @@ -26,20 +24,19 @@ from duniterpy.api.client import Client # or the simple definition : [NAME_OF_THE_API] [DOMAIN] [PORT] [PATH] # Here we use the secure BASIC_MERKLED_API (BMAS) BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443" -BMAS_ENDPOINT = "BMAS g1.duniter.org 443" ################################################ -async def main(): +def main(): """ Main code """ # Create Client from endpoint string in Duniter format client = Client(BMAS_ENDPOINT) - groups = await network.get_available_nodes(client) + groups = network.get_available_nodes(client) for group in groups: block = group[0]["head"].blockstamp print(f"block {block} shared by {len(group)} nodes") @@ -50,10 +47,6 @@ async def main(): for endpoint in node["endpoints"]: print(endpoint) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_data.py b/examples/request_data.py index 05e3fd94..f86b7a45 100644 --- a/examples/request_data.py +++ b/examples/request_data.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio from duniterpy.api.client import Client, RESPONSE_HTTP from duniterpy.api import bma @@ -30,7 +29,7 @@ BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443" ################################################ -async def main(): +def main(): """ Main code (synchronous requests) """ @@ -39,22 +38,22 @@ async def main(): # Get the node summary infos by dedicated method (with json schema validation) print("\nCall bma.node.summary:") - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # Get the money parameters located in the first block print("\nCall bma.blockchain.parameters:") - response = await client(bma.blockchain.parameters) + response = client(bma.blockchain.parameters) print(response) # Get the current block print("\nCall bma.blockchain.current:") - response = await client(bma.blockchain.current) + response = client(bma.blockchain.current) print(response) # Get the block number 10 print("\nCall bma.blockchain.block(10):") - response = await client(bma.blockchain.block, 10) + response = client(bma.blockchain.block, 10) print(response) # jsonschema validator @@ -75,16 +74,10 @@ async def main(): } # Get the node summary infos (direct REST GET request) - print("\nCall direct get on node/summary") - response = await client.get( - "node/summary", rtype=RESPONSE_HTTP, schema=summary_schema - ) + print("\nReturn http.client.HTTPResponse object from node/summary request") + response = client.get("node/summary", rtype=RESPONSE_HTTP, schema=summary_schema) print(response) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_data_async.py b/examples/request_data_async.py index b8743641..0939f039 100644 --- a/examples/request_data_async.py +++ b/examples/request_data_async.py @@ -35,6 +35,10 @@ async def print_response(request): print(await request) +async def coroutine(function, *args, **kwargs): + return function(*args, **kwargs) + + async def main(): """ Main code (asynchronous requests) @@ -52,12 +56,12 @@ async def main(): # Get the node summary infos by dedicated method (with json schema validation) print("\nCall bma.node.summary:") - task = asyncio.ensure_future(client(bma.node.summary)) + task = asyncio.ensure_future(coroutine(client, bma.node.summary)) tasks.append(task) # Get the money parameters located in the first block print("\nCall bma.blockchain.parameters:") - task = asyncio.ensure_future(client(bma.blockchain.parameters)) + task = asyncio.ensure_future(coroutine(client, bma.blockchain.parameters)) tasks.append(task) responses = await asyncio.gather(*tasks) @@ -65,9 +69,6 @@ async def main(): print("\nResponses:") print(responses) - # Close client aiohttp session - await client.close() - # Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. # ( https://docs.python.org/3/library/asyncio.html ) diff --git a/examples/request_data_elasticsearch.py b/examples/request_data_elasticsearch.py index 444edaa9..3e247d7a 100644 --- a/examples/request_data_elasticsearch.py +++ b/examples/request_data_elasticsearch.py @@ -15,8 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio - from duniterpy.api.client import Client # Duniter4j ES API documentation: https://git.duniter.org/clients/java/duniter4j/blob/master/src/site/markdown/ES_API.md @@ -34,7 +32,7 @@ ES_USER_ENDPOINT = "ES_USER_API g1-test.data.duniter.fr 443" ################################################ -async def main(): +def main(): """ Main code (synchronous requests) """ @@ -43,19 +41,16 @@ async def main(): # Get the current node (direct REST GET request) print("\nGET g1-test/block/current/_source:") - response = await client.get("g1-test/block/current/_source") + response = client.get("g1-test/block/current/_source") print(response) # Get the node number 2 with only selected fields (direct REST GET request) print("\nGET g1-test/block/2/_source:") - response = await client.get( + response = client.get( "g1-test/block/2/_source", {"_source": "number,hash,dividend,membersCount"} ) print(response) - # Close client aiohttp session - await client.close() - # Create Client from endpoint string in Duniter format client = Client(ES_USER_ENDPOINT) @@ -64,13 +59,9 @@ async def main(): # Get the profil of a public key (direct REST GET request) print("\nGET user/profile/{0}/_source:".format(pubkey)) - response = await client.get("user/profile/{0}/_source".format(pubkey.strip(" \n"))) + response = client.get("user/profile/{0}/_source".format(pubkey.strip(" \n"))) print(response) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_data_graphql.py b/examples/request_data_graphql.py index 9c3946d3..e9fa5f1f 100644 --- a/examples/request_data_graphql.py +++ b/examples/request_data_graphql.py @@ -16,13 +16,13 @@ GVA_ENDPOINT = "GVA S g1.librelois.fr 443 gva" ################################################ -async def main(): +def main(): client = Client(GVA_ENDPOINT) # get query to get schema from api query = get_introspection_query(False) # get schema from api - response = await client.query(query) + response = client.query(query) # convert response dict to schema schema = build_client_schema(response["data"]) @@ -48,16 +48,12 @@ async def main(): sys.exit(1) # send valid query to api - response = await client.query(query) + response = client.query(query) if isinstance(response, str): print(response) else: print(json.dumps(response, indent=2)) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_web_socket_block.py b/examples/request_web_socket_block.py index 6b76a390..d52aba94 100644 --- a/examples/request_web_socket_block.py +++ b/examples/request_web_socket_block.py @@ -15,11 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import json -from _socket import gaierror -import aiohttp import jsonschema from duniterpy.api import bma @@ -36,7 +33,7 @@ BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443" ################################################ -async def main(): +def main(): """ Main code """ @@ -44,8 +41,8 @@ async def main(): client = Client(BMAS_ENDPOINT) try: - # Create Web Socket connection on block path (async method) - ws = await client(bma.ws.block) # Type: WSConnection + # Create Web Socket connection on block path (method) + ws = client(bma.ws.block) # Type: WSConnection print("Connected successfully to web socket block path") @@ -54,23 +51,14 @@ async def main(): while loop: print("Waiting message...") # Wait and capture next message - data = await ws.receive_json() + data = ws.receive_json() jsonschema.validate(data, bma.ws.WS_BLOCK_SCHEMA) print("Message received:") print(json.dumps(data, indent=2)) - # Close session - await client.close() - - except (aiohttp.WSServerHandshakeError, ValueError) as e: - print("Websocket block {0} : {1}".format(type(e).__name__, str(e))) - except (aiohttp.ClientError, gaierror, TimeoutError) as e: - print("{0} : {1}".format(str(e), BMAS_ENDPOINT)) except jsonschema.ValidationError as e: print("{:}:{:}".format(str(e.__class__.__name__), str(e))) - await client.close() -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/request_ws2p.py b/examples/request_ws2p.py index 14747b32..73c441b0 100644 --- a/examples/request_ws2p.py +++ b/examples/request_ws2p.py @@ -15,14 +15,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import json import time import sys -from _socket import gaierror - -import aiohttp import jsonschema from jsonschema import ValidationError from typing import Any @@ -46,7 +42,7 @@ CURRENCY = "g1-test" ################################################ -async def send(ws: WSConnection, request: str, request_id: str, schema: dict) -> Any: +def send(ws: WSConnection, request: str, request_id: str, schema: dict) -> Any: """ Send a WS2P request @@ -57,14 +53,14 @@ async def send(ws: WSConnection, request: str, request_id: str, schema: dict) -> :param schema: Validation schema """ # Send request - await ws.send_str(request) + ws.send_str(request) # Wait response with request id - response = await ws.receive_json() + response = ws.receive_json() while "resId" not in response or ( "resId" in response and response["resId"] != request_id ): - response = await ws.receive_json() + response = ws.receive_json() time.sleep(1) try: # Check response format @@ -83,7 +79,7 @@ async def send(ws: WSConnection, request: str, request_id: str, schema: dict) -> return response -async def main(): +def main(): """ Main code """ @@ -104,7 +100,7 @@ async def main(): # Create Client from endpoint string in Duniter format try: - ws2p_endpoint = await generate_ws2p_endpoint(BMAS_ENDPOINT) + ws2p_endpoint = generate_ws2p_endpoint(BMAS_ENDPOINT) except ValueError as e: print(e) return @@ -112,13 +108,13 @@ async def main(): try: # Create a Web Socket connection - ws = await client.connect_ws() + ws = client.connect_ws() print("Successfully connected to the web socket endpoint") # HANDSHAKE ####################################################### try: - await handshake(ws, signing_key, CURRENCY) + handshake(ws, signing_key, CURRENCY) except ValidationError as exception: print(exception.message) print("HANDSHAKE FAILED !") @@ -127,7 +123,7 @@ async def main(): # Send ws2p request print("Send getCurrent() request") request_id = get_ws2p_challenge()[:8] - response = await send( + response = send( ws, requests.get_current(request_id), request_id, @@ -138,7 +134,7 @@ async def main(): # Send ws2p request print("Send getBlock(30000) request") request_id = get_ws2p_challenge()[:8] - response = await send( + response = send( ws, requests.get_block(request_id, 30000), request_id, @@ -149,7 +145,7 @@ async def main(): # Send ws2p request print("Send getBlocks(30000, 2) request") request_id = get_ws2p_challenge()[:8] - response = await send( + response = send( ws, requests.get_blocks(request_id, 30000, 2), request_id, @@ -160,7 +156,7 @@ async def main(): # Send ws2p request print("Send getRequirementsPending(3) request") request_id = get_ws2p_challenge()[:8] - response = await send( + response = send( ws, requests.get_requirements_pending(request_id, 3), request_id, @@ -168,18 +164,9 @@ async def main(): ) print("Response: " + json.dumps(response, indent=2)) - # Close session - await client.close() - - except (aiohttp.WSServerHandshakeError, ValueError) as e: - print("Websocket handshake {0} : {1}".format(type(e).__name__, str(e))) - except (aiohttp.ClientError, gaierror, TimeoutError) as e: - print("{0} : {1}".format(str(e), ws2p_endpoint.inline())) except jsonschema.ValidationError as e: print("{:}:{:}".format(str(e.__class__.__name__), str(e))) - await client.close() -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/save_revoke_document.py b/examples/save_revoke_document.py index 1b63bfb1..6bd3b9e8 100644 --- a/examples/save_revoke_document.py +++ b/examples/save_revoke_document.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import getpass import os import sys @@ -56,7 +55,7 @@ PROTOCOL_VERSION = 10 ################################################ -async def get_identity_document( +def get_identity_document( client: Client, current_block: dict, pubkey: str ) -> Optional[Identity]: """ @@ -69,7 +68,7 @@ async def get_identity_document( :rtype: Identity """ # Here we request for the path wot/lookup/pubkey - lookup_data = await client(bma.wot.lookup, pubkey) + lookup_data = client(bma.wot.lookup, pubkey) identity = None # parse results @@ -115,7 +114,7 @@ def get_signed_raw_revocation_document( return revocation.signed_raw() -async def main(): +def main(): """ Main code """ @@ -123,7 +122,7 @@ async def main(): client = Client(BMAS_ENDPOINT) # Get the node summary infos to test the connection - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # prompt hidden user entry @@ -144,14 +143,13 @@ async def main(): sys.exit(0) # capture current block to get currency name - current_block = await client(bma.blockchain.current) + current_block = client(bma.blockchain.current) # create our Identity document to sign the Certification document - identity = await get_identity_document(client, current_block, pubkey) + identity = get_identity_document(client, current_block, pubkey) if identity is None: print("Identity not found for pubkey {0}".format(pubkey)) # Close client aiohttp session - await client.close() sys.exit(1) # get the revoke document @@ -167,10 +165,6 @@ async def main(): # document saved print("Revocation document saved in %s" % REVOCATION_DOCUMENT_FILE_PATH) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/send_certification.py b/examples/send_certification.py index 5569e4f0..0d50c041 100644 --- a/examples/send_certification.py +++ b/examples/send_certification.py @@ -16,7 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. """ import sys -import asyncio import getpass from typing import Optional @@ -36,7 +35,7 @@ BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443" ################################################ -async def get_identity_document( +def get_identity_document( client: Client, current_block: dict, pubkey: str ) -> Optional[Identity]: """ @@ -49,7 +48,7 @@ async def get_identity_document( :rtype: Identity """ # Here we request for the path wot/lookup/pubkey - lookup_data = await client(bma.wot.lookup, pubkey) + lookup_data = client(bma.wot.lookup, pubkey) identity = None # parse results @@ -99,7 +98,7 @@ def get_certification_document( ) -async def main(): +def main(): """ Main code """ @@ -107,7 +106,7 @@ async def main(): client = Client(BMAS_ENDPOINT) # Get the node summary infos to test the connection - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # prompt hidden user entry @@ -124,14 +123,13 @@ async def main(): pubkey_to = input("Enter certified pubkey: ") # capture current block to get version and currency and blockstamp - current_block = await client(bma.blockchain.current) + current_block = client(bma.blockchain.current) # create our Identity document to sign the Certification document - identity = await get_identity_document(client, current_block, pubkey_to) + identity = get_identity_document(client, current_block, pubkey_to) if identity is None: print("Identity not found for pubkey {0}".format(pubkey_to)) # Close client aiohttp session - await client.close() sys.exit(1) # send the Certification document to the node @@ -141,17 +139,13 @@ async def main(): certification.sign([key]) # Here we request for the path wot/certify - response = await client(bma.wot.certify, certification.signed_raw()) + response = client(bma.wot.certify, certification.signed_raw()) if response.status == 200: - print(await response.text()) + print(response.read()) else: - print("Error while publishing certification: {0}".format(await response.text())) + print("Error while publishing certification: {0}".format(response.read())) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/send_identity.py b/examples/send_identity.py index 68bcd4d5..b805e85b 100644 --- a/examples/send_identity.py +++ b/examples/send_identity.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import getpass from duniterpy.api import bma @@ -68,7 +67,7 @@ def get_identity_document( return identity -async def main(): +def main(): """ Main code """ @@ -76,11 +75,11 @@ async def main(): client = Client(BMAS_ENDPOINT) # Get the node summary infos to test the connection - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # capture current block to get version and currency and blockstamp - current_block = await client(bma.blockchain.current) + current_block = client(bma.blockchain.current) # prompt entry uid = input("Enter your Unique IDentifier (pseudonym): ") @@ -98,16 +97,12 @@ async def main(): identity = get_identity_document(current_block, uid, key) # send the identity signed raw document to the node - response = await client(bma.wot.add, identity.signed_raw()) + response = client(bma.wot.add, identity.signed_raw()) if response.status == 200: - print(await response.text()) + print(response.read()) else: - print("Error while publishing identity : {0}".format(await response.text())) + print("Error while publishing identity : {0}".format(response.read())) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/send_membership.py b/examples/send_membership.py index acfb79ef..649447b1 100644 --- a/examples/send_membership.py +++ b/examples/send_membership.py @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ -import asyncio import getpass from duniterpy.api import bma @@ -75,7 +74,7 @@ def get_membership_document( return membership -async def main(): +def main(): """ Main code """ @@ -83,11 +82,11 @@ async def main(): client = Client(BMAS_ENDPOINT) # Get the node summary infos by dedicated method (with json schema validation) - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # capture current block to get version and currency and blockstamp - current_block = await client(bma.blockchain.current) + current_block = client(bma.blockchain.current) # prompt hidden user entry salt = getpass.getpass("Enter your passphrase (salt): ") @@ -100,24 +99,20 @@ async def main(): # Look for identities on the network, take the first result since the # lookup was done with a pubkey, which should correspond to the first identity - identities = await client(bma.wot.lookup, key.pubkey) + identities = client(bma.wot.lookup, key.pubkey) identity = identities["results"][0] # create a membership demand document membership = get_membership_document("IN", current_block, identity, key) # send the membership signed raw document to the node - response = await client(bma.blockchain.membership, membership.signed_raw()) + response = client(bma.blockchain.membership, membership.signed_raw()) if response.status == 200: - print(await response.text()) + print(response.text()) else: - print("Error while publishing membership : {0}".format(await response.text())) + print("Error while publishing membership : {0}".format(response.text())) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() diff --git a/examples/send_transaction.py b/examples/send_transaction.py index 2928b9b3..f841adcd 100644 --- a/examples/send_transaction.py +++ b/examples/send_transaction.py @@ -16,7 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. """ import sys -import asyncio import getpass from duniterpy.api import bma @@ -106,7 +105,7 @@ def get_transaction_document( return transaction -async def main(): +def main(): """ Main code """ @@ -114,7 +113,7 @@ async def main(): client = Client(BMAS_ENDPOINT) # Get the node summary infos to test the connection - response = await client(bma.node.summary) + response = client(bma.node.summary) print(response) # prompt hidden user entry @@ -131,10 +130,10 @@ async def main(): pubkey_to = input("Enter recipient pubkey: ") # capture current block to get version and currency and blockstamp - current_block = await client(bma.blockchain.current) + current_block = client(bma.blockchain.current) # capture sources of account - response = await client(bma.tx.sources, pubkey_from) + response = client(bma.tx.sources, pubkey_from) if len(response["sources"]) == 0: print("no sources found for account %s" % pubkey_to) @@ -152,17 +151,13 @@ async def main(): transaction.sign([key]) # send the Transaction document to the node - response = await client(bma.tx.process, transaction.signed_raw()) + response = client(bma.tx.process, transaction.signed_raw()) if response.status == 200: - print(await response.text()) + print(response.read()) else: - print("Error while publishing transaction: {0}".format(await response.text())) + print("Error while publishing transaction: {0}".format(response.read())) - # Close client aiohttp session - await client.close() - -# Latest duniter-python-api is asynchronous and you have to use asyncio, an asyncio loop and a "as" on the data. -# ( https://docs.python.org/3/library/asyncio.html ) -asyncio.get_event_loop().run_until_complete(main()) +if __name__ == "__main__": + main() -- GitLab