mirror of
https://github.com/Cameri/nostream.git
synced 2025-04-08 20:08:07 +02:00
chore: inject settings into EventMessageHandler
This commit is contained in:
parent
dca599da26
commit
cc09597526
@ -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:
|
||||
|
@ -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`
|
||||
|
Loading…
x
Reference in New Issue
Block a user