summaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-04-05 13:01:45 -0300
committerSebastian <sebasjm@gmail.com>2024-04-05 13:01:45 -0300
commit4759ceae7014771a8a23df4800b0fbd016870621 (patch)
tree1e27323313560e15a35b0122630a846e468e7c28 /packages/taler-util
parent89dde053665d39be8367c25691efc008fc2a5cc7 (diff)
downloadwallet-core-4759ceae7014771a8a23df4800b0fbd016870621.tar.gz
wallet-core-4759ceae7014771a8a23df4800b0fbd016870621.tar.bz2
wallet-core-4759ceae7014771a8a23df4800b0fbd016870621.zip
wip #8276
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/http-client/bank-revenue.ts71
-rw-r--r--packages/taler-util/src/http-client/types.ts66
2 files changed, 89 insertions, 48 deletions
diff --git a/packages/taler-util/src/http-client/bank-revenue.ts b/packages/taler-util/src/http-client/bank-revenue.ts
index d2f0c7000..b195e8c8f 100644
--- a/packages/taler-util/src/http-client/bank-revenue.ts
+++ b/packages/taler-util/src/http-client/bank-revenue.ts
@@ -14,9 +14,14 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { HttpRequestLibrary, makeBasicAuthHeader, readTalerErrorResponse } from "../http-common.js";
+import {
+ HttpRequestLibrary,
+ makeBasicAuthHeader,
+ readTalerErrorResponse,
+} from "../http-common.js";
import { HttpStatusCode } from "../http-status-codes.js";
import { createPlatformHttpLib } from "../http.js";
+import { LibtoolVersion } from "../libtool-version.js";
import {
FailCasesByMethod,
ResultByMethod,
@@ -27,7 +32,8 @@ import {
import {
LongPollParams,
PaginationParams,
- codecForMerchantIncomingHistory,
+ codecForRevenueConfig,
+ codecForRevenueIncomingHistory,
} from "./types.js";
import { addLongPollingParam, addPaginationParams } from "./utils.js";
@@ -47,50 +53,65 @@ export class TalerRevenueHttpClient {
constructor(
readonly baseUrl: string,
- readonly username: string,
httpClient?: HttpRequestLibrary,
) {
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())
- // }
- // }
+ public readonly PROTOCOL_VERSION = "0:0:0";
+
+ isCompatible(version: string): boolean {
+ const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version);
+ return compare?.compatible ?? false;
+ }
+
+ /**
+ * https://docs.taler.net/core/api-bank-revenue.html#get--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 opSuccessFromHttp(resp, codecForRevenueConfig());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
+ }
+ }
/**
* https://docs.taler.net/core/api-bank-revenue.html#get--history
*
* @returns
*/
- async getHistory(auth: string, params?: PaginationParams & LongPollParams) {
+ async getHistory(
+ auth:
+ | {
+ username: string;
+ password: string;
+ }
+ | undefined,
+ params?: PaginationParams & LongPollParams,
+ ) {
const url = new URL(`history`, this.baseUrl);
addPaginationParams(url, params);
addLongPollingParam(url, params);
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
headers: {
- Authorization: makeBasicAuthHeader(this.username, auth),
+ Authorization: auth
+ ? makeBasicAuthHeader(auth.username, auth.password)
+ : undefined,
},
});
switch (resp.status) {
case HttpStatusCode.Ok:
- return opSuccessFromHttp(resp, codecForMerchantIncomingHistory());
+ return opSuccessFromHttp(resp, codecForRevenueIncomingHistory());
case HttpStatusCode.BadRequest:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Unauthorized:
diff --git a/packages/taler-util/src/http-client/types.ts b/packages/taler-util/src/http-client/types.ts
index ea7ba341b..72189cf0a 100644
--- a/packages/taler-util/src/http-client/types.ts
+++ b/packages/taler-util/src/http-client/types.ts
@@ -1218,26 +1218,33 @@ export const codecForBankWithdrawalOperationPostResponse =
.property("confirm_transfer_url", codecOptional(codecForURL()))
.build("TalerBankIntegrationApi.BankWithdrawalOperationPostResponse");
-export const codecForMerchantIncomingHistory =
- (): Codec<TalerRevenueApi.MerchantIncomingHistory> =>
- buildCodecForObject<TalerRevenueApi.MerchantIncomingHistory>()
+export const codecForRevenueConfig = (): Codec<TalerRevenueApi.RevenueConfig> =>
+ buildCodecForObject<TalerRevenueApi.RevenueConfig>()
+ .property("name", codecForConstString("taler-revenue"))
+ .property("version", codecForString())
+ .property("currency", codecForString())
+ .property("implementation", codecOptional(codecForString()))
+ .build("TalerRevenueApi.RevenueConfig");
+
+export const codecForRevenueIncomingHistory =
+ (): Codec<TalerRevenueApi.RevenueIncomingHistory> =>
+ buildCodecForObject<TalerRevenueApi.RevenueIncomingHistory>()
.property("credit_account", codecForPaytoString())
.property(
"incoming_transactions",
- codecForList(codecForMerchantIncomingBankTransaction()),
+ codecForList(codecForRevenueIncomingBankTransaction()),
)
.build("TalerRevenueApi.MerchantIncomingHistory");
-export const codecForMerchantIncomingBankTransaction =
- (): Codec<TalerRevenueApi.MerchantIncomingBankTransaction> =>
- buildCodecForObject<TalerRevenueApi.MerchantIncomingBankTransaction>()
- .property("row_id", codecForNumber())
- .property("date", codecForTimestamp)
+export const codecForRevenueIncomingBankTransaction =
+ (): Codec<TalerRevenueApi.RevenueIncomingBankTransaction> =>
+ buildCodecForObject<TalerRevenueApi.RevenueIncomingBankTransaction>()
.property("amount", codecForAmountString())
+ .property("date", codecForTimestamp)
.property("debit_account", codecForPaytoString())
- .property("exchange_url", codecForURL())
- .property("wtid", codecForString())
- .build("TalerRevenueApi.MerchantIncomingBankTransaction");
+ .property("row_id", codecForNumber())
+ .property("subject", codecForString())
+ .build("TalerRevenueApi.RevenueIncomingBankTransaction");
export const codecForTransferResponse =
(): Codec<TalerWireGatewayApi.TransferResponse> =>
@@ -1699,18 +1706,34 @@ export namespace TalerWireGatewayApi {
}
export namespace TalerRevenueApi {
- export interface MerchantIncomingHistory {
+ export interface RevenueConfig {
+ // Name of the API.
+ name: "taler-revenue";
+
+ // libtool-style representation of the Bank protocol version, see
+ // https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+ // The format is "current:revision:age".
+ version: string;
+
+ // Currency used by this gateway.
+ currency: string;
+
+ // URN of the implementation (needed to interpret 'revision' in version).
+ // @since v0, may become mandatory in the future.
+ implementation?: string;
+ }
+
+ export interface RevenueIncomingHistory {
// Array of incoming transactions.
- incoming_transactions: MerchantIncomingBankTransaction[];
+ incoming_transactions: RevenueIncomingBankTransaction[];
// Payto URI to identify the receiver of funds.
- // This must be one of the merchant's bank accounts.
// Credit account is shared by all incoming transactions
// as per the nature of the request.
- credit_account: PaytoString;
+ credit_account: string;
}
- export interface MerchantIncomingBankTransaction {
+ export interface RevenueIncomingBankTransaction {
// Opaque identifier of the returned record.
row_id: SafeUint64;
@@ -1721,13 +1744,10 @@ export namespace TalerRevenueApi {
amount: AmountString;
// Payto URI to identify the sender of funds.
- debit_account: PaytoString;
+ debit_account: string;
- // Base URL of the exchange where the transfer originated form.
- exchange_url: string;
-
- // The wire transfer identifier.
- wtid: WireTransferIdentifierRawP;
+ // The wire transfer subject.
+ subject: string;
}
}