using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Jellyfin.Plugin.JRay.Configuration; namespace Jellyfin.Plugin.JRay.Services.Interfaces; /// /// Fetches actor-timeline manifests from the configured public servers. /// /// /// Satisfies JRay-public-server UR-007: the plugin queries a configurable, /// ordered list of servers, and the first result clearing the configured /// match tier wins. /// // TRACES: JR-025 | PR-006 public interface IManifestExchangeClient { /// /// Fetches a movie manifest from the first server that has an acceptable one. /// /// The configured servers, in trust order. /// The lowest cut-match tier that may be stored. /// Identity and cut parameters for the local item. /// Cancellation token. /// The accepted manifest, or null when no server had one. Task FetchMovieAsync( IReadOnlyList servers, MatchTier minimumTier, TitleQuery query, CancellationToken cancellationToken); /// /// Fetches a single episode manifest. /// /// The configured servers, in trust order. /// The lowest cut-match tier that may be stored. /// Identity and cut parameters for the local item. /// Cancellation token. /// The accepted manifest, or null when no server had one. Task FetchEpisodeAsync( IReadOnlyList servers, MatchTier minimumTier, TitleQuery query, CancellationToken cancellationToken); /// /// Per-server reachability and last error, for the configuration page. /// /// The configured servers. /// One status entry per configured server. IReadOnlyList GetStatus(IReadOnlyList servers); }