commit 0371648c9aaec59004d5f808987ded8c4a53d7a5
parent a6a6cd1f9dd0f3416a88b0222d3b417fed27820b
Author: Florian Dold <florian@dold.me>
Date: Thu, 27 Nov 2025 11:24:24 +0100
query accounts
Diffstat:
2 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts b/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts
@@ -18,6 +18,7 @@
* Imports.
*/
import { Logger, succeedOrThrow } from "@gnu-taler/taler-util";
+import * as fs from "node:fs";
import { GlobalTestState } from "../harness/harness.js";
import { setupMeasuresTestEnvironment } from "../harness/tops.js";
@@ -59,6 +60,18 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
),
);
console.log(`got ${res.byteLength} bytes`);
+ const f = t.testDir + `/aml-form-vqf_902_1_customer.pdf`;
+ fs.writeFileSync(f, Buffer.from(res));
+ console.log(`written to ${f}`);
+ }
+
+ {
+ const res = succeedOrThrow(
+ await exchangeClient.getAmlAccountsAsCsv(officerAcc),
+ );
+ const f = t.testDir + `/accounts.csv`;
+ fs.writeFileSync(f, Buffer.from(res));
+ console.log(`written to ${f}`);
}
}
diff --git a/packages/taler-util/src/http-client/exchange-client.ts b/packages/taler-util/src/http-client/exchange-client.ts
@@ -1171,6 +1171,42 @@ export class TalerExchangeHttpClient {
}
}
+ async getAmlAccountsAsCsv(
+ auth: OfficerAccount,
+ ): Promise<
+ | OperationOk<ArrayBuffer>
+ | OperationFail<
+ | HttpStatusCode.Forbidden
+ | HttpStatusCode.NotFound
+ | HttpStatusCode.Conflict
+ | HttpStatusCode.NoContent
+ >
+ > {
+ const url = new URL(`aml/${auth.id}/accounts`, this.baseUrl);
+
+ const resp = await this.fetch(url, {
+ headers: {
+ Accept: "text/csv",
+ "Taler-AML-Officer-Signature": encodeCrock(
+ signAmlQuery(auth.signingKey),
+ ),
+ },
+ });
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok: {
+ return opFixedSuccess(await resp.bytes());
+ }
+ case HttpStatusCode.NoContent:
+ case HttpStatusCode.Forbidden:
+ case HttpStatusCode.NotFound:
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownHttpFailure(resp);
+ }
+ }
+
/**
* https://docs.taler.net/core/api-exchange.html#post--aml-$OFFICER_PUB-decision
*