UNPKG

pepipost

Version:

Official nodejs library for sending email using web API v5

126 lines (115 loc) 5.19 kB
/** * PepipostLib * * This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ). */ 'use strict'; 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;