function postJSON()

in apps/mountebank-mock/mountebank-source/src/models/mbConnection.js [32:68]


function postJSON (what, where) {
    return new Promise((resolve, reject) => {
        const parts = new URL(where),
            driver = require(parts.protocol.replace(':', '')),
            options = {
                hostname: parts.hostname,
                port: parts.port,
                path: parts.pathname,
                method: 'POST',
                headers: { 'Content-Type': 'application/json' }
            },
            request = driver.request(options, response => {
                const packets = [];

                response.on('data', chunk => packets.push(chunk));

                response.on('end', () => {
                    const buffer = Buffer.concat(packets),
                        body = buffer.toString('utf8');

                    if (response.statusCode !== 200) {
                        reject(errors.CommunicationError({
                            statusCode: response.statusCode,
                            body: body
                        }));
                    }
                    else {
                        resolve(JSON.parse(body));
                    }
                });
            });

        request.on('error', reject);
        request.write(JSON.stringify(what));
        request.end();
    });
}