function curl()

in apps/mountebank-mock/mountebank-source/src/cli/api.js [5:44]


function curl (options, method, path, body) {
    return new Promise((resolve, reject) => {
        const requestOptions = {
            method: method,
            path: path,
            port: options.port,
            hostname: options.host || 'localhost',
            headers: {
                'Content-Type': 'application/json',
                Connection: 'close'
            }
        };

        if (options.apikey) {
            requestOptions.headers['x-api-key'] = options.apikey;
        }

        const request = http.request(requestOptions, response => {
            response.body = '';
            response.setEncoding('utf8');
            response.on('data', chunk => { response.body += chunk; });
            response.on('end', () => {
                if (response.statusCode === 200) {
                    response.body = JSON.parse(response.body);
                    resolve(response);
                }
                else {
                    reject(new Error(`${response.statusCode}\n${response.body}`));
                }
            });
        });

        request.on('error', reject);

        if (body) {
            request.write(JSON.stringify(body, null, 2));
        }
        request.end();
    });
}