diff --git a/src/backend/extension/plasmo.ts b/src/backend/extension/plasmo.ts index cc07ae24..4a7aaad3 100644 --- a/src/backend/extension/plasmo.ts +++ b/src/backend/extension/plasmo.ts @@ -21,7 +21,7 @@ export type ExtensionMakeRequestBody = value: string; } | { - bodyType: "FormData" | "URLSearchParams" | "Object"; + bodyType: "FormData" | "URLSearchParams" | "object"; value: Record; }; diff --git a/src/backend/extension/request.ts b/src/backend/extension/request.ts new file mode 100644 index 00000000..3e3f9b8b --- /dev/null +++ b/src/backend/extension/request.ts @@ -0,0 +1,22 @@ +import { ExtensionMakeRequestBodyType } from "./plasmo"; + +export function getBodyTypeFromBody( + body: unknown, +): ExtensionMakeRequestBodyType { + if (typeof body === "string") return "string"; + if (body instanceof FormData) return "FormData"; + if (body instanceof URLSearchParams) return "URLSearchParams"; + if (typeof body === "object") return "object"; + return "string"; +} + +export function convertBodyToObject(body: unknown): any { + if (body instanceof FormData || body instanceof URLSearchParams) { + const obj: Record = {}; + for (const [key, value] of body.entries()) { + obj[key] = value; + } + return obj; + } + return body; +} diff --git a/src/backend/providers/fetchers.ts b/src/backend/providers/fetchers.ts index dc9682c3..bcb8f087 100644 --- a/src/backend/providers/fetchers.ts +++ b/src/backend/providers/fetchers.ts @@ -4,7 +4,7 @@ import { sendExtensionRequest } from "@/backend/extension/messaging"; import { getApiToken, setApiToken } from "@/backend/helpers/providerApi"; import { getProviderApiUrls, getProxyUrls } from "@/utils/proxyUrls"; -import { ExtensionMakeRequestBodyType } from "../extension/plasmo"; +import { convertBodyToObject, getBodyTypeFromBody } from "../extension/request"; function makeLoadbalancedList(getter: () => string[]) { let listIndex = -1; @@ -67,47 +67,20 @@ function makeFinalHeaders( ); } -function getBodyTypeFromBody(body: any): ExtensionMakeRequestBodyType { - if (typeof body === "string") return "string"; - if (body instanceof FormData) return "FormData"; - if (body instanceof URLSearchParams) return "URLSearchParams"; - if (typeof body === "object") return "Object"; - return "string"; -} - -function convertBodyToObject(body: any): Record { - if (body instanceof FormData) { - const obj: Record = {}; - for (const [key, value] of body.entries()) { - obj[key] = value; - } - return obj; - } - if (body instanceof URLSearchParams) { - const obj: Record = {}; - for (const [key, value] of body.entries()) { - obj[key] = value; - } - return obj; - } - return body; -} - export function makeExtensionFetcher() { const fetcher: Fetcher = async (url, ops) => { const opsWithoutBody = { ...ops, body: undefined }; - const result = (await sendExtensionRequest({ + const result = await sendExtensionRequest({ url, ...opsWithoutBody, ...(ops.body && { body: { bodyType: getBodyTypeFromBody(ops.body), - value: convertBodyToObject(ops.body) as any, + value: convertBodyToObject(ops.body), }, }), - })) as any; + }); if (!result?.success) throw new Error(`extension error: ${result?.error}`); - console.log(result); const res = result.response; return { body: res.body,