From 92f10dd4075ce9e1ff50c708f72cfa7f2695f79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFs=20Mansot?= <26844641+devfull@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:39:12 +0200 Subject: [PATCH] fix `FileService` to compute file hash in `create` --- src/services/common/CryptoService/CryptoService.ts | 4 ++++ src/services/common/FilesService/FilesService.ts | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/services/common/CryptoService/CryptoService.ts b/src/services/common/CryptoService/CryptoService.ts index 893f62c5..b924b974 100644 --- a/src/services/common/CryptoService/CryptoService.ts +++ b/src/services/common/CryptoService/CryptoService.ts @@ -15,6 +15,10 @@ export default class CryptoService extends BaseService { return crypto.createHash("sha256").update(String(key)).digest("base64").slice(0, 32); } + public async getHash(buffer: Buffer): Promise { + return crypto.createHash("sha256").update(buffer).digest("hex"); + } + /** * @description : encrypt data * @throws {Error} If data cannot be encrypted diff --git a/src/services/common/FilesService/FilesService.ts b/src/services/common/FilesService/FilesService.ts index f80ddcc8..ac14c6b9 100644 --- a/src/services/common/FilesService/FilesService.ts +++ b/src/services/common/FilesService/FilesService.ts @@ -71,12 +71,15 @@ export default class FilesService extends BaseService { public async create(file: File, fileData: Express.Multer.File) { const key = v4(); const encryptedFile = await this.cryptoService.encrypt(fileData.buffer, key); + const hash = await this.cryptoService.getHash(fileData.buffer); + const upload = await this.ipfsService.pinFile(Readable.from(encryptedFile), fileData.originalname); let 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; + fileToCreate.hash = hash; fileToCreate.archived_at = null; return this.filesRepository.create(fileToCreate, key);