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 GetShowLibraryContents( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); Task> CountShowSeasons( PlexShow show, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable GetShowSeasons( PlexLibrary library, PlexShow show, PlexConnection connection, PlexServerAuthToken token); Task> CountSeasonEpisodes( PlexSeason season, 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>> GetEpisodeMetadataAndStatistics( int plexMediaSourceId, string key, PlexConnection connection, PlexServerAuthToken token); Task> GetLibraryItemCount( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); IAsyncEnumerable GetAllCollections( PlexConnection connection, PlexServerAuthToken token, CancellationToken cancellationToken); IAsyncEnumerable GetCollectionItems( PlexConnection connection, PlexServerAuthToken token, string key, CancellationToken cancellationToken); }