Overview
When a user includes a URL from an oEmbed-enabled provider, fetch that oEmbed data and render it in the post instead of the plain URL.
Background
This enables easy embedding of all types of content (see subtasks for some).
Implementation
On publish:
- Check plain URLs against a list of providers.
- If the URL matches one, fetch that data (ideally asynchronously, before the user publishes - TODO: create task)
- Cache that data locally in a new oEmbed database table
- Retain a cached version for some small amount of time
On post rendering:
- Check plain URLs against a list of providers
- If the URL matches one, look it up in the oEmbed table
- Serve the content from the database
- If the cached data is expired, fetch it in the background (for the next visitor to see)