Skip to content
Snippets Groups Projects
Commit 4438ea48 authored by Yogmatee Roochun's avatar Yogmatee Roochun
Browse files

Merge branch 'shared-data-model' into remotes/origin/xsweet

parents 58a573b9 f6f4662e
No related branches found
No related tags found
2 merge requests!93Shared data model,!94Dev
......@@ -5,8 +5,10 @@ const getUser = require('../utils/user.js')
const tar = require('../utils/unTar.js')
const files = require('../utils/files.js')
const db = require('../utils/db.js')
const uuidv4 = require('uuid/v4')
const ftpTagger = config.get('ftp_tagger')
const rootPath = `${process.env.HOME}/${config.get('ftp_directory')}/${
ftpTagger.username
}/Done`
......@@ -54,13 +56,26 @@ async function processFile(path) {
extractedFilePath,
manifestFilename,
)
const [filesArr, promisesArr] = await files.checkFiles(
filesData,
tmpPath,
user,
)
await db.createTaggersFiles(filesArr)
await Promise.all(promisesArr)
const filesArr = await files.checkFiles(filesData, tmpPath, user)
const uuid = uuidv4()
// upload to minio
for (let i = 0; i < filesArr.length; i += 1) {
files.uploadFileToMinio(
`${uuid}${filesArr[i].extension}`,
filesArr[i].filename,
filesArr[i].url,
filesArr[i].mimeType,
)
}
const dbFilesArr = filesArr.map(obj => {
obj.url = `/download/${uuid}${obj.extension}`
delete obj.extension
return obj
})
await db.createTaggersFiles(dbFilesArr)
await files.renameFile(path)
logger.info('Uploading to Minio and the database has been completed.')
} catch (err) {
......
const config = require('config')
const expressMinio = require('express-middleware-minio')
const minioMiddleware = expressMinio.middleware()
......@@ -32,19 +31,14 @@ module.exports = app => {
app.get(
`/api/files/:filename`,
minioMiddleware({ op: expressMinio.Ops.get }),
minioMiddleware({ op: expressMinio.Ops.getStream }),
(req, res) => {
if (req.minio.error) {
res.status(400).json({ error: req.minio.error })
return
}
res.sendFile(req.minio.get.path, {}, err => {
if (err) {
res.status(500).json({ err })
}
expressMinio.utils.removeFile(req.minio.get.path)
})
req.minio.get.stream.pipe(res)
},
)
......@@ -64,19 +58,15 @@ module.exports = app => {
* files for the pdf conversion stage. */
app.get(
`${download_path}/:filename`,
minioMiddleware({ op: expressMinio.Ops.get }),
minioMiddleware({ op: expressMinio.Ops.getStream }),
(req, res) => {
if (req.minio.error) {
res.status(400).json({ error: req.minio.error })
return
}
res.download(req.minio.get.path, req.minio.get.originalName, err => {
if (err) {
console.warn('Download failed: ', err)
}
expressMinio.utils.removeFile(req.minio.get.path)
})
res.attachment(req.minio.get.originalName)
req.minio.get.stream.pipe(res)
},
)
}
......@@ -3,7 +3,6 @@ const logger = require('@pubsweet/logger')
const readline = require('readline')
const path = require('path')
const mime = require('mime-types')
const uuidv4 = require('uuid/v4')
const download = require('download')
const fetch = require('node-fetch')
......@@ -28,7 +27,7 @@ module.exports.getManifestFileData = function getManifestFileData(
) {
return new Promise((resolve, reject) => {
const files = []
const manuscriptId = manifestFileName.split('manifest.txt')[0]
const manuscriptId = manifestFileName.match(/\d+/g)[0]
const lineReader = readline.createInterface({
input: fs.createReadStream(`${tempFolder}/${manifestFileName}`, {
......@@ -63,7 +62,6 @@ module.exports.getManifestFileData = function getManifestFileData(
module.exports.checkFiles = function checkFiles(files, tmpPath, user) {
return new Promise((resolve, reject) => {
const filesArr = []
const promisesArr = []
for (let i = 0; i < files.length; i += 1) {
fs.access(files[i].fileURI, fs.F_OK, err => {
if (err) {
......@@ -82,24 +80,20 @@ module.exports.checkFiles = function checkFiles(files, tmpPath, user) {
const fileSizeInBytes = stats.size
const extension = path.extname(file)
const mimeType = mime.contentType(extension)
const uuid = uuidv4()
filesArr.push({
manuscriptId,
filename,
mimeType,
extension,
type: fileType,
size: fileSizeInBytes,
url: file,
label: fileLabel,
updatedBy: user.userId,
})
promisesArr.push(
uploadFileToMinio(`${uuid}${extension}`, filename, file, mimeType),
)
}
resolve([filesArr, promisesArr])
resolve(filesArr)
})
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment