import axios from 'axios'; import chalk from 'chalk'; import { IEntitySearchResult } from '../helpers/@types/IEntitySearchResult'; import { getGlobalConfig } from '../helpers/cluserHelper'; import { refreshToken } from './jwtAPI'; import { readVariableValue } from '../helpers/variablesHelper'; import { error, success, begin } from '../helpers/log'; import { logObj } from '../helpers/logObj'; import { IApiResponse } from '.'; export async function getTaskDataSummary( task: IEntitySearchResult, profileId: string, workerUrl: string, ): Promise { const cfg = getGlobalConfig(); var accessToken = cfg.clusters[cfg.currentCluster].jwt?.accessToken; try { // begin('getting task data summary', `${chalk.green(task.entityName)}(${chalk.gray(readVariableValue(task.entityId))})...`); const response = await axios.get( `${workerUrl}/api/objects/${readVariableValue(task.entityId)}/data-summary`, { headers: { Authorization: `Bearer ${accessToken}`, 'X-Request-StackTrace': 'true', }, }, ); // success('task data summary', 'Task data summary retrieved successfully'); logObj(response.data); return { statusCode: response?.status || 200, message: 'Task data summary retrieved successfully', type: 'success', data: response.data, event: 'get-task-data-summary', success: true, }; } catch (err: any) { if (err.response && err.response.status === 401) { const success = await refreshToken( cfg.currentCluster, cfg.clusters[cfg.currentCluster].jwt.refreshToken, ); if (success) { return await getTaskDataSummary(task, profileId, workerUrl); } return { statusCode: 401, message: 'You need to call CLI to login again', type: 'error', event: 'get-task-data-summary', success: false, }; } else { error( 'get task data summary', chalk.red(err.response?.data?.error || err.message), ); return { statusCode: err.response?.status || 400, message: err.response?.data?.error || err.message, type: 'error', stackTrace: err.response?.data?.stackTrace, event: 'get-task-data-summary', success: false, }; } } } export async function pullTask( task: IEntitySearchResult, profileId: string, workerUrl: string, ): Promise { const cfg = getGlobalConfig(); var accessToken = cfg.clusters[cfg.currentCluster].jwt?.accessToken; try { begin( 'pulling task', `${chalk.green(task.entityName)}(${chalk.gray(readVariableValue(task.entityId))})...`, ); const response = await axios.post( `${workerUrl}/api/objects/pull`, { isInit: false, objectIds: [readVariableValue(task.entityId)], }, { headers: { Authorization: `Bearer ${accessToken}`, 'X-Request-StackTrace': 'true', 'HSS-PROFILE-ID': profileId, 'Content-Type': 'application/json', }, }, ); success('pulling task', 'Task pulled successfully'); // logObj(response.data); return { statusCode: response?.status || 200, message: 'Task pulled successfully', type: 'success', data: response.data, event: 'pull-task', success: true, }; } catch (err: any) { if (err.response && err.response.status === 401) { const success = await refreshToken( cfg.currentCluster, cfg.clusters[cfg.currentCluster].jwt.refreshToken, ); if (success) { return await pullTask(task, profileId, workerUrl); } return { statusCode: 401, message: 'You need to call CLI to login again', type: 'error', event: 'pull-task', success: false, }; } else { error( 'pulling task', chalk.red(err.response?.data?.error || err.message), ); return { statusCode: err.response?.status || 400, message: err.response?.data?.error || err.message, type: 'error', stackTrace: err.response?.data?.stackTrace, event: 'pull-task', success: false, }; } } }