import { IContext } from '@libs/types/IContext'; import { Logger } from '@libs/types/'; import { SQSMessageWrapper } from '@p81-common/common-messaging'; import { Events, SDPv2AgentConnectEvent } from '@p81-common/sdpv2-dtos'; const { AgentConnectEvent } = Events.SDPv2; export default class AgentConnectEventHandler { context: IContext; constructor(context: IContext) { this.context = context; } public async handler( message: SQSMessageWrapper, logger: Logger = this.context.logger, ) { try { if (!message.isValid) { return; } const { body } = message.payload()!; const { tenantId, userId, deviceIdentifier, platform, normalizedAppVersion } = body; const childLogger = logger.child({ tenantId, userId, deviceIdentifier, platform, normalizedAppVersion, eventName: AgentConnectEvent.eventName, }); const profile = await this.context.swgProfileRepository.fetchProfile( { userId, tenantId, normalizedAppVersion, platform }, { logger: childLogger as Logger }, ); childLogger.info({ message: 'Fetching SWG profile' }); await this.context.apiGatewayService.callAgentPusherAPI( [ { userId, tenantId, deviceIdentifier, message: profile, eventName: this.context.config.get('swgEvenName'), }, ], childLogger, ); } catch (err) { logger.error({ message: 'Fetching SWG profile Error', err }); message.markForRetry(); } } }