@enplug/scripts
Version:
Enplug scripts
64 lines (57 loc) • 1.8 kB
JavaScript
const loadDevPrivateFile = require('../functions/loadDevPrivateFile');
const request = require('request');
/**
* Send an authorized request to a given Enplug endpoint.
* @param {string} env `production`, `staging`, or `dev`
* @param {string} token Valid auth token to sign the request with.
* @param {string} url Request url.
* @param {string} method HTTTP verb.L0
* @param {Object?} queryParams Request query paramaters. Optional.
* @param {string|Buffer?} body Request body. Optional.
*/
function sendSecureRequest(env, token, url, method, queryParams, body) {
return new Promise((resolve, reject) => {
const cookieJar = request.jar();
// Set the correct auth cookie
setAuthCookie(cookieJar, env, token, url);
// Prepare the request
requestObj = {
method: method,
uri: url,
jar: cookieJar
}
if (queryParams) {
requestObj.qs = queryParams;
}
if (body) {
requestObj.body = body;
requestObj.json = true;
}
// Send the request
request(requestObj, (error, resp, body) => {
if (error) {
console.log('Error requesting Enplug backend: ', error);
reject(error);
} else {
resolve(body);
}
})
});
}
function setAuthCookie(cookieJar, environment, token, url) {
switch (environment) {
case 'dev':
const devCookie = request.cookie(`dev_auth_token=${token}`);
cookieJar.setCookie(devCookie, url);
break;
case 'staging':
const stagingCookie = request.cookie(`staging_auth_token=${token}`);
cookieJar.setCookie(stagingCookie, url);
break;
case 'production':
const prodCookie = request.cookie(`auth_token=${token}`);
cookieJar.setCookie(prodCookie, url);
break;
}
}
module.exports = sendSecureRequest;