summaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/bank-revenue.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/http-client/bank-revenue.ts')
-rw-r--r--packages/taler-util/src/http-client/bank-revenue.ts78
1 files changed, 52 insertions, 26 deletions
diff --git a/packages/taler-util/src/http-client/bank-revenue.ts b/packages/taler-util/src/http-client/bank-revenue.ts
index 3b6b3c258..34afe7d86 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 } 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";
@@ -38,6 +44,10 @@ export type TalerBankRevenueErrorsByMethod<
prop extends keyof TalerRevenueHttpClient,
> = FailCasesByMethod<TalerRevenueHttpClient, prop>;
+type UsernameAndPassword = {
+ username: string;
+ password: string;
+};
/**
* The API is used by the merchant (or other parties) to query
* for incoming transactions to their account.
@@ -47,50 +57,66 @@ 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(auth?: UsernameAndPassword) {
+ const url = new URL(`config`, this.baseUrl);
+ const resp = await this.httpLib.fetch(url.href, {
+ method: "GET",
+ headers: {
+ Authorization: auth
+ ? makeBasicAuthHeader(auth.username, auth.password)
+ : undefined,
+ },
+ });
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForRevenueConfig());
+ case HttpStatusCode.Unauthorized:
+ return opKnownHttpFailure(resp.status, resp);
+ 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?: UsernameAndPassword,
+ 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:
@@ -98,7 +124,7 @@ export class TalerRevenueHttpClient {
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
default:
- return opUnknownFailure(resp, await resp.text());
+ return opUnknownFailure(resp, await readTalerErrorResponse(resp));
}
}
}