Browse Source

s3: Check upload parameters shape.

Renée Kooi 7 years ago
parent
commit
259a5a9686
1 changed files with 12 additions and 0 deletions
  1. 12 0
      src/plugins/AwsS3/index.js

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

@@ -57,6 +57,17 @@ module.exports = class AwsS3 extends Plugin {
     }).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) {
+      throw 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.`)
+    }
+  }
+
   prepareUpload (fileIDs) {
     fileIDs.forEach((id) => {
       const file = this.uppy.getFile(id)
@@ -75,6 +86,7 @@ module.exports = class AwsS3 extends Plugin {
         const paramsPromise = Promise.resolve()
           .then(() => getUploadParameters(file))
         return paramsPromise.then((params) => {
+          this.validateParameters(file, params)
           this.uppy.emit('preprocess-progress', file, {
             mode: 'determinate',
             message: this.i18n('preparingUpload'),