Files
storage-service/src/logs/logs.controller.ts

107 lines
3.3 KiB
TypeScript

import {Controller, Get, Header, Delete, Options, HttpCode, Req} from '@nestjs/common';
import {ApiTags, ApiResponse, ApiSecurity} from '@nestjs/swagger';
import {LogsService} from './logs.service';
import {ALLOW_ORIGIN_ALL, COLLECTION_LOGS, LOG_TYPE, ALLOW_METHOD, ALLOW_CREDENTIALS, CONTENT_LENGTH, ALLOW_HEADERS} from 'src/consts';
import {ClienLogResponse, ServerLogResponse} from './logs.schema';
import {AuthService} from 'src/services/auth.service';
import {Request} from 'express';
@ApiSecurity('apiKey')
@Controller(COLLECTION_LOGS)
@ApiTags(COLLECTION_LOGS)
export class LogsController {
constructor(
private readonly logsService: LogsService,
private readonly authService: AuthService,
) {}
@Get('/client')
@Header(...ALLOW_ORIGIN_ALL)
@ApiResponse({
status: 200,
description: 'Возвращает список клиентских запросов',
type: ClienLogResponse,
isArray: true,
})
async findAllClientLogs(@Req() request: Request): Promise<ClienLogResponse[]> {
await this.authService.checkRequest(request);
return await this.logsService.findAllClientLogs();
}
@Delete('/client')
@Header(...ALLOW_ORIGIN_ALL)
@ApiResponse({
status: 200,
description: 'Пустой список клиентских запросов',
type: ClienLogResponse,
isArray: true,
})
async clearAllClientLogs(@Req() request: Request): Promise<ClienLogResponse[]> {
await this.authService.checkRequest(request);
return await this.logsService.clearLogsByType(LOG_TYPE.CLIENT);
}
@Get('/server')
@Header(...ALLOW_ORIGIN_ALL)
@ApiResponse({
status: 200,
description: 'Возвращает список серверных ошибок',
type: ServerLogResponse,
isArray: true,
})
async findAllServerLogs(@Req() request: Request): Promise<ServerLogResponse[]> {
await this.authService.checkRequest(request);
return await this.logsService.findAllServerLogs();
}
@Delete('/server')
@Header(...ALLOW_ORIGIN_ALL)
@ApiResponse({
status: 200,
description: 'Пустой список серверных ошибок',
type: ServerLogResponse,
isArray: true,
})
async clearAllServerLogs(@Req() request: Request): Promise<ServerLogResponse[]> {
await this.authService.checkRequest(request);
return await this.logsService.clearLogsByType(LOG_TYPE.SERVER);
}
@Options('')
@Header(...ALLOW_ORIGIN_ALL)
@Header(...ALLOW_METHOD)
@Header(...ALLOW_CREDENTIALS)
@Header(...CONTENT_LENGTH)
@Header(...ALLOW_HEADERS)
@HttpCode(204)
async options(): Promise<string> {
return '';
}
@Options('/server')
@Header(...ALLOW_ORIGIN_ALL)
@Header(...ALLOW_METHOD)
@Header(...ALLOW_CREDENTIALS)
@Header(...CONTENT_LENGTH)
@Header(...ALLOW_HEADERS)
@HttpCode(204)
async optionsServer(): Promise<string> {
return '';
}
@Options('/client')
@Header(...ALLOW_ORIGIN_ALL)
@Header(...ALLOW_METHOD)
@Header(...ALLOW_CREDENTIALS)
@Header(...CONTENT_LENGTH)
@Header(...ALLOW_HEADERS)
@HttpCode(204)
async optionsClient(): Promise<string> {
return '';
}
}