all files / modules/utils/ sendRequest.js

88.89% Statements 16/18
50% Branches 1/2
75% Functions 3/4
88.89% Lines 16/18
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 28 29 30 31 32 33 34 35 36 37 38                                            
const http = require("http");
const https = require("https");
const AbortablePromise = require("./AbortablePromise");
 
function sendRequest(conn, location) {
    const transport = location.protocol === "https:" ? https : http;
 
    return new AbortablePromise(function (resolve, reject, onAbort) {
        const nodeRequest = transport.request({
            method: conn.method,
            protocol: location.protocol,
            auth: location.auth,
            hostname: location.hostname,
            port: location.port,
            path: location.path,
            headers: conn.request.headers
        });
 
        nodeRequest.on("response", function (nodeResponse) {
            conn.status = nodeResponse.statusCode;
            conn.response.headers = nodeResponse.headers;
            conn.response.content = nodeResponse;
            resolve(conn);
        });
 
        nodeRequest.on("error", reject);
 
        onAbort(function () {
            nodeRequest.abort();
            resolve();
        });
 
        conn.request.content.pipe(nodeRequest);
    });
}
 
module.exports = sendRequest;