@petarmihaylov/node-raas
Version:
A tiny library and CLI for interacting with the Reports as a Service - RAAS - API from UKG - Ultimate Kronos Group. This project is maintained by the team behind RaasTastic and the community. It provides a balanced set of features that should suit a broad
137 lines (136 loc) • 9.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.logOffAction = exports.retrieveReportAction = exports.executeReportAction = exports.getReportParametersAction = exports.logOnAction = void 0;
const tslib_1 = require("tslib");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const core_raas_1 = require("./core-raas");
const errors_1 = require("./errors");
const formatters_1 = require("../utils/formatters");
const cli_ux_1 = tslib_1.__importDefault(require("cli-ux"));
async function logOnAction(clients, raasCredential, flags = {
verbose: false,
}) {
// Login - Start
cli_ux_1.default.action.start(chalk_1.default.blue('LogOn'));
const startTimeLogOn = Date.now();
const logOnResult = await (0, core_raas_1.login)(clients, raasCredential);
if (logOnResult.hasErrors) {
(0, errors_1.handleBiDataServiceErrors)(logOnResult, 'LogOnResult', flags.verbose);
}
const msElapsedLogOn = Date.now() - startTimeLogOn;
// this.log(`${blue(`LogOn:`)} ${green(`Success`)} | ${blue(`US-CORRELATION-ID:`)} ${magenta(logOnResult.correlationId)}`)
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(logOnResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedLogOn / 1000}s`)}`);
// Login - End
return logOnResult;
}
exports.logOnAction = logOnAction;
async function getReportParametersAction(clients, logOnResult, reportPath, flags = {
verbose: false,
}) {
// GetReportParameters - Start
cli_ux_1.default.action.start(chalk_1.default.blue('GetReportParameters'));
const startTimerGetReportParameters = Date.now();
const getReportParametersResult = await (0, core_raas_1.getReportParameters)(clients, logOnResult.result[0].LogOnResult, reportPath);
// this.log(JSON.stringify(getReportParametersResult, undefined, 2));
// Processing completed
const msElapsedGetReportParameters = Date.now() - startTimerGetReportParameters;
// In the case of an error
if (getReportParametersResult.hasErrors) {
cli_ux_1.default.action.stop(`${chalk_1.default.red('Failed')} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedGetReportParameters / 1000}s`)}`);
(0, errors_1.handleBiDataServiceErrors)(getReportParametersResult, 'GetReportParametersResult', flags.verbose);
}
// Getting the parameters was successful, so we can note that here
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(getReportParametersResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedGetReportParameters / 1000}s`)}`);
if (getReportParametersResult.hasWarnings) {
const error = flags.verbose
? new Error(`${chalk_1.default.blue('GetReportParameters:')} ${chalk_1.default.red('Warn')}
${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(getReportParametersResult.correlationId)}
${chalk_1.default.blue('GetReportParametersResult:')} ${chalk_1.default.red(JSON.stringify(getReportParametersResult.result[0].GetReportParametersResult, undefined, 2))}
${chalk_1.default.blue('SOAP Request Headers:')} ${chalk_1.default.red(JSON.stringify(getReportParametersResult.result[2], undefined, 2))}
${chalk_1.default.blue('Raw XML Request:')} ${chalk_1.default.red(JSON.stringify(getReportParametersResult.result[3], undefined, 2))}
${chalk_1.default.blue('Raw XML Response:')} ${chalk_1.default.red(JSON.stringify(getReportParametersResult.result[1], undefined, 2))}
Troubleshooting suggestions:
${chalk_1.default.yellow(getReportParametersResult.warningMessage)}`)
: new Error(`${chalk_1.default.blue('GetReportParameters:')} ${chalk_1.default.red('Warn')}
Required Parameters:
${JSON.stringify(getReportParametersResult.requiredParams, undefined, 2)}
Troubleshooting suggestions:
${chalk_1.default.yellow(getReportParametersResult.warningMessage)}`);
throw error;
}
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(getReportParametersResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedGetReportParameters / 1000}s`)}`);
// GetReportParameters - End
if (flags === null || flags === void 0 ? void 0 : flags.console) {
console.log(chalk_1.default.blue(JSON.stringify(getReportParametersResult.result[0].GetReportParametersResult, undefined, 2)));
}
}
exports.getReportParametersAction = getReportParametersAction;
async function executeReportAction(clients, logOnResult, reportPath, flags = {
verbose: false,
}) {
// Execute Report - Start
cli_ux_1.default.action.start(chalk_1.default.blue('ExecuteReport'));
const startTimeExecuteReport = Date.now();
const executeReportResult = await (0, core_raas_1.executeReport)(clients, logOnResult.result[0].LogOnResult, reportPath);
// Execute Report action completed
const msElapsedExecuteReport = Date.now() - startTimeExecuteReport;
if (executeReportResult.hasErrors) {
cli_ux_1.default.action.stop(`${chalk_1.default.red('Failed')} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedExecuteReport / 1000}s`)}`);
(0, errors_1.handleBiDataServiceErrors)(executeReportResult, 'ExecuteReportResult', flags.verbose);
}
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(executeReportResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedExecuteReport / 1000}s`)}`);
// Execute Report - End
return executeReportResult;
}
exports.executeReportAction = executeReportAction;
async function retrieveReportAction(clients, executeReportResult, flags = {
verbose: false,
}) {
// Retrieve Report - Start
cli_ux_1.default.action.start(chalk_1.default.blue('RetrieveReport'));
const startTimeRetrieveReport = Date.now();
const retrieveReportResult = await (0, core_raas_1.retrieveReport)(clients, executeReportResult.result[0].ExecuteReportResult);
const msElapsedRetrieveReport = Date.now() - startTimeRetrieveReport;
// In the case of an error
if (retrieveReportResult.hasErrors) {
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedRetrieveReport / 1000}s`)}`);
(0, errors_1.handleBiStreamingServiceErrors)(retrieveReportResult, flags.verbose);
}
// When Status === 'Working'
if (retrieveReportResult.hasWarnings) {
const error = flags.verbose
? new Error(`${chalk_1.default.blue('RetrieveReport:')} ${chalk_1.default.red('Warn')}
${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(retrieveReportResult.correlationId)}
${chalk_1.default.blue('ReportStream:')} ${chalk_1.default.red(JSON.stringify(retrieveReportResult.result[0].ReportStream, undefined, 2))}
${chalk_1.default.blue('SOAP Request Headers:')} ${chalk_1.default.red(JSON.stringify(retrieveReportResult.result[2], undefined, 2))}
${chalk_1.default.blue('Raw XML Request:')} ${chalk_1.default.red(JSON.stringify(retrieveReportResult.result[3], undefined, 2))}
${chalk_1.default.blue('Raw XML Response:')} ${chalk_1.default.red(JSON.stringify(retrieveReportResult.result[1], undefined, 2))}
Troubleshooting suggestions:
${chalk_1.default.yellow(retrieveReportResult.warningMessage)}`)
: new Error(`${chalk_1.default.blue('RetrieveReport:')} ${chalk_1.default.red('Warn')}
Troubleshooting suggestions:
${chalk_1.default.yellow(retrieveReportResult.warningMessage)}`);
throw error;
}
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(executeReportResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedRetrieveReport / 1000}s`)}`);
// Retrieve Report - End
return retrieveReportResult;
}
exports.retrieveReportAction = retrieveReportAction;
async function logOffAction(clients, logOnResult, flags = {
verbose: false,
}) {
// LogOff - Start
cli_ux_1.default.action.start(chalk_1.default.blue('LogOff'));
const startTimeLogOff = Date.now();
const logOffResult = await (0, core_raas_1.logOff)(clients, logOnResult.result[0].LogOnResult);
if (logOnResult.hasErrors) {
(0, errors_1.handleBiDataServiceErrors)(logOffResult, 'LogOfResult', flags.verbose);
}
const msElapsedLogOff = Date.now() - startTimeLogOff;
// this.log(`${blue(`LogOn:`)} ${green(`Success`)} | ${blue(`US-CORRELATION-ID:`)} ${magenta(logOnResult.correlationId)}`)
cli_ux_1.default.action.stop(`${chalk_1.default.green('Success')} | ${chalk_1.default.blue('US-CORRELATION-ID:')} ${chalk_1.default.magenta(logOnResult.correlationId)} | ${(0, formatters_1.blueMagenta)('Took:', `${msElapsedLogOff / 1000}s`)}`);
// LogOff - End
return {};
}
exports.logOffAction = logOffAction;