discourse/spec/lib/onebox/engine
Martin Brennan 2b04fbeb30
FIX: Use oEmbed for YouTube oneboxing (#35959)
We currently rely on Open Graph data to render YouTube oneboxes.
However, YouTube does not always give us a response with the Open Graph
data necessary, leading to empty preview HTML like this that shows
as a broken image in the composer:

```
<img src="" width="480" height="360" title=" - YouTube" style="aspect-ratio: 480 / 360;">
```

In addition, our old method of parsing YouTube script tags for JSON
which contains information for the video, introduced in

4d669d2b71,
seems to no longer work reliably, possibly due to changes in YouTube's
JS structure.

To fix this, we switch to using YouTube's oEmbed endpoint which gives us
all the metadata we need for oneboxes in JSON format, including title,
author,
thumbnail URL, and video dimensions. This approach is more robust and
less likely to break
due to changes in YouTube's page structure.

c.f.
https://meta.discourse.org/t/youtube-uris-fail-to-render-thumbnails-when-oneboxed/387673
2025-11-12 14:13:16 +10:00
..
allowlisted_generic_onebox_spec.rb FIX: Allow oneboxes with no description (#31518) 2025-02-26 13:16:51 +10:00
amazon_onebox_spec.rb FIX: correctly unescape title for amazon oneboxes (#33010) 2025-06-02 17:50:13 +05:30
animated_image_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
asciinema_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
audio_com_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
audio_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
audioboom_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
bandcamp_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
cloud_app_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
coub_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
discourse_topic_onebox_spec.rb FEATURE: Show more context in Discourse topic oneboxes 2023-01-11 14:22:53 +01:00
facebook_media_onebox_spec.rb SECURITY: Fix Stored-dom XSS via Facebook Oneboxes 2024-07-03 20:49:22 +08:00
five_hundred_px_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
flickr_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
flickr_shortened_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
gfycat_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
github_actions_onebox_spec.rb FEATURE: Allow for multiple GitHub onebox tokens (#27887) 2024-07-15 13:07:36 +10:00
github_blob_onebox_spec.rb FEATURE: Allow for multiple GitHub onebox tokens (#27887) 2024-07-15 13:07:36 +10:00
github_commit_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
github_folder_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
github_gist_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
github_issue_onebox_spec.rb DEV: discourse-emojis gem (#31408) 2025-03-03 13:09:08 +01:00
github_pull_request_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
github_repo_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
gitlab_blob_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
google_calendar_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
google_docs_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
google_drive_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
google_maps_onebox_spec.rb DEV: Fix various rubocop lints (#24749) 2023-12-06 23:25:00 +01:00
google_photos_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
google_play_app_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
hackernews_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
html_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
image_onebox_spec.rb FEATURE: Onebox and Download for WEBP and AVIF (#23235) 2023-08-24 16:44:06 -03:00
imgur_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
instagram_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
json_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
kaltura_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
loom_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
mixcloud_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
motoko_onebox_spec.rb FIX: Update "Embed Motoko" Onebox URLs (#22198) 2023-07-26 09:41:01 +08:00
pastebin_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
pdf_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
pubmed_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
reddit_media_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
replit_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
simplecast_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
sketch_fab_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
slides_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
soundcloud_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
spotify_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
stack_exchange_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
standard_embed_spec.rb SECURITY: Prevent Onebox cache overflow by limiting downloads and URL lengths 2023-11-09 13:39:18 +11:00
steam_store_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
threads_status_onebox_spec.rb FEATURE: Basic support for threads.net onebox (#22471) 2023-07-06 16:02:49 -03:00
tiktok_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
trello_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
twitch_clips_onebox_spec.rb FEATURE: Handle newer url format for Twitch clips (#31080) 2025-01-31 10:42:46 -03:00
twitch_stream_onebox_spec.rb Fix tests 2023-05-15 16:45:33 +02:00
twitch_video_onebox_spec.rb Fix tests 2023-05-15 16:45:33 +02:00
twitter_status_onebox_spec.rb DEV: Add spec for x.com onebox url matcher (#27214) 2024-05-28 09:04:20 -03:00
typeform_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
video_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
vimeo_onebox_spec.rb SECURITY: Restrict allowed URL patterns 2025-02-04 13:32:34 -03:00
wikimedia_onebox_spec.rb DEV: Use thumbnail url for wikimedia onebox image (#22620) 2023-07-14 12:20:18 -06:00
wikipedia_onebox_spec.rb FIX: Wikipedia onebox images and sections (#31384) 2025-02-19 14:29:17 +10:00
wistia_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
xkcd_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
youku_onebox_spec.rb DEV: Apply syntax_tree formatting to spec/* 2023-01-09 11:49:28 +00:00
youtube_onebox_spec.rb FIX: Use oEmbed for YouTube oneboxing (#35959) 2025-11-12 14:13:16 +10:00