feat(api): add websocket api definitions
This commit is contained in:
9
packages/api/src/Domain/Server/WebSocket/Paths.ts
Normal file
9
packages/api/src/Domain/Server/WebSocket/Paths.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
const TokenPaths = {
|
||||
createConnectionToken: '/v1/sockets/tokens',
|
||||
}
|
||||
|
||||
export const Paths = {
|
||||
v1: {
|
||||
...TokenPaths,
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { HttpServiceInterface } from '../../Http'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response'
|
||||
|
||||
import { WebSocketServer } from './WebSocketServer'
|
||||
|
||||
describe('WebSocketServer', () => {
|
||||
let httpService: HttpServiceInterface
|
||||
|
||||
const createServer = () => new WebSocketServer(httpService)
|
||||
|
||||
beforeEach(() => {
|
||||
httpService = {} as jest.Mocked<HttpServiceInterface>
|
||||
httpService.post = jest.fn().mockReturnValue({
|
||||
data: { token: 'foobar' },
|
||||
} as jest.Mocked<WebSocketConnectionTokenResponse>)
|
||||
})
|
||||
|
||||
it('should create a websocket connection token', async () => {
|
||||
const response = await createServer().createConnectionToken({})
|
||||
|
||||
expect(response).toEqual({
|
||||
data: {
|
||||
token: 'foobar',
|
||||
},
|
||||
})
|
||||
})
|
||||
})
|
||||
17
packages/api/src/Domain/Server/WebSocket/WebSocketServer.ts
Normal file
17
packages/api/src/Domain/Server/WebSocket/WebSocketServer.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { HttpServiceInterface } from '../../Http/HttpServiceInterface'
|
||||
import { WebSocketConnectionTokenRequestParams } from '../../Request/WebSocket/WebSocketConnectionTokenRequestParams'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response/WebSocket/WebSocketConnectionTokenResponse'
|
||||
import { Paths } from './Paths'
|
||||
import { WebSocketServerInterface } from './WebSocketServerInterface'
|
||||
|
||||
export class WebSocketServer implements WebSocketServerInterface {
|
||||
constructor(private httpService: HttpServiceInterface) {}
|
||||
|
||||
async createConnectionToken(
|
||||
params: WebSocketConnectionTokenRequestParams,
|
||||
): Promise<WebSocketConnectionTokenResponse> {
|
||||
const response = await this.httpService.post(Paths.v1.createConnectionToken, params)
|
||||
|
||||
return response as WebSocketConnectionTokenResponse
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { WebSocketConnectionTokenRequestParams } from '../../Request/WebSocket/WebSocketConnectionTokenRequestParams'
|
||||
import { WebSocketConnectionTokenResponse } from '../../Response/WebSocket/WebSocketConnectionTokenResponse'
|
||||
|
||||
export interface WebSocketServerInterface {
|
||||
createConnectionToken(params: WebSocketConnectionTokenRequestParams): Promise<WebSocketConnectionTokenResponse>
|
||||
}
|
||||
@@ -2,3 +2,5 @@ export * from './Subscription/SubscriptionServer'
|
||||
export * from './Subscription/SubscriptionServerInterface'
|
||||
export * from './User/UserServer'
|
||||
export * from './User/UserServerInterface'
|
||||
export * from './WebSocket/WebSocketServer'
|
||||
export * from './WebSocket/WebSocketServerInterface'
|
||||
|
||||
Reference in New Issue
Block a user