summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/videopress/js/videopress-token-bridge.js')
-rw-r--r--plugins/jetpack/modules/videopress/js/videopress-token-bridge.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/videopress/js/videopress-token-bridge.js b/plugins/jetpack/modules/videopress/js/videopress-token-bridge.js
new file mode 100644
index 00000000..75b763c0
--- /dev/null
+++ b/plugins/jetpack/modules/videopress/js/videopress-token-bridge.js
@@ -0,0 +1,54 @@
+( function () {
+ window.addEventListener( 'message', function ( event ) {
+ var allowed_origins = [ 'https://videopress.com', 'https://video.wordpress.com' ];
+ if ( -1 === allowed_origins.indexOf( event.origin ) ) {
+ return;
+ }
+
+ if ( event.data.event !== 'videopress_token_request' ) {
+ return;
+ }
+
+ if ( ! window.videopressAjax ) {
+ return;
+ }
+
+ var fetchData = {
+ action: 'videopress-get-playback-jwt',
+ guid: event.data.guid,
+ post_id: window.videopressAjax.post_id || 0,
+ };
+
+ fetch( window.videopressAjax.ajaxUrl, {
+ method: 'POST',
+ credentials: 'same-origin',
+ body: new URLSearchParams( fetchData ),
+ } )
+ .then( function ( response ) {
+ if ( response.ok ) {
+ return response.json();
+ }
+ throw Error( 'Response is not ok' );
+ } )
+ .then( function ( jsonResponse ) {
+ if ( !! jsonResponse.success && jsonResponse.data ) {
+ event.source.postMessage(
+ {
+ event: 'videopress_token_received',
+ guid: fetchData.guid,
+ jwt: jsonResponse.data.jwt,
+ },
+ '*'
+ );
+ } else {
+ event.source.postMessage(
+ {
+ event: 'videopress_token_error',
+ guid: fetchData.guid,
+ },
+ '*'
+ );
+ }
+ } );
+ } );
+} )();