[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.