diff options
author | Sebastian <sebasjm@gmail.com> | 2023-11-21 17:10:07 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-11-21 17:10:31 -0300 |
commit | 32182fb1b912e1136ba933c4a4f204e6e2f33de2 (patch) | |
tree | 9de9caf82632994c233fbbd4366b086818217c7d /packages/taler-util/src/http-client/bank-core.ts | |
parent | 6000a55d583832a71335310514688f1f6faed722 (diff) | |
download | wallet-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.ts | 98 |
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) + } } |