@zenvia/sdk
Version:
This SDK for [Node.js](https://nodejs.org/) was created based on the [Zenvia](https://www.zenvia.com/) [API](https://zenvia.github.io/zenvia-openapi-spec/).
62 lines • 2.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.del = exports.patch = exports.get = exports.post = void 0;
const rp = require("request-promise");
const url = 'https://api.zenvia.com';
async function post(token, path, body, logger, options) {
return request(token, 'post', path, body, logger, options);
}
exports.post = post;
async function get(token, path, logger, options) {
return request(token, 'get', path, undefined, logger, options);
}
exports.get = get;
async function patch(token, path, body, logger, options) {
return request(token, 'patch', path, body, logger, options);
}
exports.patch = patch;
async function del(token, path, logger, options) {
return request(token, 'delete', path, undefined, logger, options);
}
exports.del = del;
async function request(token, method, path, body, logger, options) {
const uri = `${url}${path}`;
const data = {
method,
uri,
body,
formData: options === null || options === void 0 ? void 0 : options.formData,
headers: Object.assign({ 'X-API-Token': `${token}` }, options === null || options === void 0 ? void 0 : options.customHeaders),
json: true,
forever: true,
simple: false,
resolveWithFullResponse: true,
};
let error;
logger.debug(`Starting request with following data: ${JSON.stringify(data)}`);
const startTime = Date.now();
try {
const response = await rp(data);
const elapsedTime = Date.now() - startTime;
if (response.statusCode >= 200 && response.statusCode < 300) {
logger.debug(`Success on send ${method} request to ${uri} takes ${elapsedTime} miliseconds and return status code ${response.statusCode}`);
return response.body;
}
logger.warn(`The performed request take ${elapsedTime} miliseconds and return a non 2xx status code ${response.statusCode}`);
error = {
httpStatusCode: response.statusCode,
message: 'Unsuccessful request',
body: Buffer.isBuffer(response.body) ? response.body.toString() : response.body,
};
}
catch (e) {
const elapsedTime = Date.now() - startTime;
logger.error(`Error on try to send request that takes ${elapsedTime} miliseconds`, e);
error = {
message: e.message,
causedBy: e,
};
}
throw error;
}
//# sourceMappingURL=request.js.map