Procházet zdrojové kódy

Merge pull request #665 from transloadit/feature/s3-validation

 s3: Check upload parameters shape, fixes #653
Artur Paikin před 7 roky
rodič
revize
a7988a237c
1 změnil soubory, kde provedl 17 přidání a 0 odebrání
  1. 17 0
      src/plugins/AwsS3/index.js

+ 17 - 0
src/plugins/AwsS3/index.js

@@ -57,6 +57,21 @@ module.exports = class AwsS3 extends Plugin {
     }).then((response) => response.json())
     }).then((response) => response.json())
   }
   }
 
 
+  validateParameters (file, params) {
+    const valid = typeof params === 'object' && params &&
+      typeof params.url === 'string' &&
+      (typeof params.fields === 'object' || params.fields == null) &&
+      (params.method == null || /^(put|post)$/i.test(params.method))
+
+    if (!valid) {
+      const err = new TypeError(`AwsS3: got incorrect result from 'getUploadParameters()' for file '${file.name}', expected an object '{ url, method, fields }'.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`)
+      console.error(err)
+      throw err
+    }
+
+    return params
+  }
+
   prepareUpload (fileIDs) {
   prepareUpload (fileIDs) {
     fileIDs.forEach((id) => {
     fileIDs.forEach((id) => {
       const file = this.uppy.getFile(id)
       const file = this.uppy.getFile(id)
@@ -75,6 +90,8 @@ module.exports = class AwsS3 extends Plugin {
         const paramsPromise = Promise.resolve()
         const paramsPromise = Promise.resolve()
           .then(() => getUploadParameters(file))
           .then(() => getUploadParameters(file))
         return paramsPromise.then((params) => {
         return paramsPromise.then((params) => {
+          return this.validateParameters(file, params)
+        }).then((params) => {
           this.uppy.emit('preprocess-progress', file, {
           this.uppy.emit('preprocess-progress', file, {
             mode: 'determinate',
             mode: 'determinate',
             message: this.i18n('preparingUpload'),
             message: this.i18n('preparingUpload'),