Fix issue with new SRF URL pattern

Resolves MS-927 #complete
This commit is contained in:
Ramon Wenger 2024-04-09 11:30:47 +02:00
parent 1594bb2b68
commit acaeae0cf7
2 changed files with 31 additions and 9 deletions

View File

@ -1,7 +1,12 @@
const YOUTUBE = /^(?:https:\/\/)?(?:www.)?(?:youtube.com\/watch\?v=|youtu.be\/)([a-zA-Z0-9_-]{11})(?:.+)?$/;
const VIMEO = /^(?:https:\/\/)?(?:www.)?vimeo.com\/([a-zA-Z0-9]*)$/;
// const SRF = /^(?:https:\/\/)?(?:www.)?srf.ch\/(?:[\w/-]*)[?&]id=([\w-]+)(?:[&\w=-]*)$/;
const SRF = /^(?:https:\/\/)?(?:www.)?srf.ch\/(?:[\w/-]*)[?&]id=([\w-]+)(?:[&\w=-]*)(?:&?startTime=([\d.]+))?/;
/*
* Handles URLs like
* - https://www.srf.ch/play/tv/popupvideoplayer?id=6db02b8b-975c-4e3e-8260-f1e6eca1d8ed
* - https://www.srf.ch/play/tv/we-myself--why/video/nein-sagen-so-klappt-es?urn=urn:srf:video:6db02b8b-975c-4e3e-8260-f1e6eca1d8e
*/
const SRF =
/^(?:https:\/\/)?(?:www.)?srf.ch\/(?:[\w/-]*)[?&](?:id=|urn=urn:srf:video:)([\w-]+)(?:[&\w=-]*)(?:&?startTime=([\d.]+))?/;
export function isYoutubeUrl(url: string) {
return YOUTUBE.test(url);

View File

@ -2,14 +2,31 @@ import { getVideoId } from '../../src/helpers/video';
import { mount } from '@vue/test-utils';
import SrfEmbed from '@/components/videos/SrfEmbed.vue';
const url = 'https://www.srf.ch/play/tv/popupvideoplayer?id=6db02b8b-975c-4e3e-8260-f1e6eca1d8ed';
const embedUrl =
'https://www.srf.ch/play/embed?urn=urn:srf:video:6db02b8b-975c-4e3e-8260-f1e6eca1d8ed&subdivisions=false';
describe('SRF Video Embed', () => {
describe('Legacy SRF Video Embed', () => {
const videoId = '6db02b8b-975c-4e3e-8260-f1e6eca1d8ed';
const url = `https://www.srf.ch/play/tv/popupvideoplayer?id=${videoId}`;
const embedUrl = `https://www.srf.ch/play/embed?urn=urn:srf:video:${videoId}&subdivisions=false`;
it('should return the correct embed url', () => {
const videoId = getVideoId(url);
const embedId = '6db02b8b-975c-4e3e-8260-f1e6eca1d8ed';
expect(videoId).toBe(embedId);
const extractedId = getVideoId(url);
expect(extractedId).toBe(videoId);
});
it('should construct the correct iframe', () => {
const props = {
url,
};
const wrapper = mount(SrfEmbed, {
props,
});
expect(wrapper.attributes('src')).toBe(embedUrl);
});
});
describe('New SRF Video Embed', () => {
const videoId = '6db02b8b-975c-4e3e-8260-f1e6eca1d8ed';
const url = `https://www.srf.ch/play/tv/we-myself--why/video/nein-sagen-so-klappt-es?urn=urn:srf:video:${videoId}`;
const embedUrl = `https://www.srf.ch/play/embed?urn=urn:srf:video:${videoId}&subdivisions=false`;
it('should return the correct embed url', () => {
const extractedId = getVideoId(embedUrl);
expect(extractedId).toBe(videoId);
});
it('should construct the correct iframe', () => {
const props = {