summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/videopress/js/videopress-uploader.js')
-rw-r--r--plugins/jetpack/modules/videopress/js/videopress-uploader.js157
1 files changed, 157 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/videopress/js/videopress-uploader.js b/plugins/jetpack/modules/videopress/js/videopress-uploader.js
new file mode 100644
index 00000000..1967f72b
--- /dev/null
+++ b/plugins/jetpack/modules/videopress/js/videopress-uploader.js
@@ -0,0 +1,157 @@
+/* globals plupload, pluploadL10n, error */
+window.wp = window.wp || {};
+
+( function( wp ) {
+ var VideoPress = {
+ originalOptions: {},
+
+ /**
+ * This is the standard uploader response handler.
+ */
+ handleStandardResponse: function( response, file ) {
+ if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) {
+ return error(pluploadL10n.default_error, null, file);
+
+ } else if ( ! response.success ) {
+ return error(response.data && response.data.message, response.data, file);
+ }
+
+ return response;
+ },
+
+ /**
+ * Handle response from the WPCOM Rest API.
+ */
+ handleRestApiResponse: function( response, file ) {
+ if ( response.media.length !== 1) {
+ return error( pluploadL10n.default_error, null, file );
+ }
+
+ var media = response.media[0],
+ mimeParts = media.mime_type.split('/'),
+ data = {
+ alt : '',
+ author : media.author_ID || 0,
+ authorName: '',
+ caption: '',
+ compat: { item: '', meta: '' },
+ date: media.date || '',
+ dateFormatted: media.date || '',
+ description: media.description || '',
+ editLink: '',
+ filename: media.file || '',
+ filesizeHumanReadable: '',
+ filesizeInBytes: '',
+ height: media.height,
+ icon: media.icon || '',
+ id: media.ID || '',
+ link: media.URL || '',
+ menuOrder: 0,
+ meta: false,
+ mime: media.mime_type || '',
+ modified: 0,
+ name: '',
+ nonces: { update: '', 'delete': '', edit: '' },
+ orientation: '',
+ sizes: undefined,
+ status: '',
+ subtype: mimeParts[1] || '',
+ title: media.title || '',
+ type: mimeParts[0] || '',
+ uploadedTo: 1,
+ uploadedToLink: '',
+ uploadedToTitle: '',
+ url: media.URL || '',
+ width: media.width,
+ success: '',
+ videopress: {
+ guid: media.videopress_guid || null,
+ processing_done: media.videopress_processing_done || false
+ }
+ };
+
+ response.data = data;
+
+ return response;
+ },
+
+ /**
+ * Make sure that all of the original variables have been reset, so the uploader
+ * doesn't try to go to VideoPress again next time.
+ *
+ * @param up
+ */
+ resetToOriginalOptions: function( up ) {
+ if ( typeof VideoPress.originalOptions.url !== 'undefined' ) {
+ up.setOption( 'url', VideoPress.originalOptions.url );
+ delete VideoPress.originalOptions.url;
+ }
+
+ if ( typeof VideoPress.originalOptions.multipart_params !== 'undefined' ) {
+ up.setOption( 'multipart_params', VideoPress.originalOptions.multipart_params );
+ delete VideoPress.originalOptions.multipart_params;
+ }
+
+ if ( typeof VideoPress.originalOptions.file_data_name !== 'undefined' ) {
+ up.setOption( 'file_data_name', VideoPress.originalOptions.file_data_name );
+ delete VideoPress.originalOptions.file_data_name;
+ }
+ }
+ };
+
+ if (typeof wp.Uploader !== 'undefined') {
+ var media = wp.media;
+
+ /**
+ * A plupload code specifically for videopress failures.
+ *
+ * @type {string}
+ */
+ plupload.VIDEOPRESS_TOKEN_FAILURE = 'VP_TOKEN_FAILURE';
+
+ /**
+ * Adds a filter that checks all files to see if they are videopress files and if they are
+ * it will download extra metadata for them.
+ */
+ plupload.addFileFilter( 'videopress_check_uploads', function( maxSize, file, cb ) {
+ var mimeParts = file.type.split('/');
+ var self = this;
+
+ if ( mimeParts[0] === 'video' ) {
+ media.ajax( 'videopress-get-upload-token', { async: false, data: { filename: file.name } } ).done( function ( response ) {
+ file.videopress = response;
+ cb( true );
+
+ }).fail( function ( response ) {
+ self.trigger( 'Error', {
+ code : plupload.VIDEOPRESS_TOKEN_FAILURE,
+ message : plupload.translate( 'Could not get the VideoPress token needed for uploading' ),
+ file : file,
+ response : response
+ } );
+ cb( false );
+ });
+
+ } else {
+ // Handles the normal max_file_size functionality.
+ var undef;
+
+ // Invalid file size
+ if (file.size !== undef && maxSize && file.size > maxSize) {
+ this.trigger('Error', {
+ code: plupload.FILE_SIZE_ERROR,
+ message: plupload.translate( 'File size error.' ),
+ file: file
+ });
+ cb(false);
+ } else {
+ cb(true);
+ }
+ }
+ });
+ }
+
+ wp.VideoPress = VideoPress;
+
+} )( window.wp );
+