using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Notifications;
using MediaBrowser.Model.Playlists;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Search;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Session;
using MediaBrowser.Model.Sync;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Users;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Model.ApiClient
{
///
/// Interface IApiClient
///
public interface IApiClient : IServerEvents, IDisposable
{
///
/// Occurs when [remote logged out].
///
event EventHandler> RemoteLoggedOut;
///
/// Occurs when [authenticated].
///
event EventHandler> Authenticated;
///
/// Gets the API URL.
///
/// The handler.
/// System.String.
string GetApiUrl(string handler);
///
/// Gets the game system summaries async.
///
/// The cancellation token.
/// Task{List{GameSystemSummary}}.
Task> GetGameSystemSummariesAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the async.
///
///
/// The URL.
/// The cancellation token.
/// Task{``0}.
Task GetAsync(string url, CancellationToken cancellationToken = default(CancellationToken))
where T : class;
///
/// Reports the capabilities.
///
/// The capabilities.
/// The cancellation token.
/// Task.
Task ReportCapabilities(ClientCapabilities capabilities, CancellationToken cancellationToken = default(CancellationToken));
///
/// Logouts this instance.
///
/// Task.
Task Logout();
///
/// Gets the index of the game players.
///
/// The user id.
/// The cancellation token.
/// Task{List{ItemIndex}}.
Task> GetGamePlayerIndex(string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the index of the year.
///
/// The user id.
/// The include item types.
/// The cancellation token.
/// Task{List{ItemIndex}}.
Task> GetYearIndex(string userId, string[] includeItemTypes, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the critic reviews.
///
/// The item id.
/// The cancellation token.
/// The start index.
/// The limit.
/// Task{ItemReviewsResult}.
Task> GetCriticReviews(string itemId, CancellationToken cancellationToken = default(CancellationToken), int? startIndex = null, int? limit = null);
///
/// Gets the theme songs async.
///
/// The user id.
/// The item id.
/// if set to true [inherit from parents].
/// The cancellation token.
/// Task{ThemeMediaResult}.
Task GetThemeSongsAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the search hints async.
///
/// The query.
/// Task{SearchHintResult}.
Task GetSearchHintsAsync(SearchQuery query);
///
/// Gets the filters.
///
/// The user identifier.
/// The parent identifier.
/// The media types.
/// The item types.
/// Task<QueryFilters>.
Task GetFilters(string userId, string parentId, string[] mediaTypes, string[] itemTypes);
///
/// Gets the theme videos async.
///
/// The user id.
/// The item id.
/// if set to true [inherit from parents].
/// The cancellation token.
/// Task{ThemeMediaResult}.
Task GetThemeVideosAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets all theme media async.
///
/// The user id.
/// The item id.
/// if set to true [inherit from parents].
/// The cancellation token.
/// Task{AllThemeMediaResult}.
Task GetAllThemeMediaAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
///
/// Marks the notifications read.
///
/// The user id.
/// The notification id list.
/// if set to true [is read].
/// Task.
Task MarkNotificationsRead(string userId, IEnumerable notificationIdList, bool isRead);
///
/// Gets the notifications summary.
///
/// The user id.
/// Task{NotificationsSummary}.
Task GetNotificationsSummary(string userId);
///
/// Gets the notifications async.
///
/// The query.
/// Task{NotificationResult}.
Task GetNotificationsAsync(NotificationQuery query);
///
/// Gets an image stream based on a url
///
/// The URL.
/// The cancellation token.
/// Task{Stream}.
/// url
Task GetImageStreamAsync(string url, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the stream.
///
/// The URL.
/// The cancellation token.
/// Task<Stream>.
Task GetStream(string url, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the response.
///
/// The URL.
/// The cancellation token.
/// Task<HttpResponse>.
Task GetResponse(string url, CancellationToken cancellationToken = default(CancellationToken));
///
/// Updates the user configuration.
///
/// The user identifier.
/// The configuration.
/// Task.
Task UpdateUserConfiguration(string userId, UserConfiguration configuration);
///
/// Gets a BaseItem
///
/// The id.
/// The user id.
/// Task{BaseItemDto}.
/// id
Task GetItemAsync(string id, string userId);
///
/// Gets the latest items.
///
/// The query.
/// Task<QueryResult<BaseItemDto>>.
Task GetLatestItems(LatestItemsQuery query);
///
/// Gets the intros async.
///
/// The item id.
/// The user id.
/// Task{ItemsResult}.
Task GetIntrosAsync(string itemId, string userId);
///
/// Gets a BaseItem
///
/// The user id.
/// Task{BaseItemDto}.
/// userId
Task GetRootFolderAsync(string userId);
///
/// Gets the additional parts.
///
/// The item identifier.
/// The user identifier.
/// Task{BaseItemDto[]}.
Task GetAdditionalParts(string itemId, string userId);
///
/// Gets the live media information.
///
/// The item identifier.
/// The user identifier.
/// Task<LiveMediaInfoResult>.
Task GetLiveMediaInfo(string itemId, string userId);
///
/// Gets the users async.
///
/// The query.
/// Task{UserDto[]}.
Task GetUsersAsync(UserQuery query);
///
/// Gets the public users async.
///
/// The cancellation token.
/// Task{UserDto[]}.
Task GetPublicUsersAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets active client sessions.
///
/// The query.
/// Task{SessionInfoDto[]}.
Task GetClientSessionsAsync(SessionQuery query);
///
/// Gets the client session asynchronous.
///
/// Task{SessionInfoDto}.
Task GetCurrentSessionAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the item counts async.
///
/// The query.
/// Task{ItemCounts}.
Task GetItemCountsAsync(ItemCountsQuery query);
///
/// Gets the episodes asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetEpisodesAsync(EpisodeQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the seasons asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSeasonsAsync(SeasonQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Queries for items
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
/// query
Task GetItemsAsync(ItemQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the user views.
///
/// The user identifier.
/// The cancellation token.
/// Task<ItemsResult>.
Task GetUserViews(string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the instant mix from song async.
///
/// The query.
/// Task{ItemsResult}.
Task GetInstantMixFromSongAsync(SimilarItemsQuery query);
///
/// Gets the instant mix from album async.
///
/// The query.
/// Task{ItemsResult}.
Task GetInstantMixFromAlbumAsync(SimilarItemsQuery query);
///
/// Gets the instant mix from artist async.
///
/// The query.
/// Task{ItemsResult}.
Task GetInstantMixFromArtistAsync(SimilarItemsByNameQuery query);
///
/// Gets the instant mix from music genre async.
///
/// The query.
/// Task{ItemsResult}.
Task GetInstantMixFromMusicGenreAsync(SimilarItemsByNameQuery query);
///
/// Gets the similar movies async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSimilarMoviesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the similar trailers async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSimilarTrailersAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the similar series async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSimilarSeriesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the similar albums async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSimilarAlbumsAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the similar games async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetSimilarGamesAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the people async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
/// userId
Task GetPeopleAsync(PersonsQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the artists.
///
/// The query.
/// Task{ItemsResult}.
/// userId
Task GetArtistsAsync(ArtistsQuery query);
///
/// Gets the album artists asynchronous.
///
/// The query.
/// Task{ItemsResult}.
Task GetAlbumArtistsAsync(ArtistsQuery query);
///
/// Gets a studio
///
/// The name.
/// The user id.
/// Task{BaseItemDto}.
/// userId
Task GetStudioAsync(string name, string userId);
///
/// Gets the next up async.
///
/// The query.
/// The cancellation token.
/// Task{ItemsResult}.
Task GetNextUpEpisodesAsync(NextUpQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the upcoming episodes asynchronous.
///
/// The query.
/// Task{ItemsResult}.
Task GetUpcomingEpisodesAsync(UpcomingEpisodesQuery query);
///
/// Gets a genre
///
/// The name.
/// The user id.
/// Task{BaseItemDto}.
/// userId
Task GetGenreAsync(string name, string userId);
///
/// Gets the genres async.
///
/// The query.
/// Task{ItemsResult}.
Task GetGenresAsync(ItemsByNameQuery query);
///
/// Gets the music genres async.
///
/// The query.
/// Task{ItemsResult}.
Task GetMusicGenresAsync(ItemsByNameQuery query);
///
/// Gets the game genres async.
///
/// The query.
/// Task{ItemsResult}.
Task GetGameGenresAsync(ItemsByNameQuery query);
///
/// Gets the studios async.
///
/// The query.
/// Task{ItemsResult}.
Task GetStudiosAsync(ItemsByNameQuery query);
///
/// Gets the music genre async.
///
/// The name.
/// The user id.
/// Task{BaseItemDto}.
Task GetMusicGenreAsync(string name, string userId);
///
/// Gets the game genre async.
///
/// The name.
/// The user id.
/// Task{BaseItemDto}.
Task GetGameGenreAsync(string name, string userId);
///
/// Gets the artist async.
///
/// The name.
/// The user id.
/// Task{BaseItemDto}.
/// name
Task GetArtistAsync(string name, string userId);
///
/// Restarts the server.
///
/// Task.
Task RestartServerAsync();
///
/// Gets the system status async.
///
/// The cancellation token.
/// Task{SystemInfo}.
Task GetSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the public system information asynchronous.
///
/// The cancellation token.
/// Task<PublicSystemInfo>.
Task GetPublicSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets a list of plugins installed on the server
///
/// Task{PluginInfo[]}.
Task GetInstalledPluginsAsync();
///
/// Gets the current server configuration
///
/// Task{ServerConfiguration}.
Task GetServerConfigurationAsync();
///
/// Gets the scheduled tasks.
///
/// Task{TaskInfo[]}.
Task GetScheduledTasksAsync();
///
/// Gets the scheduled task async.
///
/// The id.
/// Task{TaskInfo}.
/// id
Task GetScheduledTaskAsync(string id);
///
/// Gets a user by id
///
/// The id.
/// Task{UserDto}.
/// id
Task GetUserAsync(string id);
///
/// Gets the parental ratings async.
///
/// Task{List{ParentalRating}}.
Task> GetParentalRatingsAsync();
///
/// Gets local trailers for an item
///
/// The user id.
/// The item id.
/// Task{ItemsResult}.
/// query
Task GetLocalTrailersAsync(string userId, string itemId);
///
/// Gets special features for an item
///
/// The user id.
/// The item id.
/// Task{BaseItemDto[]}.
/// userId
Task GetSpecialFeaturesAsync(string userId, string itemId);
///
/// Gets the cultures async.
///
/// Task{CultureDto[]}.
Task GetCulturesAsync();
///
/// Gets the countries async.
///
/// Task{CountryInfo[]}.
Task GetCountriesAsync();
///
/// Marks the played async.
///
/// The item id.
/// The user id.
/// The date played.
/// Task{UserItemDataDto}.
Task MarkPlayedAsync(string itemId, string userId, DateTime? datePlayed);
///
/// Marks the unplayed async.
///
/// The item id.
/// The user id.
/// Task{UserItemDataDto}.
Task MarkUnplayedAsync(string itemId, string userId);
///
/// Updates the favorite status async.
///
/// The item id.
/// The user id.
/// if set to true [is favorite].
/// Task.
/// itemId
Task UpdateFavoriteStatusAsync(string itemId, string userId, bool isFavorite);
///
/// Reports to the server that the user has begun playing an item
///
/// The information.
/// Task{UserItemDataDto}.
/// itemId
Task ReportPlaybackStartAsync(PlaybackStartInfo info);
///
/// Reports playback progress to the server
///
/// The information.
/// Task{UserItemDataDto}.
/// itemId
Task ReportPlaybackProgressAsync(PlaybackProgressInfo info);
///
/// Reports to the server that the user has stopped playing an item
///
/// The information.
/// Task{UserItemDataDto}.
/// itemId
Task ReportPlaybackStoppedAsync(PlaybackStopInfo info);
///
/// Instructs another client to browse to a library item.
///
/// The session id.
/// The id of the item to browse to.
/// The name of the item to browse to.
/// The type of the item to browse to.
/// Task.
Task SendBrowseCommandAsync(string sessionId, string itemId, string itemName, string itemType);
///
/// Sends the playstate command async.
///
/// The session id.
/// The request.
/// Task.
Task SendPlaystateCommandAsync(string sessionId, PlaystateRequest request);
///
/// Sends the play command async.
///
/// The session id.
/// The request.
/// Task.
/// sessionId
/// or
/// request
Task SendPlayCommandAsync(string sessionId, PlayRequest request);
///
/// Sends the command asynchronous.
///
/// The session identifier.
/// The command.
/// Task.
Task SendCommandAsync(string sessionId, GeneralCommand command);
///
/// Sends the string.
///
/// The session identifier.
/// The text.
/// Task.
Task SendString(string sessionId, string text);
///
/// Sets the volume.
///
/// The session identifier.
/// The volume.
/// Task.
Task SetVolume(string sessionId, int volume);
///
/// Stops the transcoding processes.
///
/// The device identifier.
/// Task.
Task StopTranscodingProcesses(string deviceId);
///
/// Sets the index of the audio stream.
///
/// The session identifier.
/// The index.
/// Task.
Task SetAudioStreamIndex(string sessionId, int index);
///
/// Sets the index of the subtitle stream.
///
/// The session identifier.
/// The index.
/// Task.
Task SetSubtitleStreamIndex(string sessionId, int? index);
///
/// Instructs the client to display a message to the user
///
/// The session id.
/// The command.
/// Task.
Task SendMessageCommandAsync(string sessionId, MessageCommand command);
///
/// Clears a user's rating for an item
///
/// The item id.
/// The user id.
/// Task{UserItemDataDto}.
/// itemId
Task ClearUserItemRatingAsync(string itemId, string userId);
///
/// Updates a user's rating for an item, based on likes or dislikes
///
/// The item id.
/// The user id.
/// if set to true [likes].
/// Task.
/// itemId
Task UpdateUserItemRatingAsync(string itemId, string userId, bool likes);
///
/// Authenticates a user and returns the result
///
/// The username.
/// The password.
/// Task.
/// userId
Task AuthenticateUserAsync(string username,
string password);
///
/// Updates the server configuration async.
///
/// The configuration.
/// Task.
/// configuration
Task UpdateServerConfigurationAsync(ServerConfiguration configuration);
///
/// Updates the scheduled task triggers.
///
/// The id.
/// The triggers.
/// Task{RequestResult}.
/// id
Task UpdateScheduledTaskTriggersAsync(string id, TaskTriggerInfo[] triggers);
///
/// Gets the display preferences.
///
/// The id.
/// The user id.
/// The client.
/// The cancellation token.
/// Task{BaseItemDto}.
Task GetDisplayPreferencesAsync(string id, string userId, string client, CancellationToken cancellationToken = default(CancellationToken));
///
/// Updates display preferences for a user
///
/// The display preferences.
/// The user id.
/// The client.
/// The cancellation token.
/// Task{DisplayPreferences}.
/// userId
Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken = default(CancellationToken));
///
/// Posts a set of data to a url, and deserializes the return stream into T
///
///
/// The URL.
/// The args.
/// The cancellation token.
/// Task{``0}.
Task PostAsync(string url, Dictionary args, CancellationToken cancellationToken = default(CancellationToken))
where T : class;
///
/// This is a helper around getting a stream from the server that contains serialized data
///
/// The URL.
/// Task{Stream}.
Task GetSerializedStreamAsync(string url);
///
/// Gets the json serializer.
///
/// The json serializer.
IJsonSerializer JsonSerializer { get; set; }
///
/// Gets or sets the server address
///
/// The server address.
string ServerAddress { get; }
///
/// Gets or sets the type of the client.
///
/// The type of the client.
string ClientName { get; set; }
///
/// Gets the device.
///
/// The device.
IDevice Device { get; }
///
/// Gets or sets the name of the device.
///
/// The name of the device.
string DeviceName { get; }
///
/// Gets or sets the device id.
///
/// The device id.
string DeviceId { get; }
///
/// Gets or sets the current user id.
///
/// The current user id.
string CurrentUserId { get; }
///
/// Gets the access token.
///
/// The access token.
string AccessToken { get; }
///
/// Sets the authentication information.
///
/// The access token.
/// The user identifier.
void SetAuthenticationInfo(string accessToken, string userId);
///
/// Sets the authentication information.
///
/// The access token.
void SetAuthenticationInfo(string accessToken);
///
/// Clears the authentication information.
///
void ClearAuthenticationInfo();
///
/// Changes the server location.
///
/// The address.
/// if set to true [keep existing authentication].
void ChangeServerLocation(string address, bool keepExistingAuth = false);
///
/// Starts the receiving session updates.
///
/// The interval ms.
/// Task.
Task StartReceivingSessionUpdates(int intervalMs);
///
/// Stops the receiving session updates.
///
/// Task.
Task StopReceivingSessionUpdates();
///
/// Gets the image URL.
///
/// The item.
/// The options.
/// System.String.
/// item
string GetImageUrl(BaseItemDto item, ImageOptions options);
///
/// Gets the image URL.
///
/// The item.
/// The options.
/// System.String.
string GetImageUrl(ChannelInfoDto item, ImageOptions options);
///
/// Gets the image URL.
///
/// The item.
/// The options.
/// System.String.
string GetImageUrl(RecordingInfoDto item, ImageOptions options);
///
/// Gets the image URL.
///
/// The item.
/// The options.
/// System.String.
string GetImageUrl(ProgramInfoDto item, ImageOptions options);
///
/// Gets the subtitle URL.
///
/// The options.
/// System.String.
string GetSubtitleUrl(SubtitleDownloadOptions options);
///
/// Gets an image url that can be used to download an image from the api
///
/// The Id of the item
/// The options.
/// System.String.
/// itemId
string GetImageUrl(string itemId, ImageOptions options);
///
/// Gets the user image URL.
///
/// The user.
/// The options.
/// System.String.
/// user
string GetUserImageUrl(UserDto user, ImageOptions options);
///
/// Gets an image url that can be used to download an image from the api
///
/// The Id of the user
/// The options.
/// System.String.
/// userId
string GetUserImageUrl(string userId, ImageOptions options);
///
/// Gets the person image URL.
///
/// The item.
/// The options.
/// System.String.
/// item
string GetPersonImageUrl(BaseItemPerson item, ImageOptions options);
///
/// Gets an image url that can be used to download an image from the api
///
/// The year.
/// The options.
/// System.String.
string GetYearImageUrl(int year, ImageOptions options);
///
/// Gets an image url that can be used to download an image from the api
///
/// The name.
/// The options.
/// System.String.
/// name
string GetGenreImageUrl(string name, ImageOptions options);
///
/// Gets the music genre image URL.
///
/// The name.
/// The options.
/// System.String.
string GetMusicGenreImageUrl(string name, ImageOptions options);
///
/// Gets the game genre image URL.
///
/// The name.
/// The options.
/// System.String.
string GetGameGenreImageUrl(string name, ImageOptions options);
///
/// Gets an image url that can be used to download an image from the api
///
/// The name.
/// The options.
/// System.String.
/// name
string GetStudioImageUrl(string name, ImageOptions options);
///
/// Gets the artist image URL.
///
/// The name.
/// The options.
/// System.String.
/// name
string GetArtistImageUrl(string name, ImageOptions options);
///
/// This is a helper to get a list of backdrop url's from a given ApiBaseItemWrapper. If the actual item does not have any backdrops it will return backdrops from the first parent that does.
///
/// A given item.
/// The options.
/// System.String[][].
/// item
string[] GetBackdropImageUrls(BaseItemDto item, ImageOptions options);
///
/// This is a helper to get the logo image url from a given ApiBaseItemWrapper. If the actual item does not have a logo, it will return the logo from the first parent that does, or null.
///
/// A given item.
/// The options.
/// System.String.
/// item
string GetLogoImageUrl(BaseItemDto item, ImageOptions options);
///
/// Gets the art image URL.
///
/// The item.
/// The options.
/// System.String.
string GetArtImageUrl(BaseItemDto item, ImageOptions options);
///
/// Gets the thumb image URL.
///
/// The item.
/// The options.
/// System.String.
string GetThumbImageUrl(BaseItemDto item, ImageOptions options);
///
/// Gets the live tv information asynchronous.
///
/// The cancellation token.
/// Task{LiveTvInfo}.
Task GetLiveTvInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv channels asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{LiveTvInfo}.
Task> GetLiveTvChannelsAsync(LiveTvChannelQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv channel asynchronous.
///
/// The identifier.
/// The user identifier.
/// The cancellation token.
/// Task{ChannelInfoDto}.
Task GetLiveTvChannelAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv recordings asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{RecordingInfoDto}}.
Task> GetLiveTvRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv recording asynchronous.
///
/// The identifier.
/// The user identifier.
/// The cancellation token.
/// Task{RecordingInfoDto}.
Task GetLiveTvRecordingAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv recording groups asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{RecordingGroupDto}}.
Task> GetLiveTvRecordingGroupsAsync(RecordingGroupQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv recording group asynchronous.
///
/// The identifier.
/// The user identifier.
/// The cancellation token.
/// Task{RecordingGroupDto}.
Task GetLiveTvRecordingGroupAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv timers asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{TimerInfoDto}}.
Task> GetLiveTvTimersAsync(TimerQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv programs asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{ProgramInfoDto}}.
Task> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv program asynchronous.
///
/// The identifier.
/// The user identifier.
/// The cancellation token.
/// Task{ProgramInfoDto}.
Task GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the recommended live tv programs asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{ProgramInfoDto}}.
Task> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Creates the live tv timer asynchronous.
///
/// The timer.
/// The cancellation token.
/// Task.
Task CreateLiveTvTimerAsync(BaseTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
///
/// Updates the live tv timer asynchronous.
///
/// The timer.
/// The cancellation token.
/// Task.
Task UpdateLiveTvTimerAsync(TimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
///
/// Creates the live tv series timer asynchronous.
///
/// The timer.
/// The cancellation token.
/// Task.
Task CreateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
///
/// Updates the live tv series timer asynchronous.
///
/// The timer.
/// The cancellation token.
/// Task.
Task UpdateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv timer asynchronous.
///
/// The identifier.
/// The cancellation token.
/// Task{TimerInfoDto}.
Task GetLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv series timers asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{SeriesTimerInfoDto}}.
Task> GetLiveTvSeriesTimersAsync(SeriesTimerQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv series timer asynchronous.
///
/// The identifier.
/// The cancellation token.
/// Task{SeriesTimerInfoDto}.
Task GetLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
///
/// Cancels the live tv timer asynchronous.
///
/// The identifier.
/// The cancellation token.
/// Task.
Task CancelLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
///
/// Cancels the live tv series timer asynchronous.
///
/// The identifier.
/// The cancellation token.
/// Task.
Task CancelLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
///
/// Deletes the live tv recording asynchronous.
///
/// The identifier.
/// The cancellation token.
/// Task.
Task DeleteLiveTvRecordingAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the default timer information.
///
/// The cancellation token.
/// Task{SeriesTimerInfoDto}.
Task GetDefaultLiveTvTimerInfo(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the live tv guide information.
///
/// The cancellation token.
/// Task{GuideInfo}.
Task GetLiveTvGuideInfo(CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the default timer information.
///
/// The program identifier.
/// The cancellation token.
/// Task{SeriesTimerInfoDto}.
Task GetDefaultLiveTvTimerInfo(string programId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the channel features.
///
/// The channel identifier.
/// The cancellation token.
/// Task{ChannelFeatures}.
Task GetChannelFeatures(string channelId, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the channel items.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the channels.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetChannels(ChannelQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Gets the latest channel items.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken = default(CancellationToken));
///
/// Creates the playlist.
///
/// The request.
/// Task<PlaylistCreationResult>.
Task CreatePlaylist(PlaylistCreationRequest request);
///
/// Adds to playlist.
///
/// The playlist identifier.
/// The item ids.
/// The user identifier.
/// Task.
Task AddToPlaylist(string playlistId, IEnumerable itemIds, string userId);
///
/// Removes from playlist.
///
/// The playlist identifier.
/// The entry ids.
/// Task.
Task RemoveFromPlaylist(string playlistId, IEnumerable entryIds);
///
/// Gets the playlist items.
///
/// The query.
/// Task<QueryResult<BaseItemDto>>.
Task> GetPlaylistItems(PlaylistItemQuery query);
///
/// Gets the url needed to stream a video file
///
/// The options.
/// System.String.
/// options
[Obsolete]
string GetVideoStreamUrl(VideoStreamOptions options);
///
/// Formulates a url for streaming video using the HLS protocol
///
/// The options.
/// System.String.
/// options
[Obsolete]
string GetHlsVideoStreamUrl(VideoStreamOptions options);
///
/// Sends the context message asynchronous.
///
/// Type of the item.
/// The item identifier.
/// Name of the item.
/// The context.
/// The cancellation token.
/// Task.
Task SendContextMessageAsync(string itemType, string itemId, string itemName, string context,
CancellationToken cancellationToken);
///
/// Gets the content upload history.
///
/// The device identifier.
/// Task<ContentUploadHistory>.
Task GetContentUploadHistory(string deviceId);
///
/// Uploads the file.
///
/// The stream.
/// The file.
/// The cancellation token.
/// Task.
Task UploadFile(Stream stream,
LocalFileInfo file,
CancellationToken cancellationToken);
///
/// Gets the devices options options.
///
/// Task<DevicesOptions>.
Task GetDevicesOptions();
///
/// Updates the item.
///
/// The item.
/// Task.
Task UpdateItem(BaseItemDto item);
///
/// Creates the synchronize job.
///
/// The request.
/// Task<SyncJob>.
Task CreateSyncJob(SyncJobRequest request);
///
/// Gets the synchronize jobs.
///
/// The query.
/// Task<QueryResult<SyncJob>>.
Task> GetSyncJobs(SyncJobQuery query);
///
/// Gets the synchronize job items.
///
/// The query.
/// Task<QueryResult<SyncJobItem>>.
Task> GetSyncJobItems(SyncJobItemQuery query);
///
/// Reports the synchronize job item transferred.
///
/// The identifier.
/// Task.
Task ReportSyncJobItemTransferred(string id);
///
/// Gets the synchronize job item file.
///
/// The identifier.
/// The cancellation token.
/// Task<Stream>.
Task GetSyncJobItemFile(string id, CancellationToken cancellationToken);
///
/// Opens the web socket.
///
/// The web socket factory.
/// The keep alive timer ms.
void OpenWebSocket(Func webSocketFactory, int keepAliveTimerMs = 60000);
///
/// Reports the offline actions.
///
/// The actions.
/// Task.
Task ReportOfflineActions(List actions);
///
/// Gets the ready synchronize items.
///
/// The target identifier.
/// List<SyncedItem>.
Task> GetReadySyncItems(string targetId);
}
}