feat(api): add websocket api definitions

This commit is contained in:
Karol Sójko
2022-09-20 13:20:52 +02:00
parent dd5ca0c28c
commit 4a773fa537
18 changed files with 190 additions and 5 deletions

View File

@@ -0,0 +1,9 @@
const TokenPaths = {
createConnectionToken: '/v1/sockets/tokens',
}
export const Paths = {
v1: {
...TokenPaths,
},
}

View File

@@ -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',
},
})
})
})

View 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
}
}

View File

@@ -0,0 +1,6 @@
import { WebSocketConnectionTokenRequestParams } from '../../Request/WebSocket/WebSocketConnectionTokenRequestParams'
import { WebSocketConnectionTokenResponse } from '../../Response/WebSocket/WebSocketConnectionTokenResponse'
export interface WebSocketServerInterface {
createConnectionToken(params: WebSocketConnectionTokenRequestParams): Promise<WebSocketConnectionTokenResponse>
}