jscent
Version:
Node.js client to interact with the Centrifugo HTTP API
55 lines (49 loc) • 1.36 kB
JavaScript
var request = require('request');
var errors = require('./errors');
function send(config, body, callback) {
var params = {
url: config.url,
timeout: config.timeout
};
if (config.strictSSL === false) {
params["strictSSL"] = false;
}
if (body) {
var sign = config.token.apiSign(body);
params.headers = {'content-type': 'application/json', 'X-API-Sign': sign};
params.body = body;
}
request["post"](params, function (err, res) {
handleResponse(err, config.url, res, callback);
});
}
function handleResponse(err, url, res, callback) {
if (typeof callback !== "function") {
return;
}
var error = null;
if (err) {
error = new errors.RequestError(
"Request failed with an error",
url,
err,
res ? res.statusCode : null,
res ? res.body : null
);
} else if (res.statusCode >= 400) {
error = new errors.RequestError(
"Unexpected status code " + res.statusCode,
url,
err,
res ? res.statusCode : null,
res ? res.body : null
);
}
if (error === null) {
var data = JSON.parse(res.body);
callback(null, data);
} else {
callback(error, null);
}
}
exports.send = send;