From a42f0a60843580695acefe9e088a3b872b73161d Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Wed, 23 Apr 2025 16:26:16 +0300 Subject: [PATCH] [desktop] Tauri HTTP interceptor: respect request data type --- .../tauri/tauri-http-interceptor.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/desktop/angular/projects/safing/portmaster-api/src/lib/platform-specific/tauri/tauri-http-interceptor.ts b/desktop/angular/projects/safing/portmaster-api/src/lib/platform-specific/tauri/tauri-http-interceptor.ts index 52b60381..8a1873de 100644 --- a/desktop/angular/projects/safing/portmaster-api/src/lib/platform-specific/tauri/tauri-http-interceptor.ts +++ b/desktop/angular/projects/safing/portmaster-api/src/lib/platform-specific/tauri/tauri-http-interceptor.ts @@ -22,7 +22,7 @@ export function TauriHttpInterceptor(req: HttpRequest, next: HttpHandle acc[key] = req.headers.get(key) || ''; return acc; }, {}), - body: req.body ? JSON.stringify(req.body) : undefined, + body: getRequestBody(req), }; //console.log('[TauriHttpInterceptor] Fetching:', req.url, "Headers:", fetchOptions.headers); return from(fetch(req.url, fetchOptions)).pipe( @@ -126,3 +126,19 @@ export function TauriHttpInterceptor(req: HttpRequest, next: HttpHandle ); } +function getRequestBody(req: HttpRequest): any { + if (!req.body) { + return undefined; + } + + // Handle different body types properly + if (req.body instanceof FormData || + req.body instanceof Blob || + req.body instanceof ArrayBuffer || + req.body instanceof URLSearchParams) { + return req.body; + } + + // Default to JSON stringify for object data + return JSON.stringify(req.body); +} \ No newline at end of file