UNPKG

module-hub-aurum-core-connector

Version:

Module to connect to the Aurum Core

85 lines (72 loc) 2.93 kB
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;