From 2b30d5c1b09a1b2ff3eb0aa8f7ba17c83f9d07e5 Mon Sep 17 00:00:00 2001 From: Anton Voylenko Date: Thu, 30 Jan 2025 00:10:28 +0200 Subject: [PATCH] feat: add get all session endpoint --- src/controllers/sessionController.js | 27 +++++++++++- src/routes.js | 1 + swagger.js | 4 ++ swagger.json | 63 ++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 1 deletion(-) diff --git a/src/controllers/sessionController.js b/src/controllers/sessionController.js index 9d82ade..8131624 100644 --- a/src/controllers/sessionController.js +++ b/src/controllers/sessionController.js @@ -339,6 +339,30 @@ const requestPairingCode = async (req, res) => { } } +/** + * Get all sessions. + * + * @function + * @async + * @param {Object} req - The HTTP request object. + * @param {Object} res - The HTTP response object. + * @returns {} + */ +const getSessions = async (req, res) => { + // #swagger.summary = 'Get all sessions' + // #swagger.description = 'Get all sessions.' + /* #swagger.responses[200] = { + description: "Retrieved all sessions.", + content: { + "application/json": { + schema: { "$ref": "#/definitions/GetSessionsResponse" } + } + } + } + */ + return res.json({ success: true, result: Array.from(sessions.keys()) }) +} + module.exports = { startSession, statusSession, @@ -348,5 +372,6 @@ module.exports = { restartSession, terminateSession, terminateInactiveSessions, - terminateAllSessions + terminateAllSessions, + getSessions } diff --git a/src/routes.js b/src/routes.js index 93b2658..8565e12 100644 --- a/src/routes.js +++ b/src/routes.js @@ -36,6 +36,7 @@ sessionRouter.use(middleware.apikey) sessionRouter.use(middleware.sessionSwagger) routes.use('/session', sessionRouter) +sessionRouter.get('/getSessions', sessionController.getSessions) sessionRouter.get('/start/:sessionId', middleware.sessionNameValidation, sessionController.startSession) sessionRouter.get('/status/:sessionId', middleware.sessionNameValidation, sessionController.statusSession) sessionRouter.get('/qr/:sessionId', middleware.sessionNameValidation, sessionController.sessionQrCode) diff --git a/swagger.js b/swagger.js index b2a1f8d..e9c12de 100644 --- a/swagger.js +++ b/swagger.js @@ -72,6 +72,10 @@ const doc = { ForbiddenResponse: { success: false, error: 'Invalid API key' + }, + GetSessionsResponse: { + success: true, + result: [] } } } diff --git a/swagger.json b/swagger.json index e1fa9e5..66dc22f 100644 --- a/swagger.json +++ b/swagger.json @@ -106,6 +106,52 @@ ] } }, + "/session/getSessions": { + "get": { + "tags": [ + "Session" + ], + "summary": "Get all sessions", + "description": "Get all sessions.", + "responses": { + "200": { + "description": "Retrieved all sessions.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetSessionsResponse" + } + } + } + }, + "403": { + "description": "Forbidden.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForbiddenResponse" + } + } + } + }, + "500": { + "description": "Server failure.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security": [ + { + "apiKeyAuth": [] + } + ] + } + }, "/session/start/{sessionId}": { "get": { "tags": [ @@ -11069,6 +11115,23 @@ "xml": { "name": "ForbiddenResponse" } + }, + "GetSessionsResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "example": true + }, + "result": { + "type": "array", + "example": [], + "items": {} + } + }, + "xml": { + "name": "GetSessionsResponse" + } } }, "securitySchemes": {