Architectural shape
Simplified sequence diagram showing the architectural flow of an OMSS Core get sources request.The different components
OMSSServer
OMSSServer
Is the central runtime object. It holds shared state, coordinates lifecycle events, and exposes the public API for backend authors to register providers, resolvers, extractors, and other
capabilities.
Plugins
Plugins
Allow cross-cutting capabilities to be added to the runtime. For example, a plugin could add HTTP transport, caching, authentication and other features that are not part of the core runtime.
Plugins can also register hooks, providers, resolvers, and extractors.
Hooks
Hooks
Are a way for different parts of the system to observe and react to lifecycle events. Hooks allow another component to listen in on different phases of the runtime without requiring direct
coupling to the core or other components.
Providers
Providers
Are the parts of the system that produce sources and subtitles from an upstream service/system. Providers are registered with the runtime and cannot be called directly by the core. Instead,
they are invoked through the source pipeline.
Resolvers
Resolvers
Are responsible for turning OMSS IDs into structured metadata that can be used by providers. For example, a resolver could take a TMDB ID and return the title, year, and other relevant
information needed to query a provider. Providers have to specify which resolvers they require, and the source pipeline will ensure that those resolvers are called before the provider is
executed.
Extractors
Extractors
Can be called by different providers to get media from an overlaping upstream system. For example, provider A and provider B found a link that belongs to Upstream System X. Instead of each
provider implementing the logic to extract the media from Upstream System X, they can both call an extractor that is registered with the runtime to handle that specific upstream system.
Source pipeline
Source pipeline
Is the heart of the runtime. It coordinates the flow of data from the initial request to the final response. It handles calling resolvers, executing providers, and aggregating results into a
final response.
OMSSServer class. Its job is to hold the system together. That includes maintaining shared state and expose different APIs for different features.