Refactor SDK source queries

This commit is contained in:
luke-hagar-sp
2024-01-23 19:54:32 -06:00
parent e0f8538afc
commit ec734802fa
6 changed files with 9 additions and 191 deletions

View File

@@ -1,4 +1,3 @@
import { HandleError } from '$lib/Errors.js';
import { createConfiguration } from '$lib/sailpoint/sdk';
import { getToken } from '$lib/utils/oauth';
import { json } from '@sveltejs/kit';
@@ -6,20 +5,16 @@ import { ManagedClustersBetaApi } from 'sailpoint-api-client';
/** @type {import('./$types').RequestHandler} */
export async function GET({ cookies, params }) {
try {
// Generic SDK setup
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
// Generic SDK setup
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const config = createConfiguration(session.baseUrl, idnSession.access_token);
// Route specific SDK call
const api = new ManagedClustersBetaApi(config);
// Route specific SDK call
const api = new ManagedClustersBetaApi(config);
const val = await api.getManagedCluster({ id: params.clusterID });
// console.log(val);
return json(val.data);
} catch (err) {
HandleError('issue arose during SDK source query', err);
}
const val = await api.getManagedCluster({ id: params.clusterID });
// console.log(val);
return json(val.data);
}

View File

@@ -1,22 +0,0 @@
import { HandleError } from '$lib/Errors.js';
import { createConfiguration } from '$lib/sailpoint/sdk';
import { getToken } from '$lib/utils/oauth';
import { json } from '@sveltejs/kit';
import { IdentitiesBetaApi } from 'sailpoint-api-client';
/** @type {import('./$types').RequestHandler} */
export async function GET({ cookies, params }) {
try {
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const api = new IdentitiesBetaApi(config);
const val = await api.getIdentity({ id: params.identityID });
// console.log(val);
return json(val.data);
} catch (err) {
HandleError('issue arose during SDK source query', err);
}
}

View File

@@ -1,23 +0,0 @@
import { HandleError } from '$lib/Errors.js';
import { createConfiguration } from '$lib/sailpoint/sdk';
import { getToken } from '$lib/utils/oauth';
import { json } from '@sveltejs/kit';
import { Paginator, SearchApi, type Search } from 'sailpoint-api-client';
/** @type {import('./$types').RequestHandler} */
export async function POST({ request, cookies }) {
try {
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const searchJson = await request.json();
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const api = new SearchApi(config);
const search: Search = searchJson;
const val = (await Paginator.paginateSearchApi(api, search, 100, 20000)).data;
//console.log(val)
return json(val);
} catch (err) {
HandleError('issue arose during SDK search query', err);
}
}

View File

@@ -1,26 +0,0 @@
import { HandleError } from '$lib/Errors.js';
import { createConfiguration } from '$lib/sailpoint/sdk';
import { getToken } from '$lib/utils/oauth';
import { json } from '@sveltejs/kit';
import { Paginator, SearchApi, type Search } from 'sailpoint-api-client';
/** @type {import('./$types').RequestHandler} */
export async function POST({ request, cookies, params }) {
try {
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const searchJson = await request.json();
const limit = Number(params.limit || 20000);
const increment = limit < 250 ? limit : 250;
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const api = new SearchApi(config);
const search: Search = searchJson;
const val = (await Paginator.paginateSearchApi(api, search, increment, limit)).data;
//console.log(val)
return json(val);
} catch (err) {
HandleError('issue arose during SDK search query', err);
}
}

View File

@@ -1,22 +0,0 @@
import { HandleError } from '$lib/Errors.js';
import { createConfiguration } from '$lib/sailpoint/sdk';
import { getToken } from '$lib/utils/oauth';
import { json } from '@sveltejs/kit';
import { SourcesApi } from 'sailpoint-api-client';
/** @type {import('./$types').RequestHandler} */
export async function GET({ cookies, params }) {
try {
const session = JSON.parse(cookies.get('session')!);
const idnSession = await getToken(cookies);
const config = createConfiguration(session.baseUrl, idnSession.access_token);
const api = new SourcesApi(config);
const val = await api.getSource({ id: params.sourceID });
// console.log(val);
return json(val.data);
} catch (err) {
HandleError('issue arose during SDK source query', err);
}
}

View File

@@ -1,84 +0,0 @@
import type { Data, FetchResponse, SourceEvents } from '$lib/Types.js';
import { json } from '@sveltejs/kit';
import type { EventDocument, Search, SearchDocument } from 'sailpoint-api-client';
export const GET = async ({ fetch, params }) => {
const source = await (await fetch(`/api/sailpoint/source/${params.sourceID}`)).json();
const eventNames: string[] = [
'Aggregate Source Account Passed',
'Aggregate Source Account Started',
'Aggregate Source Entitlement Passed',
'Aggregate Source Entitlement Started',
];
const promises = [];
const allEvents: EventDocument[] = [];
for (const event of eventNames) {
const search: Search = {
indices: ['events'],
query: {
query: `target.name: "${source.name}" AND name:"${event}"`,
},
sort: ['created'],
};
promises.push(
fetch('/api/sailpoint/search/1', {
method: 'POST',
body: JSON.stringify(search),
})
.then((response: FetchResponse<SearchDocument>) => response.json())
.then((data: Data<SearchDocument>) => {
return data;
}),
);
}
await Promise.allSettled(promises).then((results) => {
for (const event of results) {
if (event.status == 'fulfilled' && event.value.length > 0) {
allEvents.push(event.value[0]);
}
}
});
const sourceEvents: SourceEvents = {
name: source.name,
accounts: { started: undefined, passed: undefined },
entitlements: { started: undefined, passed: undefined },
};
for (const event of allEvents) {
if (event.attributes!.sourceName === source.name) {
switch (event.technicalName) {
case 'SOURCE_ACCOUNT_AGGREGATE_STARTED':
if (!sourceEvents.accounts.started) {
sourceEvents.accounts.started = event || undefined;
}
break;
case 'SOURCE_ACCOUNT_AGGREGATE_PASSED':
if (!sourceEvents.accounts.passed) {
sourceEvents.accounts.passed = event || undefined;
}
break;
case 'SOURCE_ENTITLEMENT_AGGREGATE_STARTED':
if (!sourceEvents.entitlements.started) {
sourceEvents.entitlements.started = event || undefined;
}
break;
case 'SOURCE_ENTITLEMENT_AGGREGATE_PASSED':
if (!sourceEvents.entitlements.passed) {
sourceEvents.entitlements.passed = event || undefined;
}
break;
default:
break;
}
}
}
return json({ source, sourceEvents });
};