phaxio-official
Version:
The official Node.JS library for Phaxio API v2.1.0. https://phaxio.com
128 lines (113 loc) • 3.3 kB
JavaScript
const request = require('request-promise-native');
const errorHandler = require('../error-handler');
function cancel(url, id, auth, agentOptions) {
return new Promise((resolve, reject) => {
request({
method: 'POST',
url: `${url}/faxes/${id}/cancel`,
auth,
agentOptions,
})
.then((response) => {
const res = JSON.parse(response);
if (!res.success) return reject(errorHandler(res.message));
return resolve(res);
})
.catch((err) => reject(err));
});
}
function resend(url, id, auth, options = { id: null, callback_url: null }, agentOptions) {
return new Promise((resolve, reject) => {
const { callback_url } = options; // eslint-disable-line camelcase
const req = {
method: 'POST',
url: `${url}/faxes/${id}/resend`,
auth,
callback_url,
agentOptions,
};
if (req.callback_url === null || req.callback_url === undefined) delete req.callback_url;
request(req)
.then((response) => {
const res = JSON.parse(response);
if (!res.success) return reject(errorHandler(res.message));
return resolve(res);
})
.catch((err) => reject(err));
});
}
function testDelete(url, id, auth, agentOptions) {
return new Promise((resolve, reject) => {
request({
method: 'DELETE',
url: `${url}/faxes/${id}`,
auth,
agentOptions,
})
.then((response) => {
const res = JSON.parse(response);
if (!res.success) return reject(errorHandler(res.message));
return resolve(res);
})
.catch((err) => reject(err));
});
}
function getInfo(url, id, auth, agentOptions) {
return new Promise((resolve, reject) => {
request({
method: 'GET',
url: `${url}/faxes/${id}`,
auth,
agentOptions,
})
.then((response) => {
const res = JSON.parse(response);
if (!res.success) return reject(errorHandler(res.message));
return resolve(res);
})
.catch((err) => reject(err));
});
}
function getFile(url, id, auth, options = { id: null, thumbnail: null }, agentOptions) {
return new Promise((resolve, reject) => { // eslint-disable-line consistent-return
const thumbnail = options.thumbnail === undefined ? null : options.thumbnail;
if (!['s', 'l', null].includes(thumbnail)) {
return reject(new Error('ThumbnailSizeInvalid: Must be \'s\', \'l\', or null (default) for full file.'));
}
const req = {
method: 'GET',
url: `${url}/faxes/${id}/file`,
auth,
agentOptions,
encoding: null,
};
if (thumbnail !== null) req.qs = { thumbnail };
request(req)
.then((response) => resolve(response))
.catch((err) => reject(err));
});
}
function deleteFile(url, id, auth, agentOptions) {
return new Promise((resolve, reject) => {
request({
method: 'DELETE',
url: `${url}/faxes/${id}/file`,
auth,
agentOptions,
})
.then((response) => {
const res = JSON.parse(response);
if (!res.success) return reject(errorHandler(res.message));
return resolve(res);
})
.catch((err) => reject(err));
});
}
module.exports = {
cancel,
resend,
testDelete,
getInfo,
getFile,
deleteFile,
};