using System.Collections.Specialized; using ErsatzTV.Infrastructure.Plex.Models; using Refit; using CollectionFormat = Refit.CollectionFormat; namespace ErsatzTV.Infrastructure.Plex; public interface IPlexServerApi { [Get("/")] [Headers("Accept: text/xml")] public Task Ping( [Query] [AliasAs("X-Plex-Token")] string token, CancellationToken cancellationToken); [Get("/library/sections")] [Headers("Accept: application/json")] public Task>> GetLibraries( [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/sections/{key}/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task GetLibrarySection( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/sections/{key}/all")] [Headers("Accept: application/json")] public Task>> GetLibrarySectionContents( string key, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/all?type=18&X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task GetCollectionCount( [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/all?type=18")] [Headers("Accept: application/json")] public Task>> GetCollections( [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/collections/{key}/children?X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task GetCollectionItemsCount( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/collections/{key}/children")] [Headers("Accept: application/json")] public Task>> GetCollectionItems( string key, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/tags?type={type}&X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task GetTagsCount( int type, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/tags?type={type}")] [Headers("Accept: application/json")] public Task>> GetTags( int type, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/sections/{key}/all?X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task CountTagContents( string key, [Query] [AliasAs("X-Plex-Token")] string token, [Query] NetworkFilter filter); [Get("/library/sections/{key}/all")] [Headers("Accept: application/json")] public Task>> GetTagContents( string key, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token, [Query] NetworkFilter filter); [Get("/library/metadata/{key}?includeChapters=1")] [Headers("Accept: text/xml")] public Task GetVideoMetadata( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}")] [Headers("Accept: text/xml")] public Task GetDirectoryMetadata( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children?X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task CountShowChildren( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children")] [Headers("Accept: text/xml")] public Task GetShowChildren( string key, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children?X-Plex-Container-Start=0&X-Plex-Container-Size=0")] [Headers("Accept: text/xml")] public Task CountSeasonChildren( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children")] [Headers("Accept: text/xml")] public Task GetSeasonChildren( string key, [Query] [AliasAs("X-Plex-Container-Start")] int skip, [Query] [AliasAs("X-Plex-Container-Size")] int take, [Query] [AliasAs("X-Plex-Token")] string token); }