Ver Fonte

tl-preset: Add flat `results` array to upload result.

Renée Kooi há 6 anos atrás
pai
commit
9615beb315

+ 46 - 0
packages/@uppy/transloadit-preset/src/TransloaditResultsPlugin.js

@@ -0,0 +1,46 @@
+const { Plugin } = require('@uppy/core')
+
+/**
+ * Add a `results` key to the upload result data, containing all Transloadit Assembly results.
+ */
+class TransloaditResultsPlugin extends Plugin {
+  constructor (uppy, opts) {
+    super(uppy, opts)
+
+    this.type = 'modifier'
+    this.id = 'TransloaditResultsPlugin'
+    this._afterUpload = this._afterUpload.bind(this)
+  }
+
+  install () {
+    this.uppy.addPostProcessor(this._afterUpload)
+  }
+
+  _afterUpload (fileIDs, uploadID) {
+    const { currentUploads } = this.uppy.getState()
+    const { result } = currentUploads[uploadID]
+    const assemblies = result && Array.isArray(result.transloadit) ? result.transloadit : []
+
+    // Merge the assembly.results[*] arrays and add `stepName` and
+    // `assemblyId` properties.
+    const assemblyResults = []
+    assemblies.forEach((assembly) => {
+      Object.keys(assembly.results).forEach((stepName) => {
+        const results = assembly.results[stepName]
+        results.forEach((result) => {
+          assemblyResults.push({
+            ...result,
+            assemblyId: assembly.assembly_id,
+            stepName
+          })
+        })
+      })
+    })
+
+    this.uppy.addResultData(uploadID, {
+      results: assemblyResults
+    })
+  }
+}
+
+module.exports = TransloaditResultsPlugin

+ 6 - 0
packages/@uppy/transloadit-preset/src/addTransloaditPlugin.js

@@ -1,4 +1,5 @@
 const Transloadit = require('@uppy/transloadit')
 const Transloadit = require('@uppy/transloadit')
+const TransloaditResults = require('./TransloaditResultsPlugin')
 
 
 const transloaditOptionNames = [
 const transloaditOptionNames = [
   'service',
   'service',
@@ -18,6 +19,11 @@ function addTransloaditPlugin (uppy, opts) {
     if (opts.hasOwnProperty(name)) transloaditOptions[name] = opts[name]
     if (opts.hasOwnProperty(name)) transloaditOptions[name] = opts[name]
   })
   })
   uppy.use(Transloadit, transloaditOptions)
   uppy.use(Transloadit, transloaditOptions)
+
+  // Adds a `results` key to the upload result data containing a flat array of all results from all Assemblies.
+  if (transloaditOptions.waitForEncoding) {
+    uppy.use(TransloaditResults)
+  }
 }
 }
 
 
 module.exports = addTransloaditPlugin
 module.exports = addTransloaditPlugin