Przeglądaj źródła

Merge pull request #614 from transloadit/feature/tl-autotus

transloadit: Embed tus plugin.
Artur Paikin 7 lat temu
rodzic
commit
e291f30908

+ 11 - 9
src/plugins/Transloadit/index.js

@@ -1,5 +1,6 @@
 const Translator = require('../../core/Translator')
 const Translator = require('../../core/Translator')
 const Plugin = require('../../core/Plugin')
 const Plugin = require('../../core/Plugin')
+const Tus = require('../Tus')
 const Client = require('./Client')
 const Client = require('./Client')
 const StatusSocket = require('./Socket')
 const StatusSocket = require('./Socket')
 
 
@@ -165,7 +166,6 @@ module.exports = class Transloadit extends Plugin {
       function attachAssemblyMetadata (file, assembly) {
       function attachAssemblyMetadata (file, assembly) {
         // Attach meta parameters for the Tus plugin. See:
         // Attach meta parameters for the Tus plugin. See:
         // https://github.com/tus/tusd/wiki/Uploading-to-Transloadit-using-tus#uploading-using-tus
         // https://github.com/tus/tusd/wiki/Uploading-to-Transloadit-using-tus#uploading-using-tus
-        // TODO Should this `meta` be moved to a `tus.meta` property instead?
         const tlMeta = {
         const tlMeta = {
           assembly_url: assembly.assembly_url,
           assembly_url: assembly.assembly_url,
           filename: file.name,
           filename: file.name,
@@ -174,14 +174,7 @@ module.exports = class Transloadit extends Plugin {
         const meta = Object.assign({}, file.meta, tlMeta)
         const meta = Object.assign({}, file.meta, tlMeta)
         // Add assembly-specific Tus endpoint.
         // Add assembly-specific Tus endpoint.
         const tus = Object.assign({}, file.tus, {
         const tus = Object.assign({}, file.tus, {
-          endpoint: assembly.tus_url,
-          // Only send assembly metadata to the tus endpoint.
-          metaFields: Object.keys(tlMeta),
-          // Make sure tus doesn't resume a previous upload.
-          uploadUrl: null,
-          // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times
-          // will upload to the same assembly.
-          resume: false
+          endpoint: assembly.tus_url
         })
         })
 
 
         // Set uppy server location.
         // Set uppy server location.
@@ -773,7 +766,16 @@ module.exports = class Transloadit extends Plugin {
     this.uppy.addPostProcessor(this.afterUpload)
     this.uppy.addPostProcessor(this.afterUpload)
 
 
     if (this.opts.importFromUploadURLs) {
     if (this.opts.importFromUploadURLs) {
+      // No uploader needed when importing; instead we take the upload URL from an existing uploader.
       this.uppy.on('upload-success', this.onFileUploadURLAvailable)
       this.uppy.on('upload-success', this.onFileUploadURLAvailable)
+    } else {
+      this.uppy.use(Tus, {
+        // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times
+        // will upload to the same assembly.
+        resume: false,
+        // Only send assembly metadata to the tus endpoint.
+        metaFields: ['assembly_url', 'filename', 'fieldname']
+      })
     }
     }
 
 
     this.uppy.on('restore:get-data', this.getPersistentData)
     this.uppy.on('restore:get-data', this.getPersistentData)

+ 0 - 2
website/src/examples/transloadit/app.es6

@@ -2,7 +2,6 @@ const Uppy = require('uppy/lib/core/Core')
 const Dashboard = require('uppy/lib/plugins/Dashboard')
 const Dashboard = require('uppy/lib/plugins/Dashboard')
 const Webcam = require('uppy/lib/plugins/Webcam')
 const Webcam = require('uppy/lib/plugins/Webcam')
 const Transloadit = require('uppy/lib/plugins/Transloadit')
 const Transloadit = require('uppy/lib/plugins/Transloadit')
-const Tus = require('uppy/lib/plugins/Tus')
 const Instagram = require('uppy/lib/plugins/Instagram')
 const Instagram = require('uppy/lib/plugins/Instagram')
 
 
 function initUppy () {
 function initUppy () {
@@ -22,7 +21,6 @@ function initUppy () {
   })
   })
 
 
   uppy
   uppy
-    .use(Tus, { resume: false })
     .use(Transloadit, {
     .use(Transloadit, {
       params: {
       params: {
         auth: {
         auth: {

+ 1 - 3
website/src/examples/transloadit/index.ejs

@@ -35,7 +35,7 @@ This example demonstrates how to unlock Transloadit’s features within Uppy.
   <label for="transloadit-api-key"
   <label for="transloadit-api-key"
          style="display: block; font-size: 13px; text-transform: uppercase; font-weight: bold;">
          style="display: block; font-size: 13px; text-transform: uppercase; font-weight: bold;">
     Transloadit API Key:</label>
     Transloadit API Key:</label>
-  <input type="text" 
+  <input type="text"
          style="font-size: 15px; width: 300px; max-width: 100%; border: 0; border-bottom: 1px solid black; padding: 6px 8px; margin-bottom: 20px;"
          style="font-size: 15px; width: 300px; max-width: 100%; border: 0; border-bottom: 1px solid black; padding: 6px 8px; margin-bottom: 20px;"
          id="transloadit-api-key" 
          id="transloadit-api-key" 
          placeholder="Your Transloadit API Key">
          placeholder="Your Transloadit API Key">
@@ -81,7 +81,6 @@ const Uppy = require('uppy/lib/core/Core')
 const Dashboard = require('uppy/lib/plugins/Dashboard')
 const Dashboard = require('uppy/lib/plugins/Dashboard')
 const Webcam = require('uppy/lib/plugins/Webcam')
 const Webcam = require('uppy/lib/plugins/Webcam')
 const Transloadit = require('uppy/lib/plugins/Transloadit')
 const Transloadit = require('uppy/lib/plugins/Transloadit')
-const Tus = require('uppy/lib/plugins/Tus')
 const Instagram = require('uppy/lib/plugins/Instagram')
 const Instagram = require('uppy/lib/plugins/Instagram')
 
 
 const uppy = Uppy({
 const uppy = Uppy({
@@ -96,7 +95,6 @@ const uppy = Uppy({
 })
 })
 
 
 uppy
 uppy
-  .use(Tus, { resume: false })
   .use(Transloadit, {
   .use(Transloadit, {
     params: {
     params: {
       auth: {
       auth: {