PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.7
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.7
16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / videopress / js / gutenberg-video-upload.js
jetpack / modules / videopress / js Last commit date
editor-view.js 7 months ago gutenberg-video-upload.js 4 months ago media-video-widget-extensions.js 5 years ago videopress-add-resumable-upload-support.js 4 years ago videopress-plupload.js 6 months ago videopress-uploader.js 7 months ago
gutenberg-video-upload.js
220 lines
1 window.videoPressUploadPoster = function ( guid, data ) {
2 return new Promise( function ( resolve, reject ) {
3 wp.media.ajax( 'videopress-get-upload-token', { async: true } ).done( function ( response ) {
4 // Set auth header with upload token.
5 var headers = {},
6 options = {};
7 var body = new FormData();
8 headers.Authorization =
9 'X_UPLOAD_TOKEN token="' +
10 response.upload_token +
11 '" blog_id="' +
12 response.upload_blog_id +
13 '"';
14 options.headers = headers;
15 options.method = 'POST';
16 options.url = 'https://public-api.wordpress.com/rest/v1.1/videos/' + guid + '/poster';
17
18 // Handle CORS.
19 options.credentials = 'omit';
20
21 Object.keys( data ).forEach( key => {
22 body.append( key, data[ key ] );
23 } );
24
25 options.body = body;
26
27 wp.apiFetch( options )
28 .then( function ( res ) {
29 resolve( res );
30 } )
31 .catch( function ( error ) {
32 reject( error );
33 } );
34 } );
35 } );
36 };
37
38 window.videoPressGetPoster = function ( guid ) {
39 const getPosterRequest = ( resolve, reject, jwt = null ) => {
40 let url = 'https://public-api.wordpress.com/rest/v1.1/videos/' + guid + '/poster';
41 if ( jwt && jwt.length ) {
42 url += '?metadata_token=' + jwt;
43 }
44
45 wp.apiFetch( {
46 url: url,
47 method: 'GET',
48 credentials: 'omit',
49 } )
50 .then( function ( res ) {
51 resolve( res );
52 } )
53 .catch( function ( error ) {
54 reject( error );
55 } );
56 };
57
58 return new Promise( function ( resolve, reject ) {
59 wp.ajax
60 .post( 'videopress-get-playback-jwt', {
61 async: true,
62 guid: guid,
63 } )
64 .done( function ( response ) {
65 getPosterRequest( resolve, reject, response.jwt );
66 } )
67 .fail( () => {
68 // Also try on ajax failure if the video doesn't need a jwt anyway
69 getPosterRequest( resolve, reject );
70 } );
71 } );
72 };
73
74 window.videoPressUploadTrack = function ( guid, kind, srcLang, label, tmpFile ) {
75 return new Promise( function ( resolve, reject ) {
76 wp.media
77 .ajax( 'videopress-get-upload-token', { async: true, data: { filename: tmpFile.name } } ) // todo: maybe remove filename from here (not needed)
78 .done( function ( response ) {
79 // Set auth header with upload token.
80 var headers = {},
81 options = {};
82 var body = new FormData();
83 headers.Authorization =
84 'X_UPLOAD_TOKEN token="' +
85 response.upload_token +
86 '" blog_id="' +
87 response.upload_blog_id +
88 '"';
89 options.headers = headers;
90 options.method = 'POST';
91 options.url = 'https://public-api.wordpress.com/rest/v1.1/videos/' + guid + '/tracks';
92
93 // Handle CORS.
94 options.credentials = 'omit';
95
96 body.append( 'kind', kind );
97 body.append( 'srclang', srcLang );
98 body.append( 'label', label );
99 body.append( 'vtt', tmpFile );
100
101 options.body = body;
102
103 wp.apiFetch( options )
104 .then( function ( res ) {
105 resolve( res );
106 } )
107 .catch( function ( error ) {
108 reject( error );
109 } );
110 } );
111 } );
112 };
113
114 window.videoPressDeleteTrack = function ( guid, kind, srcLang ) {
115 return new Promise( function ( resolve, reject ) {
116 wp.media.ajax( 'videopress-get-upload-token', { async: true } ).done( function ( response ) {
117 // Set auth header with upload token.
118 var headers = {},
119 options = {};
120 var body = new FormData();
121 headers.Authorization =
122 'X_UPLOAD_TOKEN token="' +
123 response.upload_token +
124 '" blog_id="' +
125 response.upload_blog_id +
126 '"';
127 options.headers = headers;
128 options.method = 'POST';
129 options.url = 'https://public-api.wordpress.com/rest/v1.1/videos/' + guid + '/tracks/delete';
130
131 // Handle CORS.
132 options.credentials = 'omit';
133
134 body.append( 'kind', kind );
135 body.append( 'srclang', srcLang );
136 options.body = body;
137
138 wp.apiFetch( options )
139 .then( function ( res ) {
140 resolve( res );
141 } )
142 .catch( function ( error ) {
143 reject( error );
144 } );
145 } );
146 } );
147 };
148
149 wp.apiFetch.use( function ( options, next ) {
150 var path = options.path;
151 var method = options.method;
152 var body = options.body;
153
154 // Override only requests to the WP REST API media endpoint uploading new videos.
155 if ( ! path || path.indexOf( '/wp/v2/media' ) === -1 ) {
156 return next( options );
157 }
158 if ( ! method || 'post' !== method.toLowerCase() ) {
159 return next( options );
160 }
161 var file = body ? body.get( 'file' ) : null;
162 if ( ! file || file.type.indexOf( 'video/' ) !== 0 ) {
163 return next( options );
164 }
165
166 // Get upload token.
167 wp.media
168 .ajax( 'videopress-get-upload-token', { async: false, data: { filename: file.name } } )
169 .done( function ( response ) {
170 // Set auth header with upload token.
171 var headers = options.headers || {};
172 headers.Authorization =
173 'X_UPLOAD_TOKEN token="' +
174 response.upload_token +
175 '" blog_id="' +
176 response.upload_blog_id +
177 '"';
178 options.headers = headers;
179
180 // Replace upload URL.
181 delete options.path;
182 options.url = response.upload_action_url;
183
184 // Handle CORS.
185 options.credentials = 'omit';
186
187 // Set data in expected param by WP.com media endpoint.
188 body.set( 'media[]', file );
189 body.delete( 'file' );
190 options.body = body;
191 } );
192
193 var result = next( options );
194
195 return new Promise( function ( resolve, reject ) {
196 result
197 .then( function ( response ) {
198 if ( response instanceof Response && response.ok ) {
199 return response.json();
200 }
201
202 return response; // if not a response object, then its our parsed body so return that
203 } )
204 .then( function ( data ) {
205 var wpcomMediaObject = data?.media?.[ 0 ];
206 var id = wpcomMediaObject?.ID;
207 var gutenbergMediaObject = wp.apiFetch( {
208 path: '/wp/v2/media/' + id,
209 } );
210 resolve( gutenbergMediaObject );
211 } )
212 .catch( function ( error ) {
213 if ( 'errors' in error && 'object' === typeof error.errors && error.errors.length > 0 ) {
214 error = error.errors.shift();
215 }
216 reject( error );
217 } );
218 } );
219 } );
220