summaryrefslogtreecommitdiff
path: root/packages/taler-util/src/http-client/merchant.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/http-client/merchant.ts')
-rw-r--r--packages/taler-util/src/http-client/merchant.ts359
1 files changed, 342 insertions, 17 deletions
diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts
index e9fda5075..1cc410191 100644
--- a/packages/taler-util/src/http-client/merchant.ts
+++ b/packages/taler-util/src/http-client/merchant.ts
@@ -25,10 +25,14 @@ import {
codecForAccountsSummaryResponse,
codecForBankAccountEntry,
codecForClaimResponse,
+ codecForInstancesResponse,
codecForInventorySummaryResponse,
codecForMerchantConfig,
codecForMerchantOrderPrivateStatusResponse,
+ codecForMerchantRefundResponse,
codecForOrderHistory,
+ codecForOtpDeviceDetails,
+ codecForOtpDeviceSummaryResponse,
codecForOutOfStockResponse,
codecForPaidRefundStatusResponse,
codecForPaymentResponse,
@@ -38,13 +42,22 @@ import {
codecForStatusGoto,
codecForStatusPaid,
codecForStatusStatusUnpaid,
+ codecForTansferList,
+ codecForTemplateDetails,
+ codecForTemplateSummaryResponse,
+ codecForTokenFamiliesList,
+ codecForTokenFamilyDetails,
codecForWalletRefundResponse,
+ codecForWalletTemplateDetails,
+ codecForWebhookDetails,
+ codecForWebhookSummaryResponse,
opEmptySuccess,
opKnownAlternativeFailure,
opKnownHttpFailure
} from "@gnu-taler/taler-util";
import {
HttpRequestLibrary,
+ HttpResponse,
createPlatformHttpLib,
} from "@gnu-taler/taler-util/http";
import { opSuccessFromHttp, opUnknownFailure } from "../operation.js";
@@ -714,7 +727,10 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+ return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp)
+ }
+ private static async procesOrderCreationResponse(resp: HttpResponse) {
switch (resp.status) {
case HttpStatusCode.Ok:
return opSuccessFromHttp(resp, codecForPostOrderResponse())
@@ -738,9 +754,6 @@ export class TalerMerchantInstanceHttpClient {
if (params.date) {
url.searchParams.set("date_s", String(params.date));
}
- if (params.delta) {
- url.searchParams.set("delta", String(params.delta));
- }
if (params.fulfillmentUrl) {
url.searchParams.set("fulfillment_url", params.fulfillmentUrl);
}
@@ -753,15 +766,13 @@ export class TalerMerchantInstanceHttpClient {
if (params.sessionId) {
url.searchParams.set("session_id", params.sessionId);
}
- if (params.start) {
- url.searchParams.set("start", String(params.start));
- }
if (params.timeout) {
url.searchParams.set("timeout", String(params.timeout));
}
if (params.wired) {
url.searchParams.set("wired", "YES");
}
+ addMerchantPaginationParams(url, params)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
@@ -824,6 +835,20 @@ export class TalerMerchantInstanceHttpClient {
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.BadRequest:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -835,6 +860,17 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
//
@@ -851,6 +887,21 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForMerchantRefundResponse())
+ case HttpStatusCode.Forbidden:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Gone:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
//
@@ -867,6 +918,17 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -883,22 +945,24 @@ export class TalerMerchantInstanceHttpClient {
if (params.before) {
url.searchParams.set("before", String(params.before));
}
- if (params.limit) {
- url.searchParams.set("limit", String(params.limit));
- }
- if (params.offset) {
- url.searchParams.set("offset", String(params.offset));
- }
if (params.paytoURI) {
url.searchParams.set("payto_uri", params.paytoURI);
}
if (params.verified) {
url.searchParams.set("verified", "YES");
}
+ addMerchantPaginationParams(url, params)
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTansferList())
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -910,6 +974,17 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
//
@@ -926,6 +1001,15 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -941,6 +1025,16 @@ export class TalerMerchantInstanceHttpClient {
method: "PATCH",
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -952,6 +1046,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForOtpDeviceSummaryResponse())
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -972,6 +1074,15 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForOtpDeviceDetails())
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -983,6 +1094,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
//
@@ -999,6 +1118,14 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1014,6 +1141,16 @@ export class TalerMerchantInstanceHttpClient {
method: "PATCH",
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1025,6 +1162,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTemplateSummaryResponse());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1036,6 +1181,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTemplateDetails());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1047,6 +1200,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1058,6 +1219,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForWalletTemplateDetails());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1073,6 +1242,8 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ return TalerMerchantInstanceHttpClient.procesOrderCreationResponse(resp)
}
//
@@ -1089,6 +1260,16 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
+
}
/**
@@ -1104,6 +1285,18 @@ export class TalerMerchantInstanceHttpClient {
method: "PATCH",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp)
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
+
}
/**
@@ -1115,6 +1308,16 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opSuccessFromHttp(resp, codecForWebhookSummaryResponse())
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
+
}
/**
@@ -1126,6 +1329,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opSuccessFromHttp(resp, codecForWebhookDetails())
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1137,6 +1348,15 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
+
}
//
@@ -1153,6 +1373,15 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1160,7 +1389,7 @@ export class TalerMerchantInstanceHttpClient {
*/
async updateTokenFamily(
tokenSlug: string,
- body: TalerMerchantApi.TokenFamilyCreateRequest,
+ body: TalerMerchantApi.TokenFamilyUpdateRequest,
) {
const url = new URL(`private/tokenfamilies/${tokenSlug}`, this.baseUrl);
@@ -1168,6 +1397,14 @@ export class TalerMerchantInstanceHttpClient {
method: "POST",
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTokenFamilyDetails());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1179,6 +1416,15 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTokenFamiliesList());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1190,6 +1436,15 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForTokenFamilyDetails());
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1201,6 +1456,14 @@ export class TalerMerchantInstanceHttpClient {
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
}
@@ -1232,7 +1495,14 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
body,
});
- //
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1248,22 +1518,37 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
body,
});
- //
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
* https://docs.taler.net/core/api-merchant.html#patch--management-instances-$INSTANCE
*/
async updateInstance(
- isntanceId: string,
+ instanceId: string,
body: TalerMerchantApi.InstanceReconfigurationMessage,
) {
- const url = new URL(`management/instances/${isntanceId}`, this.baseUrl);
+ const url = new URL(`management/instances/${instanceId}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "PATCH",
body,
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1275,6 +1560,13 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForInstancesResponse())
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1287,6 +1579,13 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+
+ switch (resp.status) {
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForQueryInstancesResponse())
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1302,6 +1601,18 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "DELETE",
});
+ switch (resp.status) {
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.Unauthorized:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.NotFound:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
/**
@@ -1326,5 +1637,19 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp
const resp = await this.httpLib.fetch(url.href, {
method: "GET",
});
+ switch (resp.status) {
+ case HttpStatusCode.Accepted:
+ return opSuccessFromHttp(resp, codecForAccountKycRedirects());
+ case HttpStatusCode.NoContent:
+ return opEmptySuccess(resp);
+ case HttpStatusCode.BadGateway:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.ServiceUnavailable:
+ return opKnownHttpFailure(resp.status, resp);
+ case HttpStatusCode.Conflict:
+ return opKnownHttpFailure(resp.status, resp);
+ default:
+ return opUnknownFailure(resp, await resp.text());
+ }
}
}