// ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗ // ╚══╗ ╔══╝║ ╔╗ ╔╗ ║║ ╔═══╗ ║║ ╔═══╗ ║║ ╔═══╗ ║╚══╗ ╔══╝║ ╔═════╝ // ║ ║ ║ ║║ ║║ ║║ ╚═══╝ ║║ ║ ║ ║║ ╚═══╝ ║ ║ ║ ║ ╚═════╗ // ║ ║ ║ ║║ ║║ ║║ ╔═════╝║ ║ ║ ║║ ╔═╗ ╔═╝ ║ ║ ╚═════╗ ║ // ╔══╝ ╚══╗║ ║║ ║║ ║║ ║ ║ ╚═══╝ ║║ ║ ║ ╚═╗ ║ ║ ╔═════╝ ║ // ╚═══════╝╚═╝╚═╝╚═╝╚═╝ ╚═══════╝╚═╝ ╚═══╝ ╚═╝ ╚═══════╝ import * as tokenValidators from '../validators/token-validators.js'; import * as credentialModule from '../../credential/credential-module.js'; import * as hostnameModule from '../../hostname/hostname-module.js'; import fetch from 'node-fetch'; // ╔═══════╗╔═══════╗╔════╗╔═╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗ // ║ ╔═════╝║ ╔═════╝║ ╔╗ ║║ ║║ ╔═════╝║ ╔═══╗ ║║ ╔═══╗ ║╚══╗ ╔══╝║ ╔═════╝ // ║ ║ ╔═══╗║ ╚═════╗║ ║║ ║║ ║║ ╚═════╗║ ╚═══╝ ║║ ╚═══╝ ║ ║ ║ ║ ╚═════╗ // ║ ║ ╚═╗ ║║ ╔═════╝║ ║║ ║║ ║║ ╔═════╝║ ╔═╗ ╔═╝║ ╔═══╗ ║ ║ ║ ║ ╔═════╝ // ║ ╚═══╝ ║║ ╚═════╗║ ║║ ╚╝ ║║ ╚═════╗║ ║ ║ ╚═╗║ ║ ║ ║ ║ ║ ║ ╚═════╗ // ╚═══════╝╚═══════╝╚═╝╚════╝╚═══════╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ ╚═══════╝ export async function generateToken(parameters: { username: string, password: string, hostname: string, privateKey: string, }) { credentialModule.validatePrivateKey(parameters?.privateKey); credentialModule.validateUsername(parameters?.username); credentialModule.validatePassword(parameters?.password); hostnameModule.validateHostname(parameters?.hostname); let token = ''; const uri = `https://${parameters.hostname}/authenticate`; try { const response = await fetch(uri, { headers: { 'x-api-key': parameters.privateKey, 'Content-Type': 'application/json', }, body: JSON.stringify({ privateKey: parameters.privateKey, username: parameters.username, password: parameters.password, }), method: 'POST', }); token = await response?.json() as string; } catch (error) {} if (!tokenValidators.isValidToken(token)) { credentialModule.throwInvalidAbsorbLmsCredentialsError(); } return token; }