[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] 01/03: add support for FormData
From: |
gnunet |
Subject: |
[taler-wallet-core] 01/03: add support for FormData |
Date: |
Wed, 21 Aug 2024 15:25:41 +0200 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository wallet-core.
commit c63b6481d62278488dac3870c88917f39c4d2b13
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Tue Aug 20 12:20:20 2024 -0300
add support for FormData
---
packages/taler-util/src/http-client/exchange.ts | 8 +++++---
packages/taler-util/src/http-common.ts | 2 ++
packages/taler-util/src/types-taler-exchange.ts | 2 +-
packages/web-util/src/utils/http-impl.sw.ts | 9 +++++++++
4 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/packages/taler-util/src/http-client/exchange.ts
b/packages/taler-util/src/http-client/exchange.ts
index 790c890f8..9b7635cb4 100644
--- a/packages/taler-util/src/http-client/exchange.ts
+++ b/packages/taler-util/src/http-client/exchange.ts
@@ -51,6 +51,7 @@ import {
codecForExchangeConfig,
codecForExchangeKeys,
codecForKycProcessClientInformation,
+ codecForKycProcessStartInformation,
codecForLegitimizationNeededResponse
} from "../types-taler-exchange.js";
import { CacheEvictor, addMerchantPaginationParams, nullEvictor } from
"./utils.js";
@@ -319,17 +320,18 @@ export class TalerExchangeHttpClient {
* https://docs.taler.net/core/api-exchange.html#post--kyc-start-$ID
*
*/
- async startKycProcess(requirement: KycRequirementInformationId) {
+ async startKycProcess(requirement: KycRequirementInformationId, body: object
= {}) {
const url = new URL(`kyc-start/${requirement}`, this.baseUrl);
const resp = await this.httpLib.fetch(url.href, {
method: "POST",
+ body
});
switch (resp.status) {
- case HttpStatusCode.NoContent:
- return opEmptySuccess(resp);
+ case HttpStatusCode.Ok:
+ return opSuccessFromHttp(resp, codecForKycProcessStartInformation());
case HttpStatusCode.NotFound:
return opKnownHttpFailure(resp.status, resp);
case HttpStatusCode.Conflict:
diff --git a/packages/taler-util/src/http-common.ts
b/packages/taler-util/src/http-common.ts
index 6f537dda2..7e7173ac5 100644
--- a/packages/taler-util/src/http-common.ts
+++ b/packages/taler-util/src/http-common.ts
@@ -502,6 +502,8 @@ export function encodeBody(body: unknown): ArrayBuffer {
return body.buffer;
} else if (body instanceof ArrayBuffer) {
return body;
+ } else if (typeof body === "object" && body.constructor.name === "FormData")
{
+ return body as ArrayBuffer;
} else if (typeof body === "object") {
return textEncoder.encode(JSON.stringify(body)).buffer;
}
diff --git a/packages/taler-util/src/types-taler-exchange.ts
b/packages/taler-util/src/types-taler-exchange.ts
index dcd62bec2..0cd722239 100644
--- a/packages/taler-util/src/types-taler-exchange.ts
+++ b/packages/taler-util/src/types-taler-exchange.ts
@@ -2483,7 +2483,7 @@ export const codecForKycProcessClientInformation =
)
.build("TalerExchangeApi.KycProcessClientInformation");
-interface KycProcessStartInformation {
+export interface KycProcessStartInformation {
// URL to open.
redirect_url: string;
}
diff --git a/packages/web-util/src/utils/http-impl.sw.ts
b/packages/web-util/src/utils/http-impl.sw.ts
index 7b168b739..21e328363 100644
--- a/packages/web-util/src/utils/http-impl.sw.ts
+++ b/packages/web-util/src/utils/http-impl.sw.ts
@@ -99,6 +99,15 @@ export class BrowserFetchHttpLib implements
HttpRequestLibrary {
});
}
+ /**
+ * default header assume everything is json
+ * in case of formData the content-type will be
+ * auto generated
+ */
+ if (myBody instanceof FormData) {
+ delete requestHeadersMap["Content-Type"]
+ }
+
const controller = new AbortController();
let timeoutId: ReturnType<typeof setTimeout> | undefined;
if (requestTimeout.d_ms !== "forever") {
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.