@sophons/request
Version:
🚀 Probably the best Node.js HTTP request component, It also contains a rich stream processing
47 lines (46 loc) • 2.28 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fastFormData = exports.fastRequest = exports.transformQuery = void 0;
const axios_1 = require("axios");
const Form = require("form-data");
const querystring_1 = require("querystring");
/**
* Transform request query
*/
exports.transformQuery = (url, query) => {
if (!query)
return url;
const baseUrl = url && !url.includes('?') ? `${url}?` : `${url}&`;
return `${baseUrl}${querystring_1.stringify(query)}`;
};
/**
* Fast create an http or https request.
*/
exports.fastRequest = (options) => __awaiter(void 0, void 0, void 0, function* () {
if (!options || !options.url)
return null;
const response = yield axios_1.default(Object.assign(Object.assign({}, options), { url: exports.transformQuery(options.url, options.query) }));
return response;
});
/**
* Fast create an http or https form-data request.
*/
exports.fastFormData = (options) => __awaiter(void 0, void 0, void 0, function* () {
if (!options || !options.url || !options.formData)
return null;
const form = new Form();
const { url, query, formData, configs } = options;
Object.keys(formData).forEach((key) => form.append(key, formData[key]));
const headers = !configs || !configs.headers ? form.getHeaders() : Object.assign(Object.assign({}, configs.headers), form.getHeaders());
const response = yield axios_1.default.post(exports.transformQuery(url, query), form, !configs ? { headers } : Object.assign(Object.assign({}, configs), { headers }));
return response;
});