gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] 03/03: anastasis-core: truth payments, status codes


From: gnunet
Subject: [taler-wallet-core] 03/03: anastasis-core: truth payments, status codes
Date: Thu, 04 Nov 2021 20:20:17 +0100

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

dold pushed a commit to branch master
in repository wallet-core.

commit 9e379ef399a032a3fbd86d18ede867aaf6a1821f
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Nov 4 20:20:11 2021 +0100

    anastasis-core: truth payments, status codes
---
 packages/anastasis-core/src/index.ts | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/packages/anastasis-core/src/index.ts 
b/packages/anastasis-core/src/index.ts
index f77707ae..238b658a 100644
--- a/packages/anastasis-core/src/index.ts
+++ b/packages/anastasis-core/src/index.ts
@@ -466,6 +466,8 @@ async function uploadSecret(
   const truthMetadataMap = recoveryData.truth_metadata;
   const rd = recoveryData.recovery_document;
 
+  const truthPayUris: string[] = [];
+
   for (const truthKey of Object.keys(truthMetadataMap)) {
     const tm = truthMetadataMap[truthKey];
     const pol = state.policies![tm.policy_index];
@@ -501,12 +503,31 @@ async function uploadSecret(
       body: JSON.stringify(tur),
     });
 
-    if (resp.status !== 204) {
-      return {
-        code: TalerErrorCode.ANASTASIS_REDUCER_NETWORK_FAILED,
-        hint: `could not upload truth (HTTP status ${resp.status})`,
-      };
+    if (resp.status === HttpStatusCode.NoContent) {
+      continue;
+    }
+    if (resp.status === HttpStatusCode.PaymentRequired) {
+      const talerPayUri = resp.headers.get("Taler");
+      if (!talerPayUri) {
+        return {
+          code: TalerErrorCode.ANASTASIS_REDUCER_BACKEND_FAILURE,
+          hint: `payment requested, but no taler://pay URI given`,
+        };
+      }
+      truthPayUris.push(talerPayUri);
     }
+    return {
+      code: TalerErrorCode.ANASTASIS_REDUCER_NETWORK_FAILED,
+      hint: `could not upload truth (HTTP status ${resp.status})`,
+    };
+  }
+
+  if (truthPayUris.length > 0) {
+    return {
+      ...state,
+      backup_state: BackupStates.TruthsPaying,
+      payments: truthPayUris,
+    };
   }
 
   const successDetails: SuccessDetails = {};
@@ -537,7 +558,7 @@ async function uploadSecret(
         body: decodeCrock(encRecoveryDoc),
       },
     );
-    if (resp.status === HttpStatusCode.Accepted) {
+    if (resp.status === HttpStatusCode.NoContent) {
       let policyVersion = 0;
       let policyExpiration: Timestamp = { t_ms: 0 };
       try {
@@ -554,6 +575,7 @@ async function uploadSecret(
         policy_version: policyVersion,
         policy_expiration: policyExpiration,
       };
+      continue;
     }
     if (resp.status === HttpStatusCode.PaymentRequired) {
       const talerPayUri = resp.headers.get("Taler");

-- 
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]