Files
myDrive/tests/fixtures/createFile.js
T
2020-03-04 17:10:56 -05:00

32 lines
977 B
JavaScript

const mongoose = require("../../src/db/mongoose");
const conn = mongoose.connection;
const crypto = require("crypto");
const fs = require("fs");
const createFile = (filename, filepath, metadata, user) => {
return new Promise((resolve, reject) => {
const password = user.getEncryptionKey(); //process.env.KEY;
const initVect = metadata.IV || crypto.randomBytes(16);
const CIPHER_KEY = crypto.createHash('sha256').update(password).digest()
const cipher = crypto.createCipheriv('aes256', CIPHER_KEY, initVect);
const fileReadStream = fs.createReadStream(filepath);
let bucket = new mongoose.mongo.GridFSBucket(conn.db, {
chunkSizeBytes: 1024 * 255
});
const uploadStream = bucket.openUploadStream(filename, {metadata});
fileReadStream.pipe(cipher).pipe(uploadStream).on("finish", (file) => {
resolve(file);
});
})
}
module.exports = createFile;