UNPKG

@syngrisi/syngrisi

Version:
124 lines (109 loc) 4.42 kB
import express from 'express'; import { OpenAPIRegistry } from '@asteasolutions/zod-to-openapi'; import * as clientController from '@controllers/client.controller'; import { Midleware } from '@types'; import { validateRequest } from '@utils/validateRequest'; import { ClientStartSessionSchema, ClientCreateCheckSchema, ClientGetIdentSchema, ClientGetBaselinesSchema, ClientGetSnapshotsSchema, ClientStartSessionResponseSchema, ClientCreateCheckResponseSchema } from '@schemas/Client.schema'; import { createApiResponse, createPaginatedApiResponse } from '@api-docs/openAPIResponseBuilders'; import { ensureApiKey } from '@middlewares/ensureLogin'; import { createRequestQuerySchema } from '@schemas/utils/createRequestQuerySchema'; import { RequestPaginationSchema } from '@schemas/common/RequestPagination.schema'; import { createRequestOpenApiBodySchema } from '@schemas/utils/createRequestOpenApiBodySchema'; import { createRequestBodySchema } from '@schemas/utils/createRequestBodySchema'; import { commonValidations } from '@schemas/utils'; import { SkipValid } from '@schemas/SkipValid.schema'; import { getByIdParamsSchema } from '../../schemas/utils/createRequestParamsSchema'; import { IdentJSONStringSchema } from '../../schemas'; export const registry = new OpenAPIRegistry(); const router = express.Router(); registry.registerPath({ method: 'post', path: '/v1/client/startSession', summary: "Start a client session", tags: ['Client'], request: { body: createRequestOpenApiBodySchema(ClientStartSessionSchema) }, responses: createApiResponse(ClientStartSessionResponseSchema, 'Success'), }); router.post( '/startSession', ensureApiKey(), validateRequest(createRequestBodySchema(ClientStartSessionSchema), '/v1/client/startSession'), clientController.startSession as Midleware ); registry.registerPath({ method: 'post', path: '/v1/client/stopSession/{testid}', summary: "Stop a client session by test ID", tags: ['Client'], request: commonValidations.paramsTestId, responses: createApiResponse(ClientStartSessionResponseSchema, 'Success'), }); router.post( '/stopSession/:testid', ensureApiKey(), // validateRequest(SkipValid, '/v1/client/stopSession/{testid}'), validateRequest(getByIdParamsSchema('testid'), '/v1/client/stopSession/{testid}'), clientController.endSession as Midleware ); registry.registerPath({ method: 'post', path: '/v1/client/createCheck', summary: "Create a client check", tags: ['Client'], request: { body: createRequestOpenApiBodySchema(ClientCreateCheckSchema) }, responses: createApiResponse(ClientCreateCheckResponseSchema, 'Success'), }); router.post( '/createCheck', ensureApiKey(), validateRequest(createRequestBodySchema(ClientCreateCheckSchema), '/v1/client/createCheck'), clientController.createCheck as Midleware ); registry.registerPath({ method: 'get', path: '/v1/client/getIdent', summary: "Set of fields that identify checks and baselines", tags: ['Client'], responses: createApiResponse(ClientGetIdentSchema, 'Success'), }); router.get( '/getIdent', ensureApiKey(), validateRequest(SkipValid, 'get, /v1/client/getIdent'), clientController.getIdent as Midleware ); const ExtRequestBaselineSchema = RequestPaginationSchema.extend( { filter: IdentJSONStringSchema, } ); registry.registerPath({ method: 'get', path: '/v1/client/baselines', summary: "Get client baselines", tags: ['Client'], // request: { query: RequestPaginationSchema }, request: { query: ExtRequestBaselineSchema }, responses: createPaginatedApiResponse(ClientGetBaselinesSchema, 'Success'), }); router.get( '/baselines', ensureApiKey(), validateRequest(createRequestQuerySchema(ExtRequestBaselineSchema), 'get, /v1/client/baselines'), clientController.getBaselines as Midleware ); registry.registerPath({ method: 'get', path: '/v1/client/snapshots', summary: "Get client snapshots", tags: ['Client'], request: { query: RequestPaginationSchema }, responses: createPaginatedApiResponse(ClientGetSnapshotsSchema, 'Success'), }); router.get( '/snapshots', ensureApiKey(), validateRequest(createRequestQuerySchema(RequestPaginationSchema), 'get, /v1/client/snapshots'), clientController.getSnapshots as Midleware ); export default router;