openai-proxy / src /fetch.ts
zhzabcd's picture
Upload 5 files
ca5b3b3 verified
import { ENV } from "../env";
import https from "https";
import { APIQueueItem, CustomFetch, QueueManager } from "@saintno/needed-tools";
import { AgentManager } from "./agent";
const cFetch = new CustomFetch();
const fAgent = new https.Agent({
rejectUnauthorized: false,
});
const Fetcher = APIQueueItem.createInstance(
cFetch,
new QueueManager("Fetcher")
);
/**
* Generates the headers object for a fetch request.
*
* @param headers - Optional headers to be included in the generated headers object.
* @returns The generated headers object.
*/
const generateFetchHeaders = (headers?: HeadersInit) => {
return {
...headers,
accept: "*/*",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"content-type": "application/json",
"oai-language": "en-US",
origin: ENV.BASE_URL,
pragma: "no-cache",
referer: ENV.BASE_URL,
"sec-ch-ua":
'"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": AgentManager.getInstance().userAgentString,
};
};
cFetch.setBeforeCall(async (url, config) => {
config = {
...config,
headers: generateFetchHeaders(config.headers),
agent: fAgent,
} as FetchRequestInit;
return { url, config };
});
cFetch.setOnParse(async (response) => {
return response;
});
export { Fetcher, generateFetchHeaders };