From 800ccfb3274cf46eb1cab8a1ea78a56196842976 Mon Sep 17 00:00:00 2001 From: Bogdan Cochior <bogdan.cochior@thinslices.com> Date: Fri, 27 Jul 2018 14:39:25 +0300 Subject: [PATCH] feat(mts): add submission package in the flow --- .../src/routes/fragments/post.js | 17 +++++ packages/component-mts-package/src/MTS.js | 8 +-- .../src/{AWS.js => PackageManager.js} | 4 +- packages/component-mts-package/src/output.xml | 68 ------------------- packages/xpub-faraday/config/default.js | 11 +++ 5 files changed, 35 insertions(+), 73 deletions(-) rename packages/component-mts-package/src/{AWS.js => PackageManager.js} (98%) delete mode 100644 packages/component-mts-package/src/output.xml diff --git a/packages/component-manuscript-manager/src/routes/fragments/post.js b/packages/component-manuscript-manager/src/routes/fragments/post.js index b54399b0c..046d92be5 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/post.js +++ b/packages/component-manuscript-manager/src/routes/fragments/post.js @@ -1,3 +1,5 @@ +const config = require('config') +const { get } = require('lodash') const { Email, Fragment, @@ -5,6 +7,10 @@ const { authsome: authsomeHelper, } = require('pubsweet-component-helper-service') +const s3Config = get(config, 'pubsweet-component-aws-s3', {}) +const mtsConfig = get(config, 'mts-service', {}) +const MTSService = require('pubsweet-component-mts-package') + module.exports = models => async (req, res) => { const { collectionId, fragmentId } = req.params let collection, fragment @@ -51,6 +57,17 @@ module.exports = models => async (req, res) => { collection.status = 'submitted' collection.save() + const { journal, xmlParser, ftp } = mtsConfig + const MTS = new MTSService(journal, xmlParser, s3Config, ftp) + const packageFragment = { + ...fragment, + metadata: { + ...fragment.metadata, + customId: collection.customId, + }, + } + MTS.sendPackage(packageFragment) + return res.status(200).json(fragment) } catch (e) { const notFoundError = await services.handleNotFoundError(e, 'Item') diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js index 436b5b92e..0686bd52e 100644 --- a/packages/component-mts-package/src/MTS.js +++ b/packages/component-mts-package/src/MTS.js @@ -1,7 +1,7 @@ const convert = require('xml-js') const { set, get } = require('lodash') -const createFilesPackage = require('./AWS') +const createFilesPackage = require('./PackageManager') const mts = require('./mts-json-template') const { defaultConfig, @@ -91,7 +91,7 @@ class MTS { set( jsonTemplate, 'article.front.article-meta.abstract', - this.parseHtml(metadata.title), + this.parseHtml(metadata.abstract), ) return jsonTemplate @@ -209,9 +209,9 @@ class MTS { return this.convertToXML(this.composeJson(fragment)) } - async createMTSPackage(fragment = {}) { + sendPackage(fragment = {}) { const xmlFile = this.convertFragmentToXML(fragment) - await createFilesPackage(this.s3Config, this.ftpConfig)({ + return createFilesPackage(this.s3Config, this.ftpConfig)({ fragment, xmlFile, }) diff --git a/packages/component-mts-package/src/AWS.js b/packages/component-mts-package/src/PackageManager.js similarity index 98% rename from packages/component-mts-package/src/AWS.js rename to packages/component-mts-package/src/PackageManager.js index 2ea9b7f0a..76880ecb1 100644 --- a/packages/component-mts-package/src/AWS.js +++ b/packages/component-mts-package/src/PackageManager.js @@ -2,9 +2,9 @@ const fs = require('fs') const AWS = require('aws-sdk') const { get } = require('lodash') const { promisify } = require('util') +const FtpDeploy = require('ftp-deploy') const nodeArchiver = require('archiver') const logger = require('@pubsweet/logger') -const FtpDeploy = require('ftp-deploy') const filterByType = (fileTypes = []) => ({ Metadata: { filetype } }) => fileTypes.length > 0 ? fileTypes.includes(filetype) : true @@ -102,6 +102,8 @@ const uploadFiles = async ({ s3, filename, Bucket, config }) => { }) .catch(err => { logger.error(err) + deleteFile(filename) + throw err }) deleteFile(filename) diff --git a/packages/component-mts-package/src/output.xml b/packages/component-mts-package/src/output.xml deleted file mode 100644 index ea3de542f..000000000 --- a/packages/component-mts-package/src/output.xml +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE article SYSTEM "JATS-archivearticle1-mathml3.dtd"> -<article dtd-version="1.1d1" article-type="Research Article"> - <front> - <journal-meta> - <journal-id journal-id-type="publisher">research</journal-id> - <journal-id journal-id-type="email">faraday@hindawi.com</journal-id> - <journal-title-group> - <journal-title>Bioinorganic Chemistry and Applications</journal-title> - </journal-title-group> - <issn pub-type="ppub">2474-7394</issn> - <issn pub-type="epub"></issn> - </journal-meta> - <article-meta> - <article-id pub-id-type="publisher-id">RESEARCH-F-7654321</article-id> - <article-id pub-id-type="manuscript">RESEARCH-F-7654321</article-id> - <article-categories> - <subj-group subj-group-type="Article Type"> - <subject>clinical-study</subject> - </subj-group> - </article-categories> - <title-group> - <article-title> - <p>Harry Kane</p> - </article-title> - </title-group> - <contrib-group> - <contrib contrib-type="author" corresp="yes"> - <role content-type="1"></role> - <name> - <surname>Author</surname> - <given-names>Manuscriptunson</given-names> - <prefix>mr</prefix> - </name> - <email>hindawi+auth@thinslices.com</email> - <xref ref-type="aff" rid="aff1"></xref> - </contrib> - <contrib contrib-type="author" corresp="no"> - <role content-type="1"></role> - <name> - <surname>Gareth 4thplace</surname> - <given-names>Southgate</given-names> - <prefix>Dr.</prefix> - </name> - <email>hindawi+coauthor@thinslices.com</email> - <xref ref-type="aff" rid="aff2"></xref> - </contrib> - <aff id="aff1"> - <country>Hindawi</country> - </aff> - <aff id="aff2"> - <country>UK</country> - </aff> - </contrib-group> - <history> - <date date-type="received"> - <day>5</day> - <month>6</month> - <year>2018</year> - </date> - </history> - <abstract> - <p>Golden boot, golden boy.</p> - </abstract> - <funding-group></funding-group> - </article-meta> - </front> -</article> \ No newline at end of file diff --git a/packages/xpub-faraday/config/default.js b/packages/xpub-faraday/config/default.js index 22d48a7d7..bbd8cb5f3 100644 --- a/packages/xpub-faraday/config/default.js +++ b/packages/xpub-faraday/config/default.js @@ -71,6 +71,17 @@ module.exports = { bucket: process.env.AWS_S3_BUCKET, validations: path.resolve(__dirname, 'upload-validations.js'), }, + 'mts-service': { + ftp: { + user: 'dlpuser@dlptest.com', + password: '3D6XZV9MKdhM5fF', + host: 'ftp.dlptest.com', + port: 21, + localRoot: `./`, + remoteRoot: '/', + exclude: ['*.js'], + }, + }, 'invite-reset-password': { url: process.env.PUBSWEET_INVITE_PASSWORD_RESET_URL || '/invite', }, -- GitLab