using ErsatzTV.Infrastructure.Plex.Models; using Refit; namespace ErsatzTV.Infrastructure.Plex; public interface IPlexServerApi { [Get("/")] [Headers("Accept: text/xml")] Task Ping( [Query] [AliasAs("X-Plex-Token")] string token, CancellationToken cancellationToken); [Get("/library/sections")] [Headers("Accept: application/json")] 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")] Task GetLibrarySection( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/sections/{key}/all")] [Headers("Accept: application/json")] 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")] Task GetCollectionCount( [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/all?type=18")] [Headers("Accept: application/json")] 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")] Task GetCollectionItemsCount( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/collections/{key}/children")] [Headers("Accept: application/json")] 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")] Task GetTagsCount( int type, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/tags?type={type}")] [Headers("Accept: application/json")] 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")] Task CountTagContents( string key, [Query] [AliasAs("X-Plex-Token")] string token, [Query] NetworkFilter filter); [Get("/library/sections/{key}/all")] [Headers("Accept: application/json")] 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")] Task GetVideoMetadata( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}")] [Headers("Accept: text/xml")] 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")] Task CountShowChildren( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children")] [Headers("Accept: text/xml")] 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")] Task CountSeasonChildren( string key, [Query] [AliasAs("X-Plex-Token")] string token); [Get("/library/metadata/{key}/children")] [Headers("Accept: text/xml")] 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); [Get("/hubs/search")] [Headers("Accept: application/json")] Task>> Search( [Query] [AliasAs("query")] string searchTerm, [Query] [AliasAs("sectionId")] string sectionId, [Query] [AliasAs("X-Plex-Token")] string token); }