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

xsweet conversion - front end

parent 959de4c6
No related branches found
No related tags found
2 merge requests!114Shared data model,!115Dev
...@@ -91,6 +91,7 @@ ...@@ -91,6 +91,7 @@
"request-promise": "^4.2.4", "request-promise": "^4.2.4",
"rfr": "^1.2.3", "rfr": "^1.2.3",
"rimraf": "^2.6.3", "rimraf": "^2.6.3",
"stream-to-array": "^2.3.0",
"supertest": "^3.0.0", "supertest": "^3.0.0",
"tar": "^4.4.8", "tar": "^4.4.8",
"tar-fs": "^1.16.3", "tar-fs": "^1.16.3",
......
...@@ -4,8 +4,12 @@ const config = require('config') ...@@ -4,8 +4,12 @@ const config = require('config')
const rfr = require('rfr') const rfr = require('rfr')
const { minioClient } = require('express-middleware-minio') const { minioClient } = require('express-middleware-minio')
const { timer } = require('benmark') const { timer } = require('benmark')
const fs = require('fs')
const FileModel = rfr('server/xpub-model/entities/file/data-access') const FileModel = rfr('server/xpub-model/entities/file/data-access')
const tar = rfr('server/utils/unTar')
const fileUtil = rfr('server/utils/files')
const { xsweetConvert } = rfr('server/xsweet-conversion')
const extractFileExtension = filename => { const extractFileExtension = filename => {
if (filename) { if (filename) {
...@@ -14,17 +18,31 @@ const extractFileExtension = filename => { ...@@ -14,17 +18,31 @@ const extractFileExtension = filename => {
return '' return ''
} }
const handleFile = async file => { const handleFile = async (file, manuscriptId, type) => {
const { stream, filename, mimetype } = await file const { stream, filename, mimetype } = await file
let newFilename = uuidv1() let newFilename = uuidv1()
let extension = ''
if (filename) { if (filename) {
const extension = extractFileExtension(filename) extension = extractFileExtension(filename)
if (extension) { if (extension) {
newFilename += `.${extension}` newFilename += `.${extension}`
} }
} }
// case when manuscript is a docx file
if (type === 'manuscript' && extension === 'docx') {
const tmpPath = await tar.createTempDir()
const wstreamTmp = fs.createWriteStream(`${tmpPath}/${filename}`)
stream.pipe(wstreamTmp)
wstreamTmp.on('finish', async () => {
await xsweetConvert(`${tmpPath}/${filename}`, manuscriptId)
logger.info('xsweet conversion is DONE!')
fileUtil.tidyUp(tmpPath)
})
}
try { try {
await timer(`S3 uploading file ${filename}`)(minioClient.uploadFileSteam)( await timer(`S3 uploading file ${filename}`)(minioClient.uploadFileSteam)(
newFilename, newFilename,
...@@ -40,10 +58,15 @@ const handleFile = async file => { ...@@ -40,10 +58,15 @@ const handleFile = async file => {
async function uploadFiles(_, { id, files, type = '' }, { user }) { async function uploadFiles(_, { id, files, type = '' }, { user }) {
const resolvedFiles = await files const resolvedFiles = await files
const savedFiles = [] const savedFiles = []
await Promise.all( await Promise.all(
resolvedFiles.map(async resolvedFile => { resolvedFiles.map(async resolvedFile => {
const { err, filename, url, mimetype } = await handleFile(resolvedFile) const { err, filename, url, mimetype } = await handleFile(
resolvedFile,
id,
type,
)
if (err || !filename) { if (err || !filename) {
logger.error('Minio error: ', err) logger.error('Minio error: ', err)
return return
...@@ -61,6 +84,7 @@ async function uploadFiles(_, { id, files, type = '' }, { user }) { ...@@ -61,6 +84,7 @@ async function uploadFiles(_, { id, files, type = '' }, { user }) {
const savedFile = await file.save() const savedFile = await file.save()
logger.debug('savedFile: ', savedFile) logger.debug('savedFile: ', savedFile)
savedFiles.push(savedFile) savedFiles.push(savedFile)
// xsweetConvert()
}), }),
) )
......
...@@ -1017,6 +1017,11 @@ any-observable@^0.2.0: ...@@ -1017,6 +1017,11 @@ any-observable@^0.2.0:
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242"
integrity sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI= integrity sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=
   
any-promise@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
anymatch@^1.3.0: anymatch@^1.3.0:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
...@@ -13191,6 +13196,13 @@ stream-shift@^1.0.0: ...@@ -13191,6 +13196,13 @@ stream-shift@^1.0.0:
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
   
stream-to-array@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353"
integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=
dependencies:
any-promise "^1.1.0"
stream-to-observable@^0.1.0: stream-to-observable@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
......
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