diff options
Diffstat (limited to 'packages/taler-util/src/http-client/merchant.ts')
-rw-r--r-- | packages/taler-util/src/http-client/merchant.ts | 359 |
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()); + } } } |