Browse Source

companion: fix s3 uploads for URL plugins (#1784)

fixes #1774
Ifedapo .A. Olarewaju 5 years ago
parent
commit
e5cecfcdf9

+ 20 - 0
packages/@uppy/companion/src/server/Uploader.js

@@ -10,6 +10,7 @@ const { jsonStringify, hasMatch } = require('./helpers/utils')
 const logger = require('./logger')
 const validator = require('validator')
 const headerSanitize = require('./header-blacklist')
+const redis = require('./redis')
 
 const PROTOCOLS = Object.freeze({
   multipart: 'multipart',
@@ -91,6 +92,25 @@ class Uploader {
     return token.substring(0, 8)
   }
 
+  static reqToOptions (req, size) {
+    return {
+      uppyOptions: req.uppy.options,
+      endpoint: req.body.endpoint,
+      uploadUrl: req.body.uploadUrl,
+      protocol: req.body.protocol,
+      metadata: req.body.metadata,
+      size: size,
+      fieldname: req.body.fieldname,
+      pathPrefix: `${req.uppy.options.filePath}`,
+      storage: redis.client(),
+      s3: req.uppy.s3Client ? {
+        client: req.uppy.s3Client,
+        options: req.uppy.options.providerOptions.s3
+      } : null,
+      headers: req.body.headers
+    }
+  }
+
   /**
    * the number of bytes written into the streams
    */

+ 1 - 19
packages/@uppy/companion/src/server/controllers/get.js

@@ -1,14 +1,11 @@
 const Uploader = require('../Uploader')
-const redis = require('../redis')
 const logger = require('../logger')
 
 function get (req, res, next) {
   const providerName = req.params.providerName
   const id = req.params.id
-  const body = req.body
   const token = req.uppy.providerTokens[providerName]
   const provider = req.uppy.provider
-  const { providerOptions } = req.uppy.options
 
   // get the file size before proceeding
   provider.size({ id, token }, (err, size) => {
@@ -22,22 +19,7 @@ function get (req, res, next) {
     }
 
     logger.debug('Instantiating uploader.', null, req.id)
-    const uploader = new Uploader({
-      uppyOptions: req.uppy.options,
-      endpoint: body.endpoint,
-      uploadUrl: body.uploadUrl,
-      protocol: body.protocol,
-      metadata: body.metadata,
-      size: size,
-      fieldname: body.fieldname,
-      pathPrefix: `${req.uppy.options.filePath}`,
-      storage: redis.client(),
-      s3: req.uppy.s3Client ? {
-        client: req.uppy.s3Client,
-        options: providerOptions.s3
-      } : null,
-      headers: body.headers
-    })
+    const uploader = new Uploader(Uploader.reqToOptions(req, size))
 
     if (uploader.hasError()) {
       const response = uploader.getResponse()

+ 1 - 14
packages/@uppy/companion/src/server/controllers/url.js

@@ -4,7 +4,6 @@ const Uploader = require('../Uploader')
 const validator = require('validator')
 const utils = require('../helpers/utils')
 const logger = require('../logger')
-const redis = require('../redis')
 
 module.exports = () => {
   return router()
@@ -47,20 +46,8 @@ const get = (req, res) => {
   utils.getURLMeta(req.body.url)
     .then(({ size }) => {
       // @ts-ignore
-      const { filePath } = req.uppy.options
       logger.debug('Instantiating uploader.', null, req.id)
-      const uploader = new Uploader({
-        uppyOptions: req.uppy.options,
-        endpoint: req.body.endpoint,
-        uploadUrl: req.body.uploadUrl,
-        protocol: req.body.protocol,
-        metadata: req.body.metadata,
-        size: size,
-        fieldname: req.body.fieldname,
-        pathPrefix: `${filePath}`,
-        storage: redis.client(),
-        headers: req.body.headers
-      })
+      const uploader = new Uploader(Uploader.reqToOptions(req, size))
 
       if (uploader.hasError()) {
         const response = uploader.getResponse()