File size: 690 Bytes
755dd12 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import url from 'url';
interface RequestConfig {
endpoint: string;
timeout?: number;
query?: Record<string, any>;
data?: BodyInit | null;
headers?: Record<string, any>;
method?: RequestInit['method']
}
export const httpRequest = async (config: RequestConfig) => {
const { endpoint, timeout = 10 * 60 * 1000, query, headers, data, method = 'GET' } = config;
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), timeout);
const params = url.format({
query: query
});
const res = await fetch(endpoint + params, {
method,
headers,
body: data,
signal: controller.signal
});
clearTimeout(id);
return res;
};
|