From 4a7ea4ad4692e1a407c4d0a987726d8c142a379f Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Tue, 24 Nov 2020 12:53:39 +0100 Subject: [PATCH] feat: Export WebSocket classes. --- index.ts | 5 +++++ src/ldp/http/metadata/WebSocketMetadataWriter.ts | 10 ++++++++-- .../ldp/http/metadata/WebSocketMetadataWriter.test.ts | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/index.ts b/index.ts index b38d7958b..eb3801d70 100644 --- a/index.ts +++ b/index.ts @@ -24,6 +24,7 @@ export * from './src/ldp/http/metadata/MetadataExtractor'; export * from './src/ldp/http/metadata/MetadataParser'; export * from './src/ldp/http/metadata/MetadataWriter'; export * from './src/ldp/http/metadata/SlugParser'; +export * from './src/ldp/http/metadata/WebSocketMetadataWriter'; // LDP/HTTP/Response export * from './src/ldp/http/response/CreatedResponseDescription'; @@ -72,6 +73,7 @@ export * from './src/ldp/representation/ResourceIdentifier'; // LDP export * from './src/ldp/AuthenticatedLdpHandler'; +export * from './src/ldp/UnsecureWebSocketsProtocol'; // Logging export * from './src/logging/LazyLogger'; @@ -88,6 +90,8 @@ export * from './src/server/ExpressHttpServerFactory'; export * from './src/server/HttpHandler'; export * from './src/server/HttpRequest'; export * from './src/server/HttpResponse'; +export * from './src/server/WebSocketServerFactory'; +export * from './src/server/WebSocketHandler'; // Storage/Accessors export * from './src/storage/accessors/DataAccessor'; @@ -122,6 +126,7 @@ export * from './src/storage/Conditions'; export * from './src/storage/DataAccessorBasedStore'; export * from './src/storage/FileIdentifierMapper'; export * from './src/storage/LockingResourceStore'; +export * from './src/storage/MonitoringStore'; export * from './src/storage/PassthroughStore'; export * from './src/storage/PatchingStore'; export * from './src/storage/RepresentationConvertingStore'; diff --git a/src/ldp/http/metadata/WebSocketMetadataWriter.ts b/src/ldp/http/metadata/WebSocketMetadataWriter.ts index 00392578b..9f0d85b2e 100644 --- a/src/ldp/http/metadata/WebSocketMetadataWriter.ts +++ b/src/ldp/http/metadata/WebSocketMetadataWriter.ts @@ -2,15 +2,21 @@ import type { HttpResponse } from '../../../server/HttpResponse'; import { addHeader } from '../../../util/HeaderUtil'; import { MetadataWriter } from './MetadataWriter'; +interface WebSocketSettings { + hostname?: string; + port?: number; + protocol?: string; +} + /** * A {@link MetadataWriter} that advertises a WebSocket through the Updates-Via header. */ export class WebSocketMetadataWriter extends MetadataWriter { private readonly socketUrl: string; - public constructor({ hostname = 'localhost', port = 80, protocol = 'ws:' }: - { hostname?: string; port?: number; protocol?: string }) { + public constructor(settings: WebSocketSettings = {}) { super(); + const { hostname = 'localhost', port = 80, protocol = 'ws:' } = settings; const secure = /^(?:https|wss)/u.test(protocol); const socketUrl = new URL(`${secure ? 'wss' : 'ws'}://${hostname}:${port}/`); if (socketUrl.hostname !== hostname) { diff --git a/test/unit/ldp/http/metadata/WebSocketMetadataWriter.test.ts b/test/unit/ldp/http/metadata/WebSocketMetadataWriter.test.ts index c3fd2958c..f11ea5f5d 100644 --- a/test/unit/ldp/http/metadata/WebSocketMetadataWriter.test.ts +++ b/test/unit/ldp/http/metadata/WebSocketMetadataWriter.test.ts @@ -3,7 +3,7 @@ import { WebSocketMetadataWriter } from '../../../../../src/ldp/http/metadata/We describe('A WebSocketMetadataWriter', (): void => { it('writes a default HTTP WebSocket.', async(): Promise => { - const writer = new WebSocketMetadataWriter({}); + const writer = new WebSocketMetadataWriter(); const response = createResponse(); await writer.handle({ response } as any); expect(response.getHeaders()).toEqual({ 'updates-via': 'ws://localhost' });