aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/bank-api-client.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/bank-api-client.ts')
-rw-r--r--packages/taler-wallet-core/src/bank-api-client.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/bank-api-client.ts b/packages/taler-wallet-core/src/bank-api-client.ts
index f807d2daa..de0d4b852 100644
--- a/packages/taler-wallet-core/src/bank-api-client.ts
+++ b/packages/taler-wallet-core/src/bank-api-client.ts
@@ -37,6 +37,7 @@ import {
TalerErrorCode,
} from "@gnu-taler/taler-util";
import {
+ createPlatformHttpLib,
HttpRequestLibrary,
readSuccessResponseJsonOrThrow,
} from "@gnu-taler/taler-util/http";
@@ -277,3 +278,62 @@ export namespace BankAccessApi {
);
}
}
+
+export interface BankAccessApiClientArgs {
+ baseUrl: string;
+ username: string;
+ password: string;
+}
+
+export interface BankAccessApiCreateTransactionRequest {
+ amount: AmountString;
+ paytoUri: string;
+}
+
+export class BankAccessApiClient {
+ httpLib = createPlatformHttpLib();
+
+ constructor(private args: BankAccessApiClientArgs) {}
+
+ async getTransactions(): Promise<void> {
+ const reqUrl = new URL(
+ `accounts/${this.args.username}/transactions`,
+ this.args.baseUrl,
+ );
+ const authHeaderValue = makeBasicAuthHeader(
+ this.args.username,
+ this.args.password,
+ );
+ const resp = await this.httpLib.fetch(reqUrl.href, {
+ method: "GET",
+ headers: {
+ Authorization: authHeaderValue,
+ },
+ });
+
+ const res = await readSuccessResponseJsonOrThrow(resp, codecForAny());
+ logger.info(`result: ${j2s(res)}`);
+ }
+
+ async createTransaction(
+ req: BankAccessApiCreateTransactionRequest,
+ ): Promise<any> {
+ const reqUrl = new URL(
+ `accounts/${this.args.username}/transactions`,
+ this.args.baseUrl,
+ );
+ const authHeaderValue = makeBasicAuthHeader(
+ this.args.username,
+ this.args.password,
+ );
+ const resp = await this.httpLib.fetch(reqUrl.href, {
+ method: "POST",
+ body: req,
+ headers: {
+ Authorization: authHeaderValue,
+ },
+ });
+
+ return await readSuccessResponseJsonOrThrow(resp, codecForAny());
+ }
+}