Files
lnreader-plugins/libs/fetch.ts
T
2024-01-14 22:03:37 +07:00

55 lines
1.5 KiB
TypeScript

export async function fetchApi(
url: string,
init?: {
headers?: Record<string,string> | Headers;
[x: string]: string | Record<string,string> | undefined | FormData | Headers;
},
) {
let defaultHeaders: {
'User-Agent'?: string,
'Cookie'?: string,
} = {};
try {
const getHeaders = (await import('../index.js')).getHeaders;
defaultHeaders = getHeaders();
}catch{
// nothing to do
}
if(init?.headers) {
if(init.headers instanceof Headers){
if(!init.headers.get('User-Agent') && defaultHeaders['User-Agent']){
init.headers.set('User-Agent', defaultHeaders['User-Agent']);
}
if(defaultHeaders.Cookie) {
init.headers.set('Cookie', defaultHeaders.Cookie);
}
}else{
init.headers = {
...defaultHeaders,
...init.headers,
};
}
}else{
init = {
...init,
headers: defaultHeaders
}
}
console.log(url, init);
return await fetch(url, init);
}
export const fetchFile = async function (url: string, init?: RequestInit) {
if (!init) init = {};
try {
const res = await fetch(url, init);
if (!res.ok) return undefined;
const arrayBuffer = await res.arrayBuffer();
return Buffer.from(arrayBuffer).toString("base64");
} catch (e) {
return undefined;
}
};