UNPKG

flagpole

Version:

Simple and fast DOM integration, headless or headful browser, and REST API testing framework.

55 lines 2.48 kB
"use strict"; 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