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( PlexLibrary library, string key, PlexConnection connection, PlexServerAuthToken token); Task>> GetEpisodeMetadataAndStatistics( PlexLibrary library, string key, PlexConnection connection, PlexServerAuthToken token); Task> GetLibraryItemCount( PlexLibrary library, PlexConnection connection, PlexServerAuthToken token); }