26 lines
2.3 KiB
TypeScript
26 lines
2.3 KiB
TypeScript
/** Public operation names only: never display URLs, query parameters or client identifiers. */
|
|
export function requestActivity(path: string, method = 'GET'): { area: string; label: string } | undefined {
|
|
const route = path.split('?')[0];
|
|
if (route === '/health') return undefined;
|
|
if (route.includes('/work-packages')) return { area: 'Remediation Engine', label: 'Preparing work packages' };
|
|
if (route.includes('/assessment-context')) return { area: 'Context Engine', label: 'Loading and calculating assessment context' };
|
|
if (route.includes('/report-runs')) return { area: 'Report Engine', label: 'Generating assessment report' };
|
|
if (route.includes('/mitre-attack')) return { area: 'Core Engine', label: route.endsWith('/source') ? 'Downloading MITRE source' : route.endsWith('/refresh') ? 'Updating MITRE catalog' : 'Loading MITRE catalog' };
|
|
const resources: [RegExp, string][] = [
|
|
[/db-structure/, 'database structure'], [/references/, 'reference recognition'],
|
|
[/policy-evaluation-rule-catalog/, 'evaluation rule catalog'], [/microsoft-security-baselines/, 'security baseline catalog'],
|
|
[/timeslot-result-metrics/, 'timeslot metrics'], [/environment-snapshot/, 'client environment'],
|
|
[/policy-analysis-overview/, 'policy analysis overview'], [/policy-evaluations/, 'policy evaluations'],
|
|
[/policy-finding-runs/, 'policy findings'], [/policy-snapshot-aggregations/, 'policy snapshots'],
|
|
[/policy-analyses/, 'policy analyses'], [/environment-profiles/, 'environment profiles'],
|
|
[/gpo-backups/, 'GPO backups'], [/import-batches\/preview/, 'import preview'], [/import-batches\/complete/, 'import results'],
|
|
[/import-sources/, 'source file'], [/import-files/, 'imported files'], [/risk-acceptances/, 'risk acceptance'], [/reviews/, 'work tracking'],
|
|
[/assessment-history/, 'assessment history'], [/\/model$/, 'scan data and findings'], [/assessments/, 'assessments'],
|
|
[/results\/facets/, 'Result DB filters'], [/results\/status/, 'Result DB status'], [/results/, 'Result DB rows'],
|
|
[/\/export$/, 'client export'], [/projects/, 'clients']
|
|
];
|
|
const noun = resources.find(([pattern]) => pattern.test(route))?.[1] ?? 'application data';
|
|
const action = method === 'DELETE' ? 'Deleting' : method === 'GET' ? 'Loading' : 'Processing';
|
|
return { area: 'Core Engine', label: `${action} ${noun}` };
|
|
}
|