gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] 01/09: CLI.


From: gnunet
Subject: [libeufin] 01/09: CLI.
Date: Fri, 20 Jan 2023 16:49:35 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository libeufin.

commit c32c2a00f53adf223b51f2bb2e73a237f3bba7e9
Author: MS <ms@taler.net>
AuthorDate: Fri Jan 20 14:23:55 2023 +0100

    CLI.
    
    Adding the command to call "GET /cashouts" and
    remove any status code check from tell_user().
---
 cli/bin/libeufin-cli | 149 ++++++++++++++++++++++++++++++++-------------------
 1 file changed, 95 insertions(+), 54 deletions(-)

diff --git a/cli/bin/libeufin-cli b/cli/bin/libeufin-cli
index de5377f4..8fd3a7e4 100755
--- a/cli/bin/libeufin-cli
+++ b/cli/bin/libeufin-cli
@@ -25,6 +25,14 @@ def maybe_auth(sandbox_ctx):
         )
     return dict()
 
+
+# Gets the account name to use in a request.  It gives
+# precedence to the account name passed along the CLI options,
+# and falls back to the account name found in the environment.
+# It returns None if no account was found, or that was 'admin'.
+# Admin is excluded because it isn't modeled like ordinary
+# customers and would therefore very likely hit != 2xx response
+# statuses.
 def get_account_name(accountNameCli, usernameEnv):
     maybeUsername = accountNameCli
     if not maybeUsername:
@@ -45,14 +53,9 @@ def check_response_status(resp, expected_status_code=200):
         print("Response: {}".format(resp.text), file=sys.stderr)
         sys.exit(1)
 
-# Prints unexpected responses without exiting
-# and optionally prints expected respones.
-def tell_user(resp, expected_status_code=200, withsuccess=False):
-    if resp.status_code != expected_status_code:
-        print(resp.content.decode("utf-8"), file=sys.stderr)
-        return
-    if withsuccess:
-        print(resp.content.decode("utf-8"))
+# Prints the response body.
+def tell_user(resp):
+    print(resp.content.decode("utf-8"))
 
 # Normalize the two components to "x/" and "y" and pass them
 # to urljoin().  This avoids drop-policies from plain urljoin().
@@ -127,8 +130,8 @@ def users_self(obj):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 @users.command("list", help="List users")
 @click.pass_obj
@@ -141,8 +144,8 @@ def list_users(obj):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @users.command(help="Change user's password (as superuser)")
@@ -169,8 +172,8 @@ def change_password(obj, username, new_password):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @users.command("create", help="Create a new user without superuser privileges")
@@ -404,14 +407,12 @@ def get_key_letter(obj, connection_name, output_file):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
     output = open(output_file, "wb")
     output.write(resp.content)
     output.close()
 
-
 @connections.command(help="export backup")
 @click.option("--passphrase", help="Passphrase for locking the backup", 
required=True)
 @click.option("--output-file", help="Where to store the backup", required=True)
@@ -459,7 +460,6 @@ def delete_connection(obj, connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -495,7 +495,6 @@ def restore_backup(obj, backup_file, passphrase, 
connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -528,7 +527,6 @@ def new_ebics_connection(
         print(f"Could not reach nexus at {url}")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -545,9 +543,9 @@ def connect(obj, connection_name):
         print(e)
         print(f"Could not reach nexus at {url}")
         exit(1)
-    tell_user(resp, withsuccess=True)
-    check_response_status(resp)
 
+    check_response_status(resp)
+    tell_user(resp)
 
 @connections.command(help="Import one bank account, chosen from the downloaded 
ones.")
 @click.option(
@@ -580,7 +578,6 @@ def import_bank_account(
         print(f"Could not reach nexus at {url}: {e}")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -603,7 +600,6 @@ def download_bank_accounts(obj, connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -620,8 +616,8 @@ def list_connections(obj):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @connections.command(help="Show the status of a bank connection.")
@@ -638,8 +634,8 @@ def show_connection(obj, connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @connections.command(help="list bank accounts hosted at one connection")
@@ -658,8 +654,8 @@ def list_offered_bank_accounts(obj, connection_name):
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Schedules a new task")
@@ -708,7 +704,6 @@ def task_schedule(
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -728,8 +723,8 @@ def task_status(obj, account_name, task_name):
         print("Could not reach nexus " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Delete a task")
@@ -748,7 +743,6 @@ def task_delete(obj, account_name, task_name):
         print("Could not reach nexus " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -764,8 +758,8 @@ def tasks_show(obj, account_name):
         print("Could not reach nexus " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Show accounts belonging to calling user")
@@ -778,8 +772,8 @@ def show(obj):
         print(f"Could not reach nexus at {url}, error: {e}")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Prepare payment initiation debiting the account.")
@@ -825,7 +819,6 @@ def prepare_payment(
         print("Could not reach nexus at " + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -857,7 +850,6 @@ def submit_payments(obj, account_name, payment_uuid):
         print("Could not reach nexus at" + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -877,8 +869,8 @@ def show_payment(obj, account_name, payment_uuid):
         print("Could not reach nexus at" + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="List payment initiations")
@@ -895,10 +887,8 @@ def list_payments(obj, account_name):
         print("Could not reach nexus at" + url)
         exit(1)
 
-    tell_user(
-        resp, withsuccess=True,
-    )
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Delete a payment initiation")
@@ -917,7 +907,6 @@ def delete_payment(obj, account_name, payment_uuid):
         print("Could not reach nexus at" + url)
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -945,8 +934,8 @@ def fetch_transactions(obj, account_name, range_type, 
level):
         print("Could not reach nexus " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @accounts.command(help="Get transactions from the simplified nexus JSON API")
@@ -982,7 +971,7 @@ def transactions(obj, compact, account_name):
                         )
                     )
     else:
-        tell_user(resp, withsuccess=True)
+        tell_user(resp)
     check_response_status(resp)
 
 
@@ -996,8 +985,8 @@ def list_facades(obj):
         print(f"Could not reach nexus (at {obj.nexus_base_url}): {e}")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @facades.command(
@@ -1030,7 +1019,6 @@ def new_anastasis_facade(obj, facade_name, 
connection_name, account_name, curren
         print(f"Could not reach nexus (at {obj.nexus_base_url}): {e}")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1064,7 +1052,6 @@ def new_twg_facade(obj, facade_name, connection_name, 
account_name, currency):
         print(f"Could not reach nexus (at {obj.nexus_base_url}): {e}")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1086,8 +1073,8 @@ def check_sandbox_status(obj):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox_ebicshost.command("create", help="Create an EBICS host")
@@ -1107,7 +1094,6 @@ def make_ebics_host(obj, host_id):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1123,8 +1109,8 @@ def list_ebics_host(obj):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox.group("ebicssubscriber", help="manage EBICS subscribers")
@@ -1152,7 +1138,6 @@ def create_ebics_subscriber(obj, host_id, partner_id, 
user_id):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1168,8 +1153,8 @@ def list_ebics_subscriber(obj):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox.group("ebicsbankaccount", help="manage EBICS bank accounts")
@@ -1223,7 +1208,6 @@ def associate_bank_account(
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1266,7 +1250,8 @@ def sandbox_demobank_list_transactions(obj, bank_account):
         print("Could not reach sandbox at " + url)
         exit(1)
 
-    tell_user(resp, withsuccess=True)
+    check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox_demobank.command("new-transaction", help="Initiate a new 
transaction.")
@@ -1320,8 +1305,9 @@ def sandbox_demobank_info(obj, bank_account):
         print(e)
         print("Could not reach sandbox")
         exit(1)
-    tell_user(resp, withsuccess=True)
 
+    check_response_status(resp)
+    tell_user(resp)
 
 @sandbox_demobank.command(
   "debug-url",
@@ -1432,8 +1418,8 @@ def bankaccount_list(obj):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox_bankaccount.command("transactions", help="List transactions")
@@ -1451,8 +1437,8 @@ def transactions_list(obj, account_label):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp, withsuccess=True)
     check_response_status(resp)
+    tell_user(resp)
 
 
 @sandbox_bankaccount.command("generate-transactions", help="Generate test 
transactions")
@@ -1471,7 +1457,6 @@ def bankaccount_generate_transactions(obj, account_label):
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1517,7 +1502,6 @@ def simulate_incoming_transaction(
         print("Could not reach sandbox")
         exit(1)
 
-    tell_user(resp)
     check_response_status(resp)
 
 
@@ -1606,7 +1590,7 @@ def circuit_cashout_info(obj, uuid):
         exit(1)
 
     check_response_status(resp)
-    tell_user(resp, withsuccess=True)
+    tell_user(resp)
 
 @sandbox_demobank.command(
   "circuit-delete-account",
@@ -1885,6 +1869,63 @@ def circuit_cashout(obj, subject, amount_debit, 
amount_credit, tan_channel):
         exit(1)
   
     check_response_status(resp, expected_status_code=202)
-    tell_user(resp, 202, withsuccess=True) # Communicates back the operation 
UUID.
+    tell_user(resp) # Communicates back the operation UUID.
+
+@sandbox_demobank.command(
+  "circuit-account-info",
+  help="Retrieve Circuit information about one account.  Useful to get 
cash-out address and contact details."
+)
+@click.option(
+    "--username",
+    help="Username of the account to retrieve.  It defaults to 
LIBEUFIN_SANDBOX_USERNAME and doesn't accept 'admin'.",
+)
+@click.pass_obj
+def circuit_account_info(obj, username):
+    resource_name = get_account_name(username, obj.username)
+    if not resource_name:
+        print(
+            "Couldn't find the username whose account is being retrieved.",
+            file=sys.stderr
+        )
+        exit(1)
+    # resource_name != admin
+    account_info_endpoint = obj.circuit_api_url(f"accounts/{resource_name}")
+    try:
+        resp = get(
+            account_info_endpoint,
+            **maybe_auth(obj)
+        )
+    except Exception as e:
+        print(e)
+        print("Could not reach the bank at " + account_info_endpoint)
+        exit(1)
+
+    check_response_status(resp)
+    tell_user(resp)
+
+
+@sandbox_demobank.command(
+  "circuit-accounts",
+  help="Gets the list of all the accounts managed by the Circuit.  Only 
'admin' allowed"
+)
+@click.pass_obj
+def circuit_accounts(obj):
+    # Check admin is requesting.
+    if (obj.username != "admin"):
+        print("Not running as 'admin'.  Won't request", file=sys.stderr)
+        exit(1)
+    accounts_endpoint = obj.circuit_api_url(f"accounts")
+    try:
+        resp = get(
+            accounts_endpoint,
+            **maybe_auth(obj)
+        )
+    except Exception as e:
+        print(e)
+        print("Could not reach the bank at " + accounts_endpoint)
+        exit(1)
+
+    check_response_status(resp)
+    tell_user(resp)
 
 cli()

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]