pepipost
Version:
Official nodejs library for sending email using web API v5
91 lines (81 loc) • 2.96 kB
JavaScript
/**
* PepipostLib
*
* This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
*/
'use strict';
const HttpContext = require('./HttpContext');
const HttpResponse = require('../Response/HttpResponse');
const request = require('request');
const APIHelper = require('../../APIHelper');
// convert to request's version of http request
const convertHttpRequest = function convertHttpRequest(req) {
const options = {
url: req.queryUrl,
method: req.method,
headers: req.headers,
followAllRedirects: true,
};
if (req.username) {
options.auth = { user: req.username, pass: req.password };
}
if (req.body) {
options.body = req.body;
}
if (req.formData) {
// need to add to request's formdata object directly
// options.formData = APIHelper.formDataEncodeObject(req.formData);
}
if (req.form) {
options.form = APIHelper.urlEncodeObject(req.form);
options.headers['content-type'] = 'application/x-www-form-urlencoded';
}
return options;
};
const appendFormdata = function appendFormdata(form, data) {
const dataArray = APIHelper.formDataEncodeObject(data);
for (let index = 0; index < dataArray.length; index += 1) {
if (Object.prototype.hasOwnProperty.call(dataArray, index)) {
const key = dataArray[index].key;
const value = dataArray[index].value;
form.append(key, value);
}
}
};
const convertHttpResponse = function convertHttpResponse(resp) {
const response = new HttpResponse();
if (resp) {
response.body = resp.body;
response.headers = resp.headers;
response.statusCode = resp.statusCode;
}
return response;
};
/**
* Execute a given HttpRequest to get string response back
* @param {HttpRequest | HttpBodyRequest} req The query string builder to replace the
* template parameters
* @param {function} callback Callback function to execute when request completes or fails
* @param {Array} parameters The parameters to replace in the queryBuilder
* @returns {void} Does not return anything
*/
const executeRequest = function executeRequest(req, callback) {
// convert abstracted request to request's http request
const convertedRequest = convertHttpRequest(req);
const context = new HttpContext();
context.request = req;
// make a temp callback
const internalCallback = function cb(error, res) {
const response = convertHttpResponse(res);
context.response = response;
callback(error, response, context);
};
// make the request
const rq = request(convertedRequest, internalCallback);
// add formdata directly.
if (req.formData) {
const form = rq.form();
appendFormdata(form, req.formData);
}
};
module.exports = executeRequest;