pepipost
Version:
Official nodejs library for sending email using web API v5
104 lines (93 loc) • 4.41 kB
JavaScript
/**
* PepipostLib
*
* This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
*/
;
const _request = require('../Http/Client/RequestClient');
const _configuration = require('../configuration');
const _apiHelper = require('../APIHelper');
const _baseController = require('./BaseController');
class StatsController {
/**
* Lets you fetch all the subaccounts created by you
*
* @param {date} startdate The starting date of the statistics to retrieve. Must follow format
* YYYY-MM-DD.
* @param {date} enddate (optional) The end date of the statistics to retrieve. Defaults to
* today. Must follow format YYYY-MM-DD.
* @param {AggregatedByEnum} aggregatedBy (optional) TODO: type description here
* @param {int} offset (optional) Example: 1
* @param {int} limit (optional) Example: 100
*
* @callback The callback function that returns response from the API call
*
* @returns {Promise}
*/
static getStatsGET(startdate, enddate, aggregatedBy, offset, limit, callback) {
// create empty callback if absent
const _callback = typeof callback === 'function' ? callback : () => undefined;
// prepare query string for API call
const _baseUri = _configuration.BASEURI;
const _pathUrl = '/stats';
let _queryBuilder = `${_baseUri}${_pathUrl}`;
// process query parameters
_queryBuilder = _apiHelper.appendUrlWithQueryParameters(_queryBuilder, {
startdate: _apiHelper.stringifyDateTime(startdate, 'date'),
enddate: _apiHelper.stringifyDateTime(enddate, 'date'),
aggregated_by: (aggregatedBy !== null) ? aggregatedBy : null,
offset: (offset !== null) ? offset : 1,
limit: (limit !== null) ? limit : 100,
});
// validate and preprocess url
const _queryUrl = _apiHelper.cleanUrl(_queryBuilder);
// prepare headers
const _headers = {
api_key: _configuration.apiKey,
'user-agent': 'APIMATIC 2.0',
};
// construct the request
const _options = {
queryUrl: _queryUrl,
method: 'GET',
headers: _headers,
};
// build the response processing.
return new Promise((_fulfill, _reject) => {
_request(_options, (_error, _response, _context) => {
let errorResponse;
if (_error) {
errorResponse = _baseController.validateResponse(_context);
_callback(errorResponse.error, errorResponse.response, errorResponse.context);
_reject(errorResponse.error);
} else if (_response.statusCode >= 200 && _response.statusCode <= 206) {
const _strResult = _response.body;
const _result = JSON.parse(_strResult);
_callback(null, _result, _context);
_fulfill(_result);
} else if (_response.statusCode === 400) {
const _err = { errorMessage: 'API Response', errorCode: 400, errorResponse: _response.body };
_callback(_err, null, _context);
_reject(_err);
} else if (_response.statusCode === 401) {
const _err = { errorMessage: 'API Response', errorCode: 401, errorResponse: _response.body };
_callback(_err, null, _context);
_reject(_err);
} else if (_response.statusCode === 403) {
const _err = { errorMessage: 'API Response', errorCode: 403, errorResponse: _response.body };
_callback(_err, null, _context);
_reject(_err);
} else if (_response.statusCode === 405) {
const _err = { errorMessage: 'Invalid input', errorCode: 405, errorResponse: _response.body };
_callback(_err, null, _context);
_reject(_err);
} else {
errorResponse = _baseController.validateResponse(_context);
_callback(errorResponse.error, errorResponse.response, errorResponse.context);
_reject(errorResponse.error);
}
});
});
}
}
module.exports = StatsController;