homepage/src/utils/http.js

72 lines
1.6 KiB
JavaScript
Raw Normal View History

2022-09-07 16:53:24 +03:00
/* eslint-disable prefer-promise-reject-errors */
2022-08-25 20:57:25 +03:00
import https from "https";
import http from "http";
2022-08-26 22:33:54 +03:00
export function httpsRequest(url, params) {
2022-09-07 16:53:24 +03:00
return new Promise((resolve, reject) => {
const request = https.request(url, params, (response) => {
const data = [];
2022-08-25 20:57:25 +03:00
response.on("data", (chunk) => {
2022-08-27 12:38:32 +03:00
data.push(chunk);
2022-08-25 20:57:25 +03:00
});
response.on("end", () => {
resolve([response.statusCode, response.headers["content-type"], Buffer.concat(data), response.headers]);
2022-08-25 20:57:25 +03:00
});
});
request.on("error", (error) => {
reject([500, error]);
});
if (params.body) {
request.write(params.body);
}
2022-08-25 20:57:25 +03:00
request.end();
});
}
2022-08-26 22:33:54 +03:00
export function httpRequest(url, params) {
2022-09-07 16:53:24 +03:00
return new Promise((resolve, reject) => {
const request = http.request(url, params, (response) => {
const data = [];
2022-08-25 20:57:25 +03:00
response.on("data", (chunk) => {
2022-08-27 12:38:32 +03:00
data.push(chunk);
2022-08-25 20:57:25 +03:00
});
response.on("end", () => {
resolve([response.statusCode, response.headers["content-type"], Buffer.concat(data), response.headers]);
2022-08-25 20:57:25 +03:00
});
});
request.on("error", (error) => {
reject([500, error]);
});
if (params.body) {
request.write(params.body);
}
2022-08-25 20:57:25 +03:00
request.end();
});
}
export function httpProxy(url, params = {}) {
const constructedUrl = new URL(url);
if (constructedUrl.protocol === "https:") {
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
});
return httpsRequest(constructedUrl, {
agent: httpsAgent,
...params,
});
}
2022-09-07 16:53:24 +03:00
return httpRequest(constructedUrl, params);
}