aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/bank-core.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-10-19 02:44:28 -0300
committerSebastian <sebasjm@gmail.com>2023-10-19 02:56:14 -0300
commitf89e27a4e39412c4863fe26f821988a65ecec1b9 (patch)
tree2bc1a5c3971a38fa32268593ccce69f0281858e6 /packages/taler-util/src/http-client/bank-core.ts
parentc6968c3c21d70bd76ce50f232650d183fa8cfa6e (diff)
downloadwallet-core-f89e27a4e39412c4863fe26f821988a65ecec1b9.tar.gz
wallet-core-f89e27a4e39412c4863fe26f821988a65ecec1b9.tar.bz2
wallet-core-f89e27a4e39412c4863fe26f821988a65ecec1b9.zip
update api
Diffstat (limited to 'packages/taler-util/src/http-client/bank-core.ts')
-rw-r--r--packages/taler-util/src/http-client/bank-core.ts284
1 files changed, 145 insertions, 139 deletions
diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts
index 7b4bb53d4..593daa2c3 100644
--- a/packages/taler-util/src/http-client/bank-core.ts
+++ b/packages/taler-util/src/http-client/bank-core.ts
@@ -18,63 +18,50 @@ import {
AmountJson,
Amounts,
HttpStatusCode,
- Logger
+ LibtoolVersion
} from "@gnu-taler/taler-util";
import {
HttpRequestLibrary,
- createPlatformHttpLib,
- expectSuccessResponseOrThrow,
- readSuccessResponseJsonOrThrow
+ createPlatformHttpLib
} from "@gnu-taler/taler-util/http";
import { TalerBankIntegrationHttpClient } from "./bank-integration.js";
import { TalerRevenueHttpClient } from "./bank-revenue.js";
import { TalerWireGatewayHttpClient } from "./bank-wire.js";
-import { AccessToken, TalerAuthentication, TalerCorebankApi, codecForAccountData, codecForBankAccountCreateWithdrawalResponse, codecForBankAccountGetWithdrawalResponse, codecForBankAccountTransactionInfo, codecForBankAccountTransactionsResponse, codecForCashoutConversionResponse, codecForCashoutPending, codecForCashoutStatusResponse, codecForCashouts, codecForConversionRatesResponse, codecForCoreBankConfig, codecForGlobalCashouts, codecForListBankAccountsResponse, codecForMonitorResponse, codecForPublicAccountsResponse, codecForTokenSuccessResponse } from "./types.js";
-import { PaginationParams, UserAndPassword, UserAndToken, addPaginationParams, httpEmptySuccess, httpSuccess, knownFailure, makeBasicAuthHeader, makeBearerTokenAuthHeader, unknownFailure } from "./utils.js";
+import { AccessToken, OperationOk, PaginationParams, TalerCorebankApi, UserAndToken, codecForAccountData, codecForBankAccountCreateWithdrawalResponse, codecForBankAccountGetWithdrawalResponse, codecForBankAccountTransactionInfo, codecForBankAccountTransactionsResponse, codecForCashoutConversionResponse, codecForCashoutPending, codecForCashoutStatusResponse, codecForCashouts, codecForConversionRatesResponse, codecForCoreBankConfig, codecForGlobalCashouts, codecForListBankAccountsResponse, codecForMonitorResponse, codecForPublicAccountsResponse } from "./types.js";
+import { addPaginationParams, opFixedSuccess, opEmptySuccess, opSuccess, opKnownFailure, makeBearerTokenAuthHeader, opUnknownFailure } from "./utils.js";
+import { TalerAuthenticationHttpClient } from "./authentication.js";
-const logger = new Logger("http-client/core-bank.ts");
+type props = keyof TalerCoreBankHttpClient
+
+export type TalerCoreBankResultByMethod<p extends props> = TalerCoreBankHttpClient[p] extends (...args: any[]) => infer Ret ?
+ Ret extends Promise<infer Result> ?
+ Result :
+ never : //api always use Promises
+ never; //error cases just for functions
+
+export type TalerCoreBankErrorsByMethod<p extends props> = Exclude<TalerCoreBankResultByMethod<p>, OperationOk<any>>
+
+/**
+ * Protocol version spoken with the bank.
+ *
+ * Uses libtool's current:revision:age versioning.
+ */
export class TalerCoreBankHttpClient {
+ public readonly PROTOCOL_VERSION = "0:0:0";
+
httpLib: HttpRequestLibrary;
constructor(
- private baseUrl: string,
+ readonly baseUrl: string,
httpClient?: HttpRequestLibrary,
) {
this.httpLib = httpClient ?? createPlatformHttpLib();
}
- /**
- * https://docs.taler.net/core/api-corebank.html#post--accounts-$USERNAME-token
- *
- * @returns
- */
- async createAccessToken(
- auth: UserAndPassword,
- body: TalerAuthentication.TokenRequest,
- ): Promise<TalerAuthentication.TokenSuccessResponse> {
- const url = new URL(`accounts/${auth.username}/token`, this.baseUrl);
- const resp = await this.httpLib.fetch(url.href, {
- method: "POST",
- headers: {
- Authorization: makeBasicAuthHeader(auth.username, auth.password),
- },
- body
- });
- return readSuccessResponseJsonOrThrow(resp, codecForTokenSuccessResponse());
- }
-
- async deleteAccessToken(
- auth: UserAndToken,
- ): Promise<void> {
- const url = new URL(`accounts/${auth.username}/token`, this.baseUrl);
- const resp = await this.httpLib.fetch(url.href, {
- method: "DELETE",
- headers: {
- Authorization: makeBearerTokenAuthHeader(auth.token),
- }
- });
- return expectSuccessResponseOrThrow(resp);
+ isCompatible(version: string): boolean {
+ const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version)
+ return compare?.compatible ?? false
}
/**
@@ -88,8 +75,8 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: missing in docs
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForCoreBankConfig())
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCoreBankConfig())
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -111,17 +98,19 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.BadRequest: return knownFailure("invalid-input", resp);
+ //FIXME: NOT IN THE DOOOCS
+ case HttpStatusCode.Created: return opEmptySuccess()
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
case HttpStatusCode.Forbidden: {
if (body.username === "bank" || body.username === "admin") {
- return knownFailure("unable-to-create", resp);
+ return opKnownFailure("unable-to-create", resp);
} else {
- return knownFailure("unauthorized", resp);
+ return opKnownFailure("unauthorized", resp);
}
}
- case HttpStatusCode.Conflict: return knownFailure("already-exist", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Conflict: return opKnownFailure("already-exist", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
/**
@@ -137,17 +126,17 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
case HttpStatusCode.Forbidden: {
if (auth.username === "bank" || auth.username === "admin") {
- return knownFailure("unable-to-delete", resp);
+ return opKnownFailure("unable-to-delete", resp);
} else {
- return knownFailure("unauthorized", resp);
+ return opKnownFailure("unauthorized", resp);
}
}
- case HttpStatusCode.PreconditionFailed: return knownFailure("balance-not-zero", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.PreconditionFailed: return opKnownFailure("balance-not-zero", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -165,10 +154,10 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -186,12 +175,12 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
+ case HttpStatusCode.NoContent: return opEmptySuccess()
//FIXME: missing in docs
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
//FIXME: missing in docs
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -199,8 +188,10 @@ export class TalerCoreBankHttpClient {
* https://docs.taler.net/core/get-$BANK_API_BASE_URL-public-accounts
*
*/
- async getPublicAccounts() {
+ async getPublicAccounts(pagination?: PaginationParams) {
const url = new URL(`public-accounts`, this.baseUrl);
+ //FIXME: missing pagination in docs
+ addPaginationParams(url, pagination)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -208,10 +199,10 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: missing in docs
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForPublicAccountsResponse())
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForPublicAccountsResponse())
//FIXME: missing in docs
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.NoContent: return opFixedSuccess({ public_accounts: [] })
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -219,8 +210,9 @@ export class TalerCoreBankHttpClient {
* https://docs.taler.net/core/api-corebank.html#get--accounts
*
*/
- async getAccounts(auth: AccessToken) {
+ async getAccounts(auth: AccessToken, pagination?: PaginationParams) {
const url = new URL(`accounts`, this.baseUrl);
+ addPaginationParams(url, pagination)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -228,10 +220,10 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForListBankAccountsResponse())
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForListBankAccountsResponse())
+ case HttpStatusCode.NoContent: return opFixedSuccess({ accounts: [] })
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -248,12 +240,12 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForAccountData())
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForAccountData())
//FIXME: missing in docs
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
//FIXME: missing in docs
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -275,14 +267,14 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForBankAccountTransactionsResponse())
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForBankAccountTransactionsResponse())
//FIXME: missing in docs
- case HttpStatusCode.NoContent: return httpEmptySuccess()
+ case HttpStatusCode.NoContent: return opFixedSuccess({ transactions: [] })
//FIXME: missing in docs
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
//FIXME: missing in docs
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -299,12 +291,12 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForBankAccountTransactionInfo())
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForBankAccountTransactionInfo())
//FIXME: missing in docs
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
//FIXME: missing in docs
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -323,12 +315,12 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: fix docs... it should be NoContent
- case HttpStatusCode.Ok: return httpEmptySuccess()
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.BadRequest: return knownFailure("invalid-input", resp);
+ case HttpStatusCode.Ok: return opEmptySuccess()
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
//FIXME: missing in docs
- case HttpStatusCode.Forbidden: return knownFailure("unauthorized", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Forbidden: return opKnownFailure("unauthorized", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -351,9 +343,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: missing in docs
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForBankAccountCreateWithdrawalResponse())
- case HttpStatusCode.Forbidden: return knownFailure("insufficient-funds", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForBankAccountCreateWithdrawalResponse())
+ case HttpStatusCode.Forbidden: return opKnownFailure("insufficient-funds", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -368,8 +360,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: missing in docs
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForBankAccountGetWithdrawalResponse())
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForBankAccountGetWithdrawalResponse())
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp)
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -384,10 +377,10 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: fix docs... it should be NoContent
- case HttpStatusCode.Ok: return httpEmptySuccess()
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.Conflict: return knownFailure("previously-confirmed", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opEmptySuccess()
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.Conflict: return opKnownFailure("previously-confirmed", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -402,11 +395,11 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: fix docs... it should be NoContent
- case HttpStatusCode.Ok: return httpEmptySuccess()
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.Conflict: return knownFailure("previously-aborted", resp);
- case HttpStatusCode.UnprocessableEntity: return knownFailure("no-exchange-or-reserve-selected", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opEmptySuccess()
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.Conflict: return opKnownFailure("previously-aborted", resp);
+ case HttpStatusCode.UnprocessableEntity: return opKnownFailure("no-exchange-or-reserve-selected", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -428,11 +421,17 @@ export class TalerCoreBankHttpClient {
body,
});
switch (resp.status) {
- case HttpStatusCode.Accepted: return httpSuccess(resp, codecForCashoutPending())
+ case HttpStatusCode.Accepted: return opSuccess(resp, codecForCashoutPending())
//FIXME: it should be precondition-failed
- case HttpStatusCode.Conflict: return knownFailure("invalid-state", resp);
- case HttpStatusCode.ServiceUnavailable: return knownFailure("tan-not-supported", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Conflict: return opKnownFailure("no-contact-info", resp);
+ //FIXME: missing in the docs
+ case HttpStatusCode.Forbidden: return opKnownFailure("no-allowed", resp);
+ //FIXME: missing in the docs
+ case HttpStatusCode.PreconditionFailed: return opKnownFailure("no-enough-balance", resp);
+ //FIXME: missing in the docs
+ case HttpStatusCode.BadRequest: return opKnownFailure("incorrect-exchange-rate", resp);
+ case HttpStatusCode.ServiceUnavailable: return opKnownFailure("tan-not-supported", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -449,10 +448,10 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
- case HttpStatusCode.Conflict: return knownFailure("already-confirmed", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ case HttpStatusCode.Conflict: return opKnownFailure("already-confirmed", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -470,11 +469,11 @@ export class TalerCoreBankHttpClient {
body,
});
switch (resp.status) {
- case HttpStatusCode.NoContent: return httpEmptySuccess()
- case HttpStatusCode.Forbidden: return knownFailure("wrong-tan-or-credential", resp);
- case HttpStatusCode.NotFound: return knownFailure("not-found", resp);
- case HttpStatusCode.Conflict: return knownFailure("cashout-address-changed", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.NoContent: return opEmptySuccess()
+ case HttpStatusCode.Forbidden: return opKnownFailure("wrong-tan-or-credential", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ case HttpStatusCode.Conflict: return opKnownFailure("cashout-address-changed", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -494,10 +493,10 @@ export class TalerCoreBankHttpClient {
method: "GET",
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForCashoutConversionResponse())
- case HttpStatusCode.BadRequest: return knownFailure("wrong-calculation", resp);
- case HttpStatusCode.NotFound: return knownFailure("not-supported", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCashoutConversionResponse())
+ case HttpStatusCode.BadRequest: return opKnownFailure("wrong-calculation", resp);
+ case HttpStatusCode.NotFound: return opKnownFailure("not-supported", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -514,9 +513,9 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForCashouts())
- case HttpStatusCode.NoContent: return httpEmptySuccess();
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCashouts())
+ case HttpStatusCode.NoContent: return opFixedSuccess({ cashouts: [] });
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -533,9 +532,9 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForGlobalCashouts())
- case HttpStatusCode.NoContent: return httpEmptySuccess();
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForGlobalCashouts())
+ case HttpStatusCode.NoContent: return opFixedSuccess({ cashouts: [] });
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -553,9 +552,9 @@ export class TalerCoreBankHttpClient {
});
switch (resp.status) {
//FIXME: missing in docs
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForCashoutStatusResponse())
- case HttpStatusCode.NotFound: return knownFailure("already-aborted", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCashoutStatusResponse())
+ case HttpStatusCode.NotFound: return opKnownFailure("already-aborted", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -573,9 +572,9 @@ export class TalerCoreBankHttpClient {
method: "GET",
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForConversionRatesResponse())
- case HttpStatusCode.NotFound: return knownFailure("not-supported", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForConversionRatesResponse())
+ case HttpStatusCode.NotFound: return opKnownFailure("not-supported", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -595,10 +594,10 @@ export class TalerCoreBankHttpClient {
method: "GET",
});
switch (resp.status) {
- case HttpStatusCode.Ok: return httpSuccess(resp, codecForMonitorResponse())
- case HttpStatusCode.NotFound: return knownFailure("not-supported", resp);
- case HttpStatusCode.BadRequest: return knownFailure("invalid-input", resp);
- default: return unknownFailure(url, resp)
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForMonitorResponse())
+ case HttpStatusCode.NotFound: return opKnownFailure("not-supported", resp);
+ case HttpStatusCode.BadRequest: return opKnownFailure("invalid-input", resp);
+ default: return opUnknownFailure(resp, await resp.text())
}
}
@@ -611,7 +610,7 @@ export class TalerCoreBankHttpClient {
*
*/
getIntegrationAPI(): TalerBankIntegrationHttpClient {
- const url = new URL(`taler-integration`, this.baseUrl);
+ const url = new URL(`taler-integration/`, this.baseUrl);
return new TalerBankIntegrationHttpClient(url.href, this.httpLib)
}
@@ -620,7 +619,7 @@ export class TalerCoreBankHttpClient {
*
*/
getWireGatewayAPI(username: string): TalerWireGatewayHttpClient {
- const url = new URL(`accounts/${username}/taler-wire-gateway`, this.baseUrl);
+ const url = new URL(`accounts/${username}/taler-wire-gateway/`, this.baseUrl);
return new TalerWireGatewayHttpClient(url.href, username, this.httpLib)
}
@@ -629,9 +628,16 @@ export class TalerCoreBankHttpClient {
*
*/
getRevenueAPI(username: string): TalerRevenueHttpClient {
- const url = new URL(`accounts/${username}/taler-revenue`, this.baseUrl);
+ const url = new URL(`accounts/${username}/taler-revenue/`, this.baseUrl);
return new TalerRevenueHttpClient(url.href, username, this.httpLib,)
}
+ /**
+ * https://docs.taler.net/core/api-corebank.html#post--accounts-$USERNAME-token
+ *
+ */
+ getAuthenticationAPI(username: string): TalerAuthenticationHttpClient {
+ const url = new URL(`accounts/${username}/`, this.baseUrl);
+ return new TalerAuthenticationHttpClient(url.href, username, this.httpLib,)
+ }
}
-