Skip to content

Document playbackUrlSchemes/playbackUrlHosts in the plugin API docs - #216

Open
kineticman wants to merge 1 commit into
Davidona:masterfrom
kineticman:docs/document-playback-url-routing
Open

Document playbackUrlSchemes/playbackUrlHosts in the plugin API docs#216
kineticman wants to merge 1 commit into
Davidona:masterfrom
kineticman:docs/document-playback-url-routing

Conversation

@kineticman

Copy link
Copy Markdown

Problem

StreamVaultPluginManifest.playbackUrlSchemes / playbackUrlHosts (added in 082a94bf) control whether MSG_PREPARE_PLAYBACK / MSG_REWRITE_CAST_URL are ever sent to a plugin — playbackCandidates() / ownsPlaybackUrl() in PluginPlaybackRouting.kt treat an absent/empty list as owning no URLs, not a wildcard. docs/PLUGIN_API.md never mentions either field, so a plugin author following the published docs has no way to know this is required, and their playback.prepare/cast.rewriteUrl capability will silently never fire even though it's advertised and otherwise correctly implemented.

Ran into this concretely with a third-party plugin (StreamVault Adaptive Bridge) that advertises playback.prepare, correctly implements MSG_PREPARE_PLAYBACK, and proxies channels through its own local http://127.0.0.1:<port>/play/{id} server — but never declared playbackUrlSchemes/playbackUrlHosts, so playback always fell through to StreamVault's generic extractors instead. Filed the corresponding fix against that plugin: jopsis/StreamVault-IPTV-Plugin-Adaptive-Bridge#4.

Change

  • Added playbackUrlSchemes / playbackUrlHosts to the example manifest JSON.
  • Added a new section explaining the field, that it's a wildcard-free allowlist (with "*" as an explicit opt-in), that it's a separate/earlier filter than the per-call handled field, and that it's only readable from manifest_json (no individual fallback meta-data key exists for it).
  • Clarified the existing handled=false paragraph to note that manifest-level routing narrows the candidate set first.

Docs-only change, no app code touched.

These fields were added to StreamVaultPluginManifest and are required
for StreamVault to ever invoke MSG_PREPARE_PLAYBACK or
MSG_REWRITE_CAST_URL on a plugin, but were never documented. A plugin
advertising playback.prepare or cast.rewriteUrl without declaring
these fields silently never receives those messages, since absent
routing metadata is treated as owning no URLs rather than a wildcard.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant