Spaces:
Running
Running
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 }; | |