@ikonintegration/ikapi
v5.0.6
Published
Ikon nodejs API foundation
Downloads
1,421
Readme
IKApi
Ikon nodejs API foundation
Overall
Samples
- Router
import { Router } from '@ikonintegration/ikapi';
import HealthCheck from './routes/health/get';
const routes = [
{ route: '/health', method: 'GET', handler: HealthCheck.handler },
// Additional routes can be added here
];
export const router = new Router({
routes,
healthCheckRoute: '/otherHealth',
logger: {
logLevel: 'DEBUG', // or process.env.LOG_LEVEL
sensitiveFilteringKeywords: ['password', 'secret'],
},
});
// Handler export
export const handler = router.getExport();
- Route
import { Response, Route, HttpMethod } from '@ikonintegration/ikapi';
interface GetHealthRoute extends Route<null, { message: string }> {}
export default class HealthCheck implements GetHealthRoute {
public path: string = '/health';
public method: HttpMethod = HttpMethod.GET;
public openApi = {
summary: 'System health check',
description: 'Returns if the system is healthy or not',
tags: ['Health'],
security: [],
};
public handler: GetHealthRoute['handler'] = async () => {
return new Response({ message: 'System is healthy' });
};
}
- Transaction
import { Response, ResponseErrorType, Transaction } from '@ikonintegration/ikapi'
import type { Context, SQSEvent } from 'aws-lambda'
import Core from '../core/Core.js'
import Globals, { AccessLevel } from '../core/Globals.js'
export type SuccessResponseType = { message: string }
//Main handler
export const handler = async (event: SQSEvent, context: Context): Promise<void> => {
await new Transaction<null, SuccessResponseType | ResponseErrorType>(
event,
context,
Globals.API_Config
).execute(async transaction => {
const type = event['eventType']
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return await new Core(transaction, AccessLevel.PUBLIC).authenticate(async core => {
// Schedule
if (type == 'SCHEDULE_1') {
/* Schedule more message to SQS?*/
return Response.SuccessResponse({ message: '213' })
}
return Response.BadRequestResponse('No handler for the specified event type!')
})
})
}
- Event Processor (SQS)
import { EventProcessor, Response } from '@ikonintegration/ikapi'
import type { Context, SQSEvent } from 'aws-lambda'
import Core from '../core/Core.js'
import Globals, { AccessLevel } from '../core/Globals.js'
export type SuccessResponseType = { message: string }
//Main handler
export const handler = async (event: SQSEvent, context: Context): Promise<void> => {
await new EventProcessor<SuccessResponseType | null>(
event,
context,
Globals.API_Config
).processEvent(async (transaction, recordContent) => {
const type = event['eventType'] || recordContent?.['eventType']
return await new Core(transaction, AccessLevel.PUBLIC).authenticate(async core => {
// Schedule
if (type == Globals.EmailEventType.TEMPLATE_EMAIL)
return await templateEmailNotification(recordContent, core)
return Response.BadRequestResponse('No handler for the specified event type!')
})
})
}