From b6f1e11f53f5e71a966bb7540e95e980ad9ce177 Mon Sep 17 00:00:00 2001 From: OxSaitama Date: Mon, 15 May 2023 11:26:21 +0200 Subject: [PATCH] add mimetype and size of files --- package.json | 2 +- src/app/api/super-admin/FilesController.ts | 3 +-- src/common/databases/schema.prisma | 2 ++ src/common/repositories/FilesRepository.ts | 2 ++ .../FilesService/FilesService.ts | 22 ++++++++++++++----- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 45a5412f..a6afd3e1 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "cors": "^2.8.5", "express": "^4.18.2", "jsonwebtoken": "^9.0.0", - "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.49", + "le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.50", "module-alias": "^2.2.2", "multer": "^1.4.5-lts.1", "next": "^13.1.5", diff --git a/src/app/api/super-admin/FilesController.ts b/src/app/api/super-admin/FilesController.ts index 745bac2a..ff81a1a4 100644 --- a/src/app/api/super-admin/FilesController.ts +++ b/src/app/api/super-admin/FilesController.ts @@ -57,8 +57,7 @@ export default class FilesController extends ApiController { return; } - const type = fileInfo.file.file_name.split(".").pop(); - if (type?.toLowerCase() === "pdf") response.setHeader("Content-Type", "application/pdf"); + response.setHeader("Content-Type", fileInfo.file.mimetype); response.setHeader("Content-Disposition", `inline; filename=${encodeURIComponent(fileInfo.file.file_name)}`); this.httpSuccess(response, fileInfo.buffer); diff --git a/src/common/databases/schema.prisma b/src/common/databases/schema.prisma index 742b331b..f9035aa2 100644 --- a/src/common/databases/schema.prisma +++ b/src/common/databases/schema.prisma @@ -204,6 +204,8 @@ model Files { document_uid String @db.VarChar(255) file_path String @unique @db.VarChar(255) file_name String @db.VarChar(255) + mimetype String @db.VarChar(255) + size Int archived_at DateTime? key String? @db.VarChar(255) created_at DateTime? @default(now()) diff --git a/src/common/repositories/FilesRepository.ts b/src/common/repositories/FilesRepository.ts index cc75dbf1..9a0816c9 100644 --- a/src/common/repositories/FilesRepository.ts +++ b/src/common/repositories/FilesRepository.ts @@ -37,6 +37,8 @@ export default class FilesRepository extends BaseRepository { }, file_name: file.file_name, file_path: file.file_path, + mimetype: file.mimetype, + size: file.size, key: key }, include: { document: true } diff --git a/src/services/private-services/FilesService/FilesService.ts b/src/services/private-services/FilesService/FilesService.ts index 6e88a91f..fe1ae559 100644 --- a/src/services/private-services/FilesService/FilesService.ts +++ b/src/services/private-services/FilesService/FilesService.ts @@ -6,8 +6,12 @@ import CryptoService from "../CryptoService/CryptoService"; import IpfsService from "../IpfsService/IpfsService"; import { BackendVariables } from "@Common/config/variables/Variables"; import { Readable } from "stream"; +<<<<<<< HEAD import { v4 } from "uuid"; import { Files } from "@prisma/client"; +======= +import uuid from "uuid"; +>>>>>>> 14db92d (add mimetype and size of files) @Service() export default class FilesService extends BaseService { @@ -45,24 +49,32 @@ export default class FilesService extends BaseService { console.log(file, uid); if (!file?.key) return null; const fileResult = await fetch(file.file_path); - const fileContent = await fileResult.arrayBuffer(); - return {file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileContent), file.key)}; + const fileArrayBuffer = await fileResult.arrayBuffer(); + return {file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileArrayBuffer), file.key)}; } /** * @description : Create a new file * @throws {Error} If file cannot be created */ +<<<<<<< HEAD public async create(file: File, fileData: Express.Multer.File): Promise { const key = v4(); fileData.mimetype; fileData.size; +======= + public async create(file: File, fileData: Express.Multer.File) { + const key = uuid.v4(); +>>>>>>> 14db92d (add mimetype and size of files) const encryptedFile = await this.cryptoService.encrypt(fileData.buffer, key); const upload = await this.ipfsService.pinFile(Readable.from(encryptedFile), fileData.originalname); - file.file_name = fileData.originalname; //encryptedFileName.toString('utf-8') - file.file_path = this.variables.PINATA_GATEWAY.concat(upload.IpfsHash); + const fileToCreate: File = file; + fileToCreate.file_name = fileData.originalname; + fileToCreate.file_path = this.variables.PINATA_GATEWAY.concat(upload.IpfsHash); + fileToCreate.mimetype = fileData.mimetype; + fileToCreate.size = fileData.size; - return this.filesRepository.create(file, key); + return this.filesRepository.create(fileToCreate, key); } /**