UNPKG

pepipost

Version:

Official nodejs library for sending email using web API v5

91 lines (81 loc) 2.96 kB
/** * 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;