iframely
Version:
oEmbed/2 gateway endpoint. Get embed data for various http links through one self-hosted API
53 lines (38 loc) • 2.23 kB
JavaScript
export default {
provides: '__promoUri',
getData: function(video_src, meta) {
// do not process brightcove's custom domains - it's covered by record through oembed endpoint
if (/^brightcove$/i.test(meta.generator)) {return;}
var urlMatch = video_src.match(/^https?:\/\/link\.brightcove\.(?:com|co\.jp)\/services\/player\/bcpid(\d+)\/?\?/i);
if (urlMatch) {
return {
__promoUri: video_src
};
}
urlMatch = video_src.match(/^https?:\/\/players\.brightcove\.net\/(\d+)\/([a-zA-Z0-9\-_]+|default)_default\/index.html\?videoId=([a-zA-Z0-9\-:]+)/i)
|| video_src.match(/^https?:\/\/bcove\.me\/[a-zA-Z0-9]+/i)
|| video_src.match(/^https?:\/\/players\.brightcove\.net\/pages\/v\d\/index\.html\?/i);
if (urlMatch) {
return {
__promoUri: video_src.replace(/&width=[^&]+/, '').replace(/&height=[^&]+/, '') // ex. for broken width/height: cricket.com.au
};
}
if (/^https?:\/\/(?:c|secure)\.brightcove\.(?:com|co\.jp)\/services\/viewer\/federated_f9\/?/i.test(video_src)) {
var playerID = video_src.match(/playerID=([^&]+)/i);
if (!playerID) {
playerID = video_src.match(/federated_f9\/(\d+)\?/i);
}
var videoID = video_src.match(/video(?:ID|Player)?=([^&]+)/i); // some have `Id` for some reason
if (playerID && videoID) {
return {
__promoUri: "http://link.brightcove." + (/\.co\.jp/.test(video_src) ? 'co.jp' : 'com')+ "/services/player/bcpid" + playerID[1] + "?bctid=" + videoID[1]
};
}
}
}
/* Sample URLs for hosted Brightcove video galleries
http://video.massachusetts.edu/detail/videos/here-for-a-reason/video/4767578288001/transform?autoStart=true
http://oncologyvu.brightcovegallery.com/detail/videos/treatment-methods/video/3880531728001/importance-of-the-nurse-patient-relationship?autoStart=true
http://video.brightcovelearning.com/detail/videos/managing-players/video/4805928382001/styling-players?autoStart=true
*/
};