pepipost
Version:
Official nodejs library for sending email using web API v5
126 lines (115 loc) • 5.19 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 EventsController {
/**
* Lets you to retrieve the email transaction logs.
*
* @param {date} startdate The starting date of the statistics to retrieve. Must follow format
* YYYY-MM-DD.
* @param {EventsEnum} events (optional) Filter based on different email events. If not passed,
* all events will be fetched. Multiple comma separated events are
* allowed
* @param {SortEnum} sort (optional) Sort based on email sent time
* @param {date} enddate (optional) The end date of the statistics to retrieve. Defaults to
* today. Must follow format YYYY-MM-DD
* @param {int} offset (optional) The point in the list to begin retrieving results.
* @param {int} limit (optional) The number of results to return.
* @param {string} subject (optional) Filter logs based on subject
* @param {string} xapiheader (optional) Filter logs based on recipient's email
* @param {string} fromaddress (optional) Filter logs based on fromaddress
* @param {string} email (optional) Filter logs based on recipient's email
*
* @callback The callback function that returns response from the API call
*
* @returns {Promise}
*/
static getEventsGET(startdate,
events,
sort,
enddate,
offset,
limit,
subject,
xapiheader,
fromaddress,
email,
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 = '/events';
let _queryBuilder = `${_baseUri}${_pathUrl}`;
// process query parameters
_queryBuilder = _apiHelper.appendUrlWithQueryParameters(_queryBuilder, {
startdate: _apiHelper.stringifyDateTime(startdate, 'date'),
events: (events !== null) ? events : null,
sort: (sort !== null) ? sort : null,
enddate: _apiHelper.stringifyDateTime(enddate, 'date'),
offset: (offset !== null) ? offset : 0,
limit: (limit !== null) ? limit : 10,
subject,
xapiheader,
fromaddress,
email,
});
// 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 = EventsController;