diff --git a/src/lib/server/utils/http/client.ts b/src/lib/server/utils/http/client.ts index e18a28b..be6ea52 100644 --- a/src/lib/server/utils/http/client.ts +++ b/src/lib/server/utils/http/client.ts @@ -75,16 +75,17 @@ export class BaseHttpClient { clearTimeout(timeoutId); - // Parse response - handle empty body (common for DELETE) + // Parse response based on responseType const text = await response.text(); - const data = text ? JSON.parse(text) : null; + const responseType = options?.responseType ?? 'json'; + const data = responseType === 'text' ? text : (text ? JSON.parse(text) : null); // Check for HTTP errors if (!response.ok) { const error = new HttpError( `HTTP ${response.status}: ${response.statusText}`, response.status, - data + responseType === 'json' ? data : text ); // Retry on specific status codes diff --git a/src/lib/server/utils/http/types.ts b/src/lib/server/utils/http/types.ts index 5dadd67..3ef4379 100644 --- a/src/lib/server/utils/http/types.ts +++ b/src/lib/server/utils/http/types.ts @@ -16,6 +16,7 @@ export interface RequestOptions { headers?: Record; // Additional headers for this request timeout?: number; // Override timeout for this request signal?: AbortSignal; // Abort signal for cancellation + responseType?: 'json' | 'text'; // Response parsing type (default: 'json') } export class HttpError extends Error {