aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/bank-core.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-11-21 17:10:07 -0300
committerSebastian <sebasjm@gmail.com>2023-11-21 17:10:31 -0300
commit32182fb1b912e1136ba933c4a4f204e6e2f33de2 (patch)
tree9de9caf82632994c233fbbd4366b086818217c7d /packages/taler-util/src/http-client/bank-core.ts
parent6000a55d583832a71335310514688f1f6faed722 (diff)
downloadwallet-core-32182fb1b912e1136ba933c4a4f204e6e2f33de2.tar.gz
wallet-core-32182fb1b912e1136ba933c4a4f204e6e2f33de2.tar.bz2
wallet-core-32182fb1b912e1136ba933c4a4f204e6e2f33de2.zip
cashout creation
Diffstat (limited to 'packages/taler-util/src/http-client/bank-core.ts')
-rw-r--r--packages/taler-util/src/http-client/bank-core.ts98
1 files changed, 21 insertions, 77 deletions
diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts
index 0b99943a3..d7bf6be29 100644
--- a/packages/taler-util/src/http-client/bank-core.ts
+++ b/packages/taler-util/src/http-client/bank-core.ts
@@ -33,6 +33,7 @@ import { TalerRevenueHttpClient } from "./bank-revenue.js";
import { TalerWireGatewayHttpClient } from "./bank-wire.js";
import { AccessToken, PaginationParams, TalerCorebankApi, UserAndToken, codecForAccountData, codecForBankAccountCreateWithdrawalResponse, codecForBankAccountGetWithdrawalResponse, codecForBankAccountTransactionInfo, codecForBankAccountTransactionsResponse, codecForCashinConversionResponse, codecForCashoutConversionResponse, codecForCashoutPending, codecForCashoutStatusResponse, codecForCashouts, codecForCoreBankConfig, codecForGlobalCashouts, codecForListBankAccountsResponse, codecForMonitorResponse, codecForPublicAccountsResponse } from "./types.js";
import { addPaginationParams, makeBearerTokenAuthHeader } from "./utils.js";
+import { TalerBankConversionHttpClient } from "./bank-conversion.js";
export type TalerCoreBankResultByMethod<prop extends keyof TalerCoreBankHttpClient> = ResultByMethod<TalerCoreBankHttpClient, prop>
@@ -518,12 +519,11 @@ export class TalerCoreBankHttpClient {
}
/**
- * https://docs.taler.net/core/api-corebank.html#get--accounts-$USERNAME-cashouts
+ * https://docs.taler.net/core/api-corebank.html#get--accounts-$USERNAME-cashouts-$CASHOUT_ID
*
*/
- async getAccountCashouts(auth: UserAndToken, pagination?: PaginationParams) {
- const url = new URL(`accounts/${auth.username}/cashouts`, this.baseUrl);
- addPaginationParams(url, pagination)
+ async getCashoutById(auth: UserAndToken, cid: string) {
+ const url = new URL(`accounts/${auth.username}/cashouts/${cid}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -531,20 +531,20 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return opSuccess(resp, codecForCashouts())
- case HttpStatusCode.NoContent: return opFixedSuccess({ cashouts: [] });
- case HttpStatusCode.NotFound: return opKnownFailure("account-not-found", resp);;
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCashoutStatusResponse())
+ case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
default: return opUnknownFailure(resp, await resp.text())
}
}
/**
- * https://docs.taler.net/core/api-corebank.html#get--accounts-$USERNAME-cashouts-$CASHOUT_ID
+ * https://docs.taler.net/core/api-corebank.html#get--accounts-$USERNAME-cashouts
*
*/
- async getCashoutById(auth: UserAndToken, cid: string) {
- const url = new URL(`accounts/${auth.username}/cashouts/${cid}`, this.baseUrl);
+ async getAccountCashouts(auth: UserAndToken, pagination?: PaginationParams) {
+ const url = new URL(`accounts/${auth.username}/cashouts`, this.baseUrl);
+ addPaginationParams(url, pagination)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
@@ -552,8 +552,9 @@ export class TalerCoreBankHttpClient {
},
});
switch (resp.status) {
- case HttpStatusCode.Ok: return opSuccess(resp, codecForCashoutStatusResponse())
- case HttpStatusCode.NotFound: return opKnownFailure("not-found", resp);
+ case HttpStatusCode.Ok: return opSuccess(resp, codecForCashouts())
+ case HttpStatusCode.NoContent: return opFixedSuccess({ cashouts: [] });
+ case HttpStatusCode.NotFound: return opKnownFailure("account-not-found", resp);;
case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
default: return opUnknownFailure(resp, await resp.text())
}
@@ -580,71 +581,6 @@ export class TalerCoreBankHttpClient {
}
}
- /**
- * https://docs.taler.net/core/api-corebank.html#post--accounts-$USERNAME-cashouts-$CASHOUT_ID-confirm
- *
- */
- async getCashoutRate(conversion: { debit?: AmountJson, credit?: AmountJson }) {
- const url = new URL(`cashout-rate`, this.baseUrl);
- if (conversion.debit) {
- url.searchParams.set("amount_debit", Amounts.stringify(conversion.debit))
- }
- if (conversion.credit) {
- url.searchParams.set("amount_credit", Amounts.stringify(conversion.credit))
- }
- const resp = await this.httpLib.fetch(url.href, {
- method: "GET",
- });
- switch (resp.status) {
- case HttpStatusCode.Ok: return opSuccess(resp, codecForCashoutConversionResponse())
- case HttpStatusCode.BadRequest: {
- const body = await resp.json()
- const details = codecForTalerErrorDetail().decode(body)
- switch (details.code) {
- case TalerErrorCode.GENERIC_PARAMETER_MISSING: return opKnownFailure("missing-params", resp);
- case TalerErrorCode.GENERIC_PARAMETER_MALFORMED : return opKnownFailure("wrong-calculation", resp);
- case TalerErrorCode.GENERIC_CURRENCY_MISMATCH: return opKnownFailure("wrong-currency", resp);
- default: return opUnknownFailure(resp, body)
- }
- }
- case HttpStatusCode.Conflict: return opKnownFailure("amount-too-small", resp);
- case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
- default: return opUnknownFailure(resp, await resp.text())
- }
- }
-
- /**
- * https://docs.taler.net/core/api-corebank.html#get--cashin-rate
- *
- */
- async getCashinRate(conversion: { debit?: AmountJson, credit?: AmountJson }) {
- const url = new URL(`cashin-rate`, this.baseUrl);
- if (conversion.debit) {
- url.searchParams.set("amount_debit", Amounts.stringify(conversion.debit))
- }
- if (conversion.credit) {
- url.searchParams.set("amount_credit", Amounts.stringify(conversion.credit))
- }
- const resp = await this.httpLib.fetch(url.href, {
- method: "GET",
- });
- switch (resp.status) {
- case HttpStatusCode.Ok: return opSuccess(resp, codecForCashinConversionResponse())
- case HttpStatusCode.BadRequest: {
- const body = await resp.json()
- const details = codecForTalerErrorDetail().decode(body)
- switch (details.code) {
- case TalerErrorCode.GENERIC_PARAMETER_MISSING: return opKnownFailure("missing-params", resp);
- case TalerErrorCode.GENERIC_PARAMETER_MALFORMED : return opKnownFailure("wrong-calculation", resp);
- case TalerErrorCode.GENERIC_CURRENCY_MISMATCH: return opKnownFailure("wrong-currency", resp);
- default: return opUnknownFailure(resp, body)
- }
- }
- case HttpStatusCode.Conflict: return opKnownFailure("amount-too-small", resp);
- case HttpStatusCode.NotImplemented: return opKnownFailure("cashout-not-supported", resp);
- default: return opUnknownFailure(resp, await resp.text())
- }
- }
//
// MONITOR
//
@@ -718,4 +654,12 @@ export class TalerCoreBankHttpClient {
return new TalerAuthenticationHttpClient(url.href, username, this.httpLib,)
}
+ /**
+ * https://docs.taler.net/core/api-corebank.html#post--accounts-$USERNAME-token
+ *
+ */
+ getConversionInfoAPI(): TalerBankConversionHttpClient {
+ const url = new URL(`conversion-info/`, this.baseUrl);
+ return new TalerBankConversionHttpClient(url.href, this.httpLib)
+ }
}