aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/bank-wire.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/http-client/bank-wire.ts')
-rw-r--r--packages/taler-util/src/http-client/bank-wire.ts80
1 files changed, 56 insertions, 24 deletions
diff --git a/packages/taler-util/src/http-client/bank-wire.ts b/packages/taler-util/src/http-client/bank-wire.ts
index 7e3c00637..90c3aeae5 100644
--- a/packages/taler-util/src/http-client/bank-wire.ts
+++ b/packages/taler-util/src/http-client/bank-wire.ts
@@ -1,9 +1,9 @@
import { HttpRequestLibrary, makeBasicAuthHeader } from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
-import { FailCasesByMethod, ResultByMethod, opFixedSuccess, opKnownFailure, opSuccess, opUnknownFailure } from "../operation.js";
-import { PaginationParams, TalerWireGatewayApi, codecForAddIncomingResponse, codecForIncomingHistory, codecForOutgoingHistory, codecForTransferResponse } from "./types.js";
-import { addPaginationParams } from "./utils.js";
+import { FailCasesByMethod, ResultByMethod, opFixedSuccess, opKnownHttpFailure, opSuccess, opUnknownFailure } from "../operation.js";
+import { LongPollParams, PaginationParams, TalerWireGatewayApi, codecForAddIncomingResponse, codecForIncomingHistory, codecForOutgoingHistory, codecForTransferResponse } from "./types.js";
+import { addLongPollingParam, addPaginationParams } from "./utils.js";
export type TalerWireGatewayResultByMethod<prop extends keyof TalerWireGatewayHttpClient> = ResultByMethod<TalerWireGatewayHttpClient, prop>
export type TalerWireGatewayErrorsByMethod<prop extends keyof TalerWireGatewayHttpClient> = FailCasesByMethod<TalerWireGatewayHttpClient, prop>
@@ -25,6 +25,27 @@ export class TalerWireGatewayHttpClient {
) {
this.httpLib = httpClient ?? createPlatformHttpLib();
}
+ // public readonly PROTOCOL_VERSION = "4:0:0";
+ // isCompatible(version: string): boolean {
+ // const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version)
+ // return compare?.compatible ?? false
+ // }
+
+ // /**
+ // * https://docs.taler.net/core/api-corebank.html#config
+ // *
+ // */
+ // async getConfig() {
+ // const url = new URL(`config`, this.baseUrl);
+ // const resp = await this.httpLib.fetch(url.href, {
+ // method: "GET"
+ // });
+ // switch (resp.status) {
+ // case HttpStatusCode.Ok: return opSuccess(resp, codecForCoreBankConfig())
+ // default: return opUnknownFailure(resp, await resp.text())
+ // }
+ // }
+
/**
* https://docs.taler.net/core/api-bank-wire.html#post--transfer
@@ -42,10 +63,12 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok: return opSuccess(resp, codecForTransferResponse())
- case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
- case HttpStatusCode.Unauthorized: return opKnownFailure("unauthorized", resp);
- case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
- case HttpStatusCode.Conflict: return opKnownFailure("request-uid-already-used", resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.BadRequest: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict: return opKnownHttpFailure(resp.status, resp);
default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -54,9 +77,10 @@ export class TalerWireGatewayHttpClient {
* https://docs.taler.net/core/api-bank-wire.html#get--history-incoming
*
*/
- async getHistoryIncoming(auth: string, pagination?: PaginationParams) {
+ async getHistoryIncoming(auth: string, params?: PaginationParams & LongPollParams) {
const url = new URL(`history/incoming`, this.baseUrl);
- addPaginationParams(url, pagination)
+ addPaginationParams(url, params)
+ addLongPollingParam(url, params)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -65,22 +89,25 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok: return opSuccess(resp, codecForIncomingHistory())
- case HttpStatusCode.NoContent: return opFixedSuccess({ incoming_transactions: [] })
- case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
- case HttpStatusCode.Unauthorized: return opKnownFailure("unauthorized", resp);
- case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ //FIXME: account should not be returned or make it optional
+ case HttpStatusCode.NoContent: return opFixedSuccess({ incoming_transactions: [], credit_account: undefined })
+ //FIXME: show more details in docs
+ case HttpStatusCode.BadRequest: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp);
default: return opUnknownFailure(resp, await resp.text())
}
- // return readSuccessResponseJsonOrThrow(resp, codecForIncomingHistory());
}
/**
* https://docs.taler.net/core/api-bank-wire.html#get--history-outgoing
*
*/
- async getHistoryOutgoing(auth: string, pagination?: PaginationParams) {
+ async getHistoryOutgoing(auth: string, params?: PaginationParams & LongPollParams) {
const url = new URL(`history/outgoing`, this.baseUrl);
- addPaginationParams(url, pagination)
+ addPaginationParams(url, params)
+ addLongPollingParam(url, params)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -89,10 +116,13 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok: return opSuccess(resp, codecForOutgoingHistory())
- case HttpStatusCode.NoContent: return opFixedSuccess({ outgoing_transactions: [] })
- case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
- case HttpStatusCode.Unauthorized: return opKnownFailure("unauthorized", resp);
- case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ //FIXME: account should not be returned or make it optional
+ case HttpStatusCode.NoContent: return opFixedSuccess({ outgoing_transactions: [], debit_account: undefined })
+ //FIXME: show more details in docs
+ case HttpStatusCode.BadRequest: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp);
default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -112,10 +142,12 @@ export class TalerWireGatewayHttpClient {
});
switch (resp.status) {
case HttpStatusCode.Ok: return opSuccess(resp, codecForAddIncomingResponse())
- case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
- case HttpStatusCode.Unauthorized: return opKnownFailure("unauthorized", resp);
- case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
- case HttpStatusCode.Conflict: return opKnownFailure("reserve-id-already-used", resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.BadRequest: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Unauthorized: return opKnownHttpFailure(resp.status, resp);
+ //FIXME: show more details in docs
+ case HttpStatusCode.NotFound: return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict: return opKnownHttpFailure(resp.status, resp);
default: return opUnknownFailure(resp, await resp.text())
}
}