using ErsatzTV.Core.Domain; using ErsatzTV.Core.Plex; namespace ErsatzTV.Core.Interfaces.Plex; public interface IPlexServerApiClient { Task Ping( PlexConnection connection, PlexServerAuthToken token); Task>> GetLibraries( PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetMovieLibraryContents( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetOtherVideoLibraryContents( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetShowLibraryContents( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetShowSeasons( PlexLibrary library, PlexShow show, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetSeasonEpisodes( PlexLibrary library, PlexSeason season, PlexConnection connection, PlexServerAuthToken token); Task> GetShowMetadata( PlexLibrary library, string key, PlexConnection connection, PlexServerAuthToken token); Task>> GetMovieMetadataAndStatistics( int plexMediaSourceId, string key, PlexConnection connection, PlexServerAuthToken token); Task>> GetOtherVideoMetadataAndStatistics( int plexMediaSourceId, string key, PlexConnection connection, PlexServerAuthToken token, PlexLibrary library); Task>> GetEpisodeMetadataAndStatistics( int plexMediaSourceId, string key, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable> GetAllCollections( PlexConnection connection, PlexServerAuthToken token, CancellationToken cancellationToken); IAsyncEnumerable> GetCollectionItems( PlexConnection connection, PlexServerAuthToken token, string key, CancellationToken cancellationToken); }