chore: inject settings into EventMessageHandler

This commit is contained in:
Ricardo Arturo Cabral Mejia 2022-10-03 01:48:54 +00:00
parent dca599da26
commit cc09597526
No known key found for this signature in database
GPG Key ID: 5931EBF43A650245
2 changed files with 6 additions and 5 deletions

View File

@ -3,16 +3,16 @@ import { EventMessageHandler } from '../handlers/event-message-handler'
import { eventStrategyFactory } from './event-strategy-factory'
import { IEventRepository } from '../@types/repositories'
import { IWebSocketAdapter } from '../@types/adapters'
import { Settings } from '../utils/settings'
import { SubscribeMessageHandler } from '../handlers/subscribe-message-handler'
import { UnsubscribeMessageHandler } from '../handlers/unsubscribe-message-handler'
export const messageHandlerFactory = (
eventRepository: IEventRepository,
) => ([message, adapter]: [IncomingMessage, IWebSocketAdapter]) => {
switch (message[0]) {
case MessageType.EVENT:
return new EventMessageHandler(adapter, eventStrategyFactory(eventRepository))
return new EventMessageHandler(adapter, eventStrategyFactory(eventRepository), Settings)
case MessageType.REQ:
return new SubscribeMessageHandler(adapter, eventRepository)
case MessageType.CLOSE:

View File

@ -4,14 +4,15 @@ import { IEventStrategy, IMessageHandler } from '../@types/message-handlers'
import { Event } from '../@types/event'
import { Factory } from '../@types/base'
import { IncomingEventMessage } from '../@types/messages'
import { ISettings } from '../@types/settings'
import { IWebSocketAdapter } from '../@types/adapters'
import { Settings } from '../utils/settings'
import { WebSocketAdapterEvent } from '../constants/adapter'
export class EventMessageHandler implements IMessageHandler {
public constructor(
private readonly webSocket: IWebSocketAdapter,
private readonly strategyFactory: Factory<IEventStrategy<Event, Promise<void>>, [Event, IWebSocketAdapter]>
private readonly strategyFactory: Factory<IEventStrategy<Event, Promise<void>>, [Event, IWebSocketAdapter]>,
private readonly settings: ISettings
) { }
public async handleMessage(message: IncomingEventMessage): Promise<void> {
@ -55,7 +56,7 @@ export class EventMessageHandler implements IMessageHandler {
private canAcceptEvent(event: Event): string | undefined {
const now = Math.floor(Date.now()/1000)
const limits = Settings.limits.event
const limits = this.settings.limits.event
if (limits.createdAt.maxPositiveDelta > 0) {
if (event.created_at > now + limits.createdAt.maxPositiveDelta) {
return `created_at is more than ${limits.createdAt.maxPositiveDelta} seconds in the future`