FIX: Upload Imaga Files and add permissions

This commit is contained in:
Victor Radael
2022-07-15 15:10:11 -03:00
parent 314bc5a562
commit c87ceec77b
+28 -21
View File
@@ -12,8 +12,9 @@ import {
UseInterceptors,
Inject,
Headers,
UploadedFiles,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { FileInterceptor, FilesInterceptor } from '@nestjs/platform-express';
import { ApiBearerAuth, ApiConsumes, ApiTags } from '@nestjs/swagger';
import { ConnectorClientService } from './client.service';
import { AddTagDto } from './dtos/add-tag';
@@ -23,12 +24,16 @@ import { DeleteConnectorDto } from './dtos/delete-connector';
import { GetAllDto } from './dtos/get-all';
import { RemoveTagDto } from './dtos/remove-tag';
import { UpdateDto } from './dtos/update';
import { UploadFileDto } from './dtos/upload-file';
import { DadosferaLogger } from 'dadosfera-logs';
import { Authenticated } from 'src/authentication/authentication.decorator';
import {
Authenticated,
RequireAllPermissions,
} from 'src/authentication/authentication.decorator';
import { Permissions } from 'src/authentication/permissions.enum';
@ApiTags('connectors')
@ApiBearerAuth()
@Authenticated()
@Controller('connectors')
export class ConnectorController {
logger: any;
@@ -41,7 +46,7 @@ export class ConnectorController {
}
@Post()
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.CREATE)
@ApiConsumes('multipart/form-data')
@UseInterceptors(FileInterceptor('file'))
async uploadConnector(
@@ -58,23 +63,25 @@ export class ConnectorController {
return response;
}
@Post('/upload')
@Authenticated()
@Post('/uploads')
@RequireAllPermissions(Permissions.CONNECTORS.CREATE)
@ApiConsumes('multipart/form-data')
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file, @Body() { name }: UploadFileDto) {
@UseInterceptors(FilesInterceptor('files'))
async uploadFile(@UploadedFiles() files) {
this.logger.info('/upload - Upload Connector Route');
const response = await this.connectorClientService.uploadFile({
file,
name,
const promises = files.map(async (file) => {
return await this.connectorClientService.uploadFile({
file,
name: file.originalname.split('.')[0],
});
});
const response = await Promise.all(promises);
return response;
}
@Post('/multiple-connectors-upload')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.CREATE)
@ApiConsumes('multipart/form-data')
@UseInterceptors(FileInterceptor('file'))
async uploadConnectorsFile(@UploadedFile() file: UploadConnectorsFileDto) {
@@ -88,7 +95,7 @@ export class ConnectorController {
}
@Get()
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.GET)
async getAllConnectors(
@Headers('dadosfera-lang') language,
@Query() queries: GetAllDto,
@@ -114,13 +121,13 @@ export class ConnectorController {
}
@Get('/tags')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.GET)
async getConnectorsTags() {
return await this.connectorClientService.getConnectorsTags();
}
@Get('/:plugin')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.GET)
async getConnector(
@Headers('dadosfera-lang') language,
@Param('plugin') plugin: string,
@@ -142,7 +149,7 @@ export class ConnectorController {
}
@Get('/:plugin/details')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.GET)
async getConnectorDetails(
@Headers('dadosfera-lang') language,
@Param('plugin') plugin: string,
@@ -164,7 +171,7 @@ export class ConnectorController {
}
@Put('/:plugin')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.UPDATE)
@ApiConsumes('multipart/form-data')
async updateConnector(
@Param('plugin') plugin: string,
@@ -186,7 +193,7 @@ export class ConnectorController {
}
@Put('/:plugin/add-tag')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.UPDATE)
async addTagOnConnector(
@Param('plugin') plugin: string,
@Body() body: AddTagDto,
@@ -213,7 +220,7 @@ export class ConnectorController {
}
@Put('/:plugin/remove-tag')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.UPDATE)
async removeTagOnConnector(
@Param('plugin') plugin: string,
@Body() body: RemoveTagDto,
@@ -241,7 +248,7 @@ export class ConnectorController {
}
@Delete('/:plugin')
@Authenticated()
@RequireAllPermissions(Permissions.CONNECTORS.DELETE)
async deleteConnector(
@Param('plugin') plugin: string,
@Body() { version }: DeleteConnectorDto,