gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: harness compilation, default


From: gnunet
Subject: [taler-wallet-core] branch master updated: harness compilation, default headers for http request
Date: Fri, 12 May 2023 14:37:52 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new f7481ba1d harness compilation, default headers for http request
f7481ba1d is described below

commit f7481ba1d8e4575bc534025dbe99f57c6b50102e
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri May 12 09:37:45 2023 -0300

    harness compilation, default headers for http request
---
 packages/taler-harness/src/harness/harness.ts      |  2 +-
 .../src/integrationtests/test-bank-api.ts          |  4 +-
 packages/web-util/src/utils/http-impl.browser.ts   | 57 ++++++++++++++--------
 packages/web-util/src/utils/http-impl.sw.ts        | 25 ++++------
 4 files changed, 50 insertions(+), 38 deletions(-)

diff --git a/packages/taler-harness/src/harness/harness.ts 
b/packages/taler-harness/src/harness/harness.ts
index c08f3fa1d..0c05ddb2e 100644
--- a/packages/taler-harness/src/harness/harness.ts
+++ b/packages/taler-harness/src/harness/harness.ts
@@ -931,7 +931,7 @@ export class FakebankService
     );
     await this.pingUntilAvailable();
     for (const acc of this.accounts) {
-      await BankApi.registerAccount(this, acc.accountName, 
acc.accountPassword);
+      await BankApi.registerAccount(this, acc.accountName, 
acc.accountPassword, {});
     }
   }
 
diff --git a/packages/taler-harness/src/integrationtests/test-bank-api.ts 
b/packages/taler-harness/src/integrationtests/test-bank-api.ts
index 5e3448625..a0e1c2085 100644
--- a/packages/taler-harness/src/integrationtests/test-bank-api.ts
+++ b/packages/taler-harness/src/integrationtests/test-bank-api.ts
@@ -100,12 +100,12 @@ export async function runBankApiTest(t: GlobalTestState) {
 
   console.log("setup done!");
 
-  const bankUser = await BankApi.registerAccount(bank, "user1", "pw1");
+  const bankUser = await BankApi.registerAccount(bank, "user1", "pw1", {});
 
   // Make sure that registering twice results in a 409 Conflict
   {
     const e = await t.assertThrowsTalerErrorAsync(async () => {
-      await BankApi.registerAccount(bank, "user1", "pw2");
+      await BankApi.registerAccount(bank, "user1", "pw2", {});
     });
     t.assertTrue(e.errorDetail.httpStatusCode === 409);
   }
diff --git a/packages/web-util/src/utils/http-impl.browser.ts 
b/packages/web-util/src/utils/http-impl.browser.ts
index 2b6ca019c..3bc5bb141 100644
--- a/packages/web-util/src/utils/http-impl.browser.ts
+++ b/packages/web-util/src/utils/http-impl.browser.ts
@@ -29,6 +29,8 @@ import {
   HttpRequestOptions,
   HttpResponse,
   Headers,
+  getDefaultHeaders,
+  encodeBody,
 } from "@gnu-taler/taler-util/http";
 
 const logger = new Logger("browserHttpLib");
@@ -47,6 +49,8 @@ export class BrowserHttpLib implements HttpRequestLibrary {
   ): Promise<HttpResponse> {
     const requestMethod = options?.method ?? "GET";
     const requestBody = options?.body;
+    const requestHeader = options?.headers;
+    const requestTimeout = options?.timeout ?? { d_ms: 2 * 1000 };
 
     if (this.throttlingEnabled && this.throttle.applyThrottle(requestUrl)) {
       const parsedUrl = new URL(requestUrl);
@@ -61,28 +65,18 @@ export class BrowserHttpLib implements HttpRequestLibrary {
       );
     }
 
+    let myBody: ArrayBuffer | undefined =
+      requestMethod === "POST" || requestMethod === "PUT"
+        ? encodeBody(requestBody)
+        : undefined;
+
+    const requestHeadersMap = {
+      ...getDefaultHeaders(requestMethod),
+      ...requestHeader,
+    };
+
     return new Promise<HttpResponse>((resolve, reject) => {
       const myRequest = new XMLHttpRequest();
-      myRequest.open(requestMethod, requestUrl);
-      if (options?.headers) {
-        for (const headerName in options.headers) {
-          myRequest.setRequestHeader(headerName, options.headers[headerName]);
-        }
-      }
-      myRequest.responseType = "arraybuffer";
-      if (requestBody) {
-        if (requestBody instanceof ArrayBuffer) {
-          myRequest.send(requestBody);
-        } else if (ArrayBuffer.isView(requestBody)) {
-          myRequest.send(requestBody);
-        } else if (typeof requestBody === "string") {
-          myRequest.send(requestBody);
-        } else {
-          myRequest.send(JSON.stringify(requestBody));
-        }
-      } else {
-        myRequest.send();
-      }
 
       myRequest.onerror = (e) => {
         logger.error("http request error");
@@ -98,6 +92,29 @@ export class BrowserHttpLib implements HttpRequestLibrary {
         );
       };
 
+      myRequest.open(requestMethod, requestUrl);
+
+      let timeoutId: any | undefined;
+      if (requestTimeout.d_ms !== "forever") {
+        timeoutId = setTimeout(() => {
+          myRequest.abort();
+          reject(
+            TalerError.fromDetail(
+              TalerErrorCode.WALLET_HTTP_REQUEST_GENERIC_TIMEOUT,
+              {},
+              `request to ${requestUrl} timed out`,
+            ),
+          );
+        }, requestTimeout.d_ms);
+      }
+
+      for (const headerName in Object.keys(requestHeadersMap)) {
+        myRequest.setRequestHeader(headerName, requestHeadersMap[headerName]);
+      }
+
+      myRequest.responseType = "arraybuffer";
+      myRequest.send(myBody);
+
       myRequest.addEventListener("readystatechange", (e) => {
         if (myRequest.readyState === XMLHttpRequest.DONE) {
           if (myRequest.status === 0) {
diff --git a/packages/web-util/src/utils/http-impl.sw.ts 
b/packages/web-util/src/utils/http-impl.sw.ts
index 921acd63b..59bef1775 100644
--- a/packages/web-util/src/utils/http-impl.sw.ts
+++ b/packages/web-util/src/utils/http-impl.sw.ts
@@ -28,6 +28,8 @@ import {
   HttpRequestLibrary,
   HttpRequestOptions,
   HttpResponse,
+  encodeBody,
+  getDefaultHeaders,
 } from "@gnu-taler/taler-util/http";
 
 /**
@@ -60,20 +62,13 @@ export class ServiceWorkerHttpLib implements 
HttpRequestLibrary {
       );
     }
 
-    let myBody: BodyInit | undefined = undefined;
-    if (requestBody != null) {
-      if (typeof requestBody === "string") {
-        myBody = requestBody;
-      } else if (requestBody instanceof ArrayBuffer) {
-        myBody = requestBody;
-      } else if (ArrayBuffer.isView(requestBody)) {
-        myBody = requestBody;
-      } else if (typeof requestBody === "object") {
-        myBody = JSON.stringify(requestBody);
-      } else {
-        throw Error("unsupported request body type");
-      }
-    }
+    let myBody: ArrayBuffer | undefined =
+      requestMethod === "POST" ? encodeBody(requestBody) : undefined;
+
+    const requestHeadersMap = {
+      ...getDefaultHeaders(requestMethod),
+      ...requestHeader,
+    };
 
     const controller = new AbortController();
     let timeoutId: any | undefined;
@@ -85,7 +80,7 @@ export class ServiceWorkerHttpLib implements 
HttpRequestLibrary {
 
     try {
       const response = await fetch(requestUrl, {
-        headers: requestHeader,
+        headers: requestHeadersMap,
         body: myBody,
         method: requestMethod,
         signal: controller.signal,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]