flagpole
Version:
Simple and fast DOM integration, headless or headful browser, and REST API testing framework.
55 lines • 2.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchWithNeedle = exports.getNeedleOptions = void 0;
const http_response_1 = require("./http-response");
const needle = require("needle");
const flagpole_execution_1 = require("../flagpole-execution");
const constants_1 = require("../interfaces/constants");
const getNeedleOptions = (request) => {
var _a, _b;
return {
agent: request.proxyAgent,
auth: request.authType,
compressed: request.headers["Accept-Encoding"] === constants_1.ENCODING_GZIP,
cookies: request.cookies,
follow_max: request.maxRedirects,
headers: request.headers,
json: request.headers["Content-Type"] === constants_1.CONTENT_TYPE_JSON,
multipart: request.headers["Content-Type"] === constants_1.CONTENT_TYPE_FORM_MULTIPART,
open_timeout: request.timeout.open,
output: request.outputFile,
parse_cookies: true,
parse_response: false,
password: (_a = request.auth) === null || _a === void 0 ? void 0 : _a.password,
read_timeout: request.timeout.read,
rejectUnauthorized: request.verifyCert,
username: (_b = request.auth) === null || _b === void 0 ? void 0 : _b.username,
user_agent: "Flagpole",
};
};
exports.getNeedleOptions = getNeedleOptions;
const fetchWithNeedle = (request, opts) => {
return new Promise((resolve, reject) => {
if (request.options.cacheKey) {
const response = flagpole_execution_1.FlagpoleExecution.global.getCache(request.options.cacheKey);
if (response !== null) {
return resolve(response);
}
}
const stream = needle.request(request.method === "options" ? "head" : request.method, request.uri || "/", request.data || null, exports.getNeedleOptions(request), (err, resp) => {
if (!err && resp) {
const response = http_response_1.parseResponseFromNeedle(resp);
if (request.options.cacheKey) {
flagpole_execution_1.FlagpoleExecution.global.setCache(request.options.cacheKey, response);
}
return resolve(response);
}
reject(err);
});
if (opts === null || opts === void 0 ? void 0 : opts.redirect) {
stream.on("redirect", opts.redirect);
}
});
};
exports.fetchWithNeedle = fetchWithNeedle;
//# sourceMappingURL=needle.js.map
;