mirror of
https://codeberg.org/keyoxide/doipjs.git
synced 2025-04-22 22:31:32 -06:00
Added support for m.youtube.com, youtube.com and youtu.be; Added support for additional query parameters; Added more unit tests;
This commit is contained in:
parent
be7523333f
commit
db22a6095a
1 changed files with 113 additions and 2 deletions
|
@ -24,7 +24,7 @@ limitations under the License.
|
|||
import * as E from '../enums.js'
|
||||
import { ServiceProvider } from '../serviceProvider.js'
|
||||
|
||||
export const reURI = /https:\/\/www\.youtube\.com\/watch\?v=[a-zA-Z0-9_-]{11}/
|
||||
export const reURI = /^https:\/\/(?:(?:(?:www\.|m\.)?youtube\.com\/watch\?(?:(?!v=)[^&]+&)*v=)|(?:youtu\.be\/(?:watch\?(?:(?!v=)[^&]+&)*v=|)))?([a-zA-Z0-9_-]{11})(?:[&?].*)?$/
|
||||
|
||||
/**
|
||||
* @function
|
||||
|
@ -55,7 +55,7 @@ export function processURI (uri) {
|
|||
fetcher: E.Fetcher.HTTP,
|
||||
accessRestriction: E.ProofAccessRestriction.NOCORS,
|
||||
data: {
|
||||
url: `https://www.youtube.com/oembed?url=${match[0]}`,
|
||||
url: `https://www.youtube.com/oembed?url=${encodeURIComponent(`https://www.youtube.com/watch?v=${match[1]}`)}`,
|
||||
format: E.ProofFormat.JSON
|
||||
}
|
||||
},
|
||||
|
@ -84,16 +84,127 @@ export const functions = {
|
|||
}
|
||||
|
||||
export const tests = [
|
||||
// Full URLs (valid)
|
||||
{
|
||||
uri: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/watch?v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/watch?v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
|
||||
// Invalid video ID (invalid)
|
||||
{
|
||||
uri: 'https://www.youtube.com/watch?v=invalid_video_id',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/watch?v=invalid_video_id',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/watch?v=invalid_video_id',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://youtu.be/invalid_video_id',
|
||||
shouldMatch: false
|
||||
},
|
||||
|
||||
// Full URL with no `/watch` (invalid)
|
||||
{
|
||||
uri: 'https://www.youtube.com/dQw4w9WgXcQ',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/dQw4w9WgXcQ',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/dQw4w9WgXcQ',
|
||||
shouldMatch: false
|
||||
},
|
||||
|
||||
// Full URL with playlist (valid)
|
||||
{
|
||||
uri: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/watch?v=dQw4w9WgXcQ&list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/watch?v=dQw4w9WgXcQ&list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://www.youtube.com/watch?list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv&v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/watch?list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv&v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/watch?list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv&v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
|
||||
// Short URL (valid)
|
||||
{
|
||||
uri: 'https://youtu.be/dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
|
||||
// Short URL with `/watch` (valid)
|
||||
{
|
||||
uri: 'https://youtu.be/watch?v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://youtu.be/watch?v=dQw4w9WgXcQ&list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv',
|
||||
shouldMatch: true
|
||||
},
|
||||
{
|
||||
uri: 'https://youtu.be/watch?list=PLFPk5ONFpYvWsnAYJqm6Li4qtg367uUbv&v=dQw4w9WgXcQ',
|
||||
shouldMatch: true
|
||||
},
|
||||
|
||||
// Base URLs (invalid)
|
||||
{
|
||||
uri: 'https://youtu.be/',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://www.youtube.com',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com',
|
||||
shouldMatch: false
|
||||
},
|
||||
|
||||
// Empty video ID (invalid)
|
||||
{
|
||||
uri: 'https://www.youtube.com/watch?v=',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://youtube.com/watch?v=',
|
||||
shouldMatch: false
|
||||
},
|
||||
{
|
||||
uri: 'https://m.youtube.com/watch?v=',
|
||||
shouldMatch: false
|
||||
}
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue