module-hub-aurum-core-connector
Version:
Module to connect to the Aurum Core
85 lines (72 loc) • 2.93 kB
JavaScript
const { logger } = require("../../utils/Logger.js");
const Request = require("./request.js");
const Response = require("./response.js");
const querystring = require("querystring");
const { module_name, configurations_key } = require("../../utils/Constants.js");
//main function set Request class and configuration
const main = async ({ username, password, longitude, latitude }) => {
try {
const request = new Request(username, password, longitude, latitude);
logger.info(`"${module_name}" :: Login`, request);
//detect environment CALIGO_ENV
const env = process.env.CALIGO_ENV;
logger.info(`"${module_name}" :: Environment detected: ${env}`);
//get configurations for global variable
const config = global[configurations_key];
logger.info(`"${module_name}" :: Configuration module / default: ${JSON.stringify(config.authentication)}`);
if (undefined === config || null === config) {
logger.error(`"${module_name}" :: Error configurations not found`);
return {
success: false,
message: "Error configurations not found",
};
}
//generate endpoint login, utl, tenant and context
const endpoint = `${config.authentication.url}/${config.tenant}/${config.authentication.context}`;
logger.info(`"${module_name}" :: Endpoint login: ${endpoint}`);
//Content-Type APPLICATION_FORM_URLENCODED
//add basic auth, context key, and secret
const credentials = Buffer.from(`${config.consumer.key}:${config.consumer.secret}`).toString("base64");
const formBody = querystring.stringify({
username: request.username,
password: request.password,
scope: config.authentication.scope,
longitude: request.longitude,
latitude: request.latitude,
grant_type: "password",
});
logger.info(`"${module_name}" :: Form body: ${formBody}`);
const responseLogin = await fetch(endpoint, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Basic ${credentials}`,
},
body: formBody,
})
.then((response) => response.json())
.catch((error) => {
logger.error(`"${module_name}" :: Error login`, error);
return {
success: false,
message: error.message,
};
});
logger.info(`"${module_name}" :: Response login: ${JSON.stringify(responseLogin)}`);
let response = {
status: "success",
message: "Login success",
data: responseLogin,
};
console.log(`"${module_name}" :: Login response: ${JSON.stringify(response)}`);
return response;
} catch (error) {
logger.error(`"${module_name}" :: Error login `, error);
//return exception
return {
success: false,
message: error.message,
};
}
};
module.exports = main;