136 lines
4.6 KiB
JavaScript
136 lines
4.6 KiB
JavaScript
|
/**
|
||
|
* ==============================================================================
|
||
|
* Imports
|
||
|
* ==============================================================================
|
||
|
*/
|
||
|
const http = require("http");
|
||
|
const https = require("https");
|
||
|
|
||
|
/** ********************************************** */
|
||
|
/** ********************************************** */
|
||
|
/** ********************************************** */
|
||
|
|
||
|
/** ****************************************************************************** */
|
||
|
/** ****************************************************************************** */
|
||
|
/** ****************************************************************************** */
|
||
|
/** ****************************************************************************** */
|
||
|
/** ****************************************************************************** */
|
||
|
/** ****************************************************************************** */
|
||
|
|
||
|
/**
|
||
|
* ==============================================================================
|
||
|
* Main Function
|
||
|
* ==============================================================================
|
||
|
* @param {Object} mailObject - foundUser if any
|
||
|
*/
|
||
|
/** ********************* Main API Handler */
|
||
|
module.exports = async function httpFetch({ protocol, options, paradigm }) {
|
||
|
if (!protocol) protocol = "http";
|
||
|
|
||
|
/**
|
||
|
* Http(s) Response function
|
||
|
*
|
||
|
* @description handle http and https protocols differently
|
||
|
* @param {object} response => response object
|
||
|
* @param {Function} resolve => promise resolve method
|
||
|
* @param {Function} reject => promise reject method
|
||
|
*/
|
||
|
function httpResponse(response, resolve, reject) {
|
||
|
var str = "";
|
||
|
|
||
|
/** * Append data chunks to "str" variable
|
||
|
*/
|
||
|
response.on("data", function (chunk) {
|
||
|
str += chunk;
|
||
|
});
|
||
|
|
||
|
/** * the whole response has been received, so we just print it out here
|
||
|
*/
|
||
|
response.on("end", function () {
|
||
|
resolve(JSON.parse(str));
|
||
|
});
|
||
|
|
||
|
/** * Handle errors
|
||
|
*/
|
||
|
response.on("error", (err) => {
|
||
|
console.log(err);
|
||
|
reject("Fetch Failed");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Switch protocols
|
||
|
*
|
||
|
* @description handle http and https protocols differently
|
||
|
*/
|
||
|
switch (protocol) {
|
||
|
case "http":
|
||
|
/**
|
||
|
* Handle http protocol
|
||
|
*
|
||
|
* @description handles fetch requests with http protocol
|
||
|
* @see => handles strapi api calls only for now
|
||
|
*/
|
||
|
return await new Promise((resolve, reject) => {
|
||
|
http.request(
|
||
|
/** * Make Request
|
||
|
* @abstract Make Request
|
||
|
*/
|
||
|
{
|
||
|
...options,
|
||
|
host: "localhost",
|
||
|
port: "1337",
|
||
|
// path: "/api/blog-posts",
|
||
|
// href: "http://localhost:1337/api/blog-posts",
|
||
|
headers: {
|
||
|
Authorization: `bearer ${process.env.STRAPI_API_KEY_DEV}`,
|
||
|
},
|
||
|
},
|
||
|
/** * Handle Response
|
||
|
* @abstract Handle response
|
||
|
*/
|
||
|
(response) => {
|
||
|
httpResponse(response, resolve, reject);
|
||
|
}
|
||
|
).end();
|
||
|
});
|
||
|
break;
|
||
|
|
||
|
case "https":
|
||
|
/**
|
||
|
* Handle http protocol
|
||
|
*
|
||
|
* @description handles fetch requests with http protocol
|
||
|
* @see => handles strapi api calls only for now
|
||
|
*/
|
||
|
return await new Promise((resolve, reject) => {
|
||
|
https.request(
|
||
|
/** * Make Request
|
||
|
* @abstract Make Request
|
||
|
*/
|
||
|
{
|
||
|
...options,
|
||
|
host: "cms.showmerebates.com",
|
||
|
headers: {
|
||
|
Authorization: `bearer ${process.env.STRAPI_API_KEY}`,
|
||
|
},
|
||
|
},
|
||
|
/** * Handle Response
|
||
|
* @abstract Handle response
|
||
|
*/
|
||
|
(response) => {
|
||
|
httpResponse(response, resolve, reject);
|
||
|
}
|
||
|
).end();
|
||
|
});
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/** ********************************************** */
|
||
|
/** ********************************************** */
|
||
|
/** ********************************************** */
|