aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs1
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs2
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs4
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs7
-rw-r--r--MediaBrowser.Api/Reports/Data/ReportBuilder.cs2
-rw-r--r--MediaBrowser.Controller/Entities/IHasSpecialFeatures.cs3
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs6
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs4
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/Sync/ISyncManager.cs15
-rw-r--r--MediaBrowser.Controller/Sync/ISyncRepository.cs80
-rw-r--r--MediaBrowser.Model/ApiClient/ApiClientExtensions.cs48
-rw-r--r--MediaBrowser.Model/ApiClient/ApiHelpers.cs22
-rw-r--r--MediaBrowser.Model/ApiClient/ConnectionMode.cs9
-rw-r--r--MediaBrowser.Model/ApiClient/ConnectionOptions.cs29
-rw-r--r--MediaBrowser.Model/ApiClient/ConnectionResult.cs21
-rw-r--r--MediaBrowser.Model/ApiClient/ConnectionState.cs13
-rw-r--r--MediaBrowser.Model/ApiClient/IApiClient.cs1427
-rw-r--r--MediaBrowser.Model/ApiClient/IClientWebSocket.cs54
-rw-r--r--MediaBrowser.Model/ApiClient/IConnectionManager.cs192
-rw-r--r--MediaBrowser.Model/ApiClient/IDevice.cs44
-rw-r--r--MediaBrowser.Model/ApiClient/IServerEvents.cs152
-rw-r--r--MediaBrowser.Model/ApiClient/NetworkStatus.cs30
-rw-r--r--MediaBrowser.Model/ApiClient/RemoteLogoutReason.cs9
-rw-r--r--MediaBrowser.Model/ApiClient/ServerCredentials.cs131
-rw-r--r--MediaBrowser.Model/ApiClient/ServerInfo.cs127
-rw-r--r--MediaBrowser.Model/ApiClient/ServerUserInfo.cs9
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs12
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj16
-rw-r--r--MediaBrowser.Model/Sync/SyncJobItem.cs5
-rw-r--r--MediaBrowser.Model/Sync/SyncJobItemStatus.cs4
-rw-r--r--MediaBrowser.Model/Sync/SyncJobStatus.cs3
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
-rw-r--r--SharedVersion.cs2
36 files changed, 23 insertions, 2469 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index f1f24660c..9c69cc0fc 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -212,7 +212,6 @@ namespace Emby.Server.Implementations
internal IUserViewManager UserViewManager { get; set; }
private IAuthenticationRepository AuthenticationRepository { get; set; }
- private ISyncRepository SyncRepository { get; set; }
private ITVSeriesManager TVSeriesManager { get; set; }
private ICollectionManager CollectionManager { get; set; }
private IMediaSourceManager MediaSourceManager { get; set; }
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 2d717dc2c..5ad3a7ef3 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -1263,7 +1263,7 @@ namespace Emby.Server.Implementations.Dto
var hasSpecialFeatures = item as IHasSpecialFeatures;
if (hasSpecialFeatures != null)
{
- var specialFeatureCount = hasSpecialFeatures.SpecialFeatureIds.Count;
+ var specialFeatureCount = hasSpecialFeatures.SpecialFeatureIds.Length;
if (specialFeatureCount > 0)
{
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index b4ba58cfd..40dccf9ba 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -2610,7 +2610,7 @@ namespace Emby.Server.Implementations.Library
return video;
// Sort them so that the list can be easily compared for changes
- }).OrderBy(i => i.Path).ToList();
+ }).OrderBy(i => i.Path);
}
private static readonly string[] ExtrasSubfolderNames = new[] { "extras", "specials", "shorts", "scenes", "featurettes", "behind the scenes", "deleted scenes", "interviews" };
@@ -2652,7 +2652,7 @@ namespace Emby.Server.Implementations.Library
return video;
// Sort them so that the list can be easily compared for changes
- }).OrderBy(i => i.Path).ToList();
+ }).OrderBy(i => i.Path);
}
public string GetPathAfterNetworkSubstitution(string path, BaseItem ownerItem)
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index d7cc1a7f7..1e5c0beed 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -69,7 +69,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies
if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
{
- return ResolveVideos<MusicVideo>(parent, files, directoryService, false, collectionType);
+ return ResolveVideos<MusicVideo>(parent, files, directoryService, true, collectionType);
}
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) ||
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 90121b496..48eba4117 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -207,9 +207,12 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
inputModifier += " -fflags " + string.Join("", flags.ToArray());
}
- if (!string.IsNullOrWhiteSpace(GetEncodingOptions().HardwareAccelerationType))
+ var videoStream = mediaSource.VideoStream;
+ var videoDecoder = videoStream == null ? null : new EncodingHelper(_mediaEncoder, _fileSystem, null).GetVideoDecoder(VideoType.VideoFile, videoStream, GetEncodingOptions());
+
+ if (!string.IsNullOrWhiteSpace(videoDecoder))
{
- inputModifier += " -hwaccel auto";
+ inputModifier += " " + videoDecoder;
}
if (mediaSource.ReadAtNativeFramerate)
diff --git a/MediaBrowser.Api/Reports/Data/ReportBuilder.cs b/MediaBrowser.Api/Reports/Data/ReportBuilder.cs
index 5339fa64b..6b10fcb05 100644
--- a/MediaBrowser.Api/Reports/Data/ReportBuilder.cs
+++ b/MediaBrowser.Api/Reports/Data/ReportBuilder.cs
@@ -613,7 +613,7 @@ namespace MediaBrowser.Api.Reports
HasImageTagsPrimary = item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Primary) > 0,
HasImageTagsBackdrop = item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Backdrop) > 0,
HasImageTagsLogo = item.ImageInfos != null && item.ImageInfos.Count(n => n.Type == ImageType.Logo) > 0,
- HasSpecials = hasSpecialFeatures != null ? hasSpecialFeatures.SpecialFeatureIds.Count > 0 : false,
+ HasSpecials = hasSpecialFeatures != null ? hasSpecialFeatures.SpecialFeatureIds.Length > 0 : false,
HasSubtitles = video != null ? video.HasSubtitles : false,
RowType = ReportHelper.GetRowType(item.GetClientTypeName())
};
diff --git a/MediaBrowser.Controller/Entities/IHasSpecialFeatures.cs b/MediaBrowser.Controller/Entities/IHasSpecialFeatures.cs
index b3a0dc237..f4905b7dc 100644
--- a/MediaBrowser.Controller/Entities/IHasSpecialFeatures.cs
+++ b/MediaBrowser.Controller/Entities/IHasSpecialFeatures.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
namespace MediaBrowser.Controller.Entities
{
@@ -9,6 +8,6 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the special feature ids.
/// </summary>
/// <value>The special feature ids.</value>
- List<Guid> SpecialFeatureIds { get; set; }
+ Guid[] SpecialFeatureIds { get; set; }
}
}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 99d7fdecb..3a41709fe 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -19,11 +19,11 @@ namespace MediaBrowser.Controller.Entities.Movies
/// </summary>
public class Movie : Video, IHasSpecialFeatures, IHasTrailers, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
{
- public List<Guid> SpecialFeatureIds { get; set; }
+ public Guid[] SpecialFeatureIds { get; set; }
public Movie()
{
- SpecialFeatureIds = new List<Guid>();
+ SpecialFeatureIds = EmptyGuidArray;
RemoteTrailers = EmptyMediaUrlArray;
LocalTrailerIds = EmptyGuidArray;
RemoteTrailerIds = EmptyGuidArray;
@@ -77,7 +77,7 @@ namespace MediaBrowser.Controller.Entities.Movies
private async Task<bool> RefreshSpecialFeatures(MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
{
var newItems = LibraryManager.FindExtras(this, fileSystemChildren, options.DirectoryService).ToList();
- var newItemIds = newItems.Select(i => i.Id).ToList();
+ var newItemIds = newItems.Select(i => i.Id).ToArray();
var itemsChanged = !SpecialFeatureIds.SequenceEqual(newItemIds);
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index f0d4d544e..a01260397 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -1387,8 +1387,8 @@ namespace MediaBrowser.Controller.Entities
if (movie != null)
{
var ok = filterValue
- ? movie.SpecialFeatureIds.Count > 0
- : movie.SpecialFeatureIds.Count == 0;
+ ? movie.SpecialFeatureIds.Length > 0
+ : movie.SpecialFeatureIds.Length == 0;
if (!ok)
{
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 38a76c06a..5c2bae82e 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -336,7 +336,6 @@
<Compile Include="Sync\ISyncDataProvider.cs" />
<Compile Include="Sync\ISyncManager.cs" />
<Compile Include="Sync\ISyncProvider.cs" />
- <Compile Include="Sync\ISyncRepository.cs" />
<Compile Include="Sync\SyncedFileInfo.cs" />
<Compile Include="Sync\SyncedItemProgress.cs" />
<Compile Include="TV\ITVSeriesManager.cs" />
diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs
index 291632ea5..66f64464f 100644
--- a/MediaBrowser.Controller/Sync/ISyncManager.cs
+++ b/MediaBrowser.Controller/Sync/ISyncManager.cs
@@ -16,6 +16,7 @@ namespace MediaBrowser.Controller.Sync
event EventHandler<GenericEventArgs<SyncJob>> SyncJobUpdated;
event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemUpdated;
event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemCreated;
+ event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemCancelled;
/// <summary>
/// Creates the job.
@@ -135,20 +136,6 @@ namespace MediaBrowser.Controller.Sync
Task<SyncDataResponse> SyncData(SyncDataRequest request);
/// <summary>
- /// Marks the job item for removal.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task MarkJobItemForRemoval(string id);
-
- /// <summary>
- /// Unmarks the job item for removal.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task UnmarkJobItemForRemoval(string id);
-
- /// <summary>
/// Gets the library item ids.
/// </summary>
/// <param name="query">The query.</param>
diff --git a/MediaBrowser.Controller/Sync/ISyncRepository.cs b/MediaBrowser.Controller/Sync/ISyncRepository.cs
deleted file mode 100644
index 8e9b2bf77..000000000
--- a/MediaBrowser.Controller/Sync/ISyncRepository.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System.Collections.Generic;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Sync;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Controller.Sync
-{
- public interface ISyncRepository
- {
- /// <summary>
- /// Gets the job.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>SyncJob.</returns>
- SyncJob GetJob(string id);
-
- /// <summary>
- /// Creates the specified job.
- /// </summary>
- /// <param name="job">The job.</param>
- /// <returns>Task.</returns>
- Task Create(SyncJob job);
-
- /// <summary>
- /// Updates the specified job.
- /// </summary>
- /// <param name="job">The job.</param>
- /// <returns>Task.</returns>
- Task Update(SyncJob job);
-
- /// <summary>
- /// Deletes the job.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task DeleteJob(string id);
-
- /// <summary>
- /// Gets the jobs.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>QueryResult&lt;SyncJob&gt;.</returns>
- QueryResult<SyncJob> GetJobs(SyncJobQuery query);
-
- /// <summary>
- /// Gets the job item.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>SyncJobItem.</returns>
- SyncJobItem GetJobItem(string id);
-
- /// <summary>
- /// Creates the specified job item.
- /// </summary>
- /// <param name="jobItem">The job item.</param>
- /// <returns>Task.</returns>
- Task Create(SyncJobItem jobItem);
-
- /// <summary>
- /// Updates the specified job item.
- /// </summary>
- /// <param name="jobItem">The job item.</param>
- /// <returns>Task.</returns>
- Task Update(SyncJobItem jobItem);
-
- /// <summary>
- /// Gets the job items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>IEnumerable&lt;SyncJobItem&gt;.</returns>
- QueryResult<SyncJobItem> GetJobItems(SyncJobItemQuery query);
-
- /// <summary>
- /// Gets the library item ids.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>QueryResult&lt;System.String&gt;.</returns>
- Dictionary<string, SyncedItemProgress> GetSyncedItemProgresses(SyncJobItemQuery query);
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ApiClientExtensions.cs b/MediaBrowser.Model/ApiClient/ApiClientExtensions.cs
deleted file mode 100644
index 4ae4fe822..000000000
--- a/MediaBrowser.Model/ApiClient/ApiClientExtensions.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Sync;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Model.ApiClient
-{
- /// <summary>
- /// Class ApiClientExtensions
- /// </summary>
- public static class ApiClientExtensions
- {
- /// <summary>
- /// Gets the image stream async.
- /// </summary>
- /// <param name="apiClient">The API client.</param>
- /// <param name="url">The URL.</param>
- /// <returns>Task{Stream}.</returns>
- public static Task<Stream> GetImageStreamAsync(this IApiClient apiClient, string url)
- {
- return apiClient.GetImageStreamAsync(url, CancellationToken.None);
- }
-
- public static Task<UserDto[]> GetPublicUsersAsync(this IApiClient apiClient)
- {
- return apiClient.GetPublicUsersAsync(CancellationToken.None);
- }
-
- public static Task<ItemsResult> GetItemsAsync(this IApiClient apiClient, ItemQuery query)
- {
- return apiClient.GetItemsAsync(query, CancellationToken.None);
- }
-
- public static Task<SyncDialogOptions> GetSyncOptions(this IApiClient apiClient, SyncJob job)
- {
- return apiClient.GetSyncOptions(new SyncJobRequest
- {
- Category = job.Category,
- ItemIds = job.RequestedItemIds,
- ParentId = job.ParentId,
- TargetId = job.TargetId,
- UserId = job.UserId
- });
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ApiHelpers.cs b/MediaBrowser.Model/ApiClient/ApiHelpers.cs
deleted file mode 100644
index 65b6495ab..000000000
--- a/MediaBrowser.Model/ApiClient/ApiHelpers.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public static class ApiHelpers
- {
- /// <summary>
- /// Gets the name of the slug.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <returns>System.String.</returns>
- public static string GetSlugName(string name)
- {
- if (string.IsNullOrEmpty(name))
- {
- throw new ArgumentNullException("name");
- }
-
- return name.Replace('/', '-').Replace('?', '-').Replace('&', '-');
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ConnectionMode.cs b/MediaBrowser.Model/ApiClient/ConnectionMode.cs
deleted file mode 100644
index 5dc224d95..000000000
--- a/MediaBrowser.Model/ApiClient/ConnectionMode.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace MediaBrowser.Model.ApiClient
-{
- public enum ConnectionMode
- {
- Local = 1,
- Remote = 2,
- Manual = 3
- }
-} \ No newline at end of file
diff --git a/MediaBrowser.Model/ApiClient/ConnectionOptions.cs b/MediaBrowser.Model/ApiClient/ConnectionOptions.cs
deleted file mode 100644
index e12676311..000000000
--- a/MediaBrowser.Model/ApiClient/ConnectionOptions.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class ConnectionOptions
- {
- /// <summary>
- /// Gets or sets a value indicating whether [enable web socket].
- /// </summary>
- /// <value><c>true</c> if [enable web socket]; otherwise, <c>false</c>.</value>
- public bool EnableWebSocket { get; set; }
- /// <summary>
- /// Gets or sets a value indicating whether [report capabilities].
- /// </summary>
- /// <value><c>true</c> if [report capabilities]; otherwise, <c>false</c>.</value>
- public bool ReportCapabilities { get; set; }
- /// <summary>
- /// Gets or sets a value indicating whether [update date last accessed].
- /// </summary>
- /// <value><c>true</c> if [update date last accessed]; otherwise, <c>false</c>.</value>
- public bool UpdateDateLastAccessed { get; set; }
-
- public ConnectionOptions()
- {
- EnableWebSocket = true;
- ReportCapabilities = true;
- UpdateDateLastAccessed = true;
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ConnectionResult.cs b/MediaBrowser.Model/ApiClient/ConnectionResult.cs
deleted file mode 100644
index 32a80d1a3..000000000
--- a/MediaBrowser.Model/ApiClient/ConnectionResult.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using MediaBrowser.Model.Connect;
-using MediaBrowser.Model.Dto;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class ConnectionResult
- {
- public ConnectionState State { get; set; }
- public List<ServerInfo> Servers { get; set; }
- public IApiClient ApiClient { get; set; }
- public ConnectUser ConnectUser { get; set; }
- public UserDto OfflineUser { get; set; }
-
- public ConnectionResult()
- {
- State = ConnectionState.Unavailable;
- Servers = new List<ServerInfo>();
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ConnectionState.cs b/MediaBrowser.Model/ApiClient/ConnectionState.cs
deleted file mode 100644
index 9b753c7bb..000000000
--- a/MediaBrowser.Model/ApiClient/ConnectionState.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace MediaBrowser.Model.ApiClient
-{
- public enum ConnectionState
- {
- Unavailable = 1,
- ServerSignIn = 2,
- SignedIn = 3,
- ServerSelection = 4,
- ConnectSignIn = 5,
- OfflineSignIn = 6,
- OfflineSignedIn = 7
- }
-} \ No newline at end of file
diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs
deleted file mode 100644
index 2e9f57087..000000000
--- a/MediaBrowser.Model/ApiClient/IApiClient.cs
+++ /dev/null
@@ -1,1427 +0,0 @@
-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
-{
- /// <summary>
- /// Interface IApiClient
- /// </summary>
- public interface IApiClient : IServerEvents, IDisposable
- {
- /// <summary>
- /// Occurs when [remote logged out].
- /// </summary>
- event EventHandler<GenericEventArgs<RemoteLogoutReason>> RemoteLoggedOut;
-
- /// <summary>
- /// Gets the API URL.
- /// </summary>
- /// <param name="handler">The handler.</param>
- /// <returns>System.String.</returns>
- string GetApiUrl(string handler);
-
- /// <summary>
- /// Gets the game system summaries async.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{List{GameSystemSummary}}.</returns>
- Task<List<GameSystemSummary>> GetGameSystemSummariesAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the async.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="url">The URL.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{``0}.</returns>
- Task<T> GetAsync<T>(string url, CancellationToken cancellationToken = default(CancellationToken))
- where T : class;
-
- /// <summary>
- /// Reports the capabilities.
- /// </summary>
- /// <param name="capabilities">The capabilities.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task ReportCapabilities(ClientCapabilities capabilities, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Logouts this instance.
- /// </summary>
- /// <returns>Task.</returns>
- Task Logout();
-
- /// <summary>
- /// Gets the index of the game players.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{List{ItemIndex}}.</returns>
- Task<List<ItemIndex>> GetGamePlayerIndex(string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the index of the year.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="includeItemTypes">The include item types.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{List{ItemIndex}}.</returns>
- Task<List<ItemIndex>> GetYearIndex(string userId, string[] includeItemTypes, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the critic reviews.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="startIndex">The start index.</param>
- /// <param name="limit">The limit.</param>
- /// <returns>Task{ItemReviewsResult}.</returns>
- Task<QueryResult<ItemReview>> GetCriticReviews(string itemId, CancellationToken cancellationToken = default(CancellationToken), int? startIndex = null, int? limit = null);
-
- /// <summary>
- /// Gets the theme songs async.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="inheritFromParents">if set to <c>true</c> [inherit from parents].</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ThemeMediaResult}.</returns>
- Task<ThemeMediaResult> GetThemeSongsAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the search hints async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{SearchHintResult}.</returns>
- Task<SearchHintResult> GetSearchHintsAsync(SearchQuery query);
-
- /// <summary>
- /// Gets the filters.
- /// </summary>
- /// <param name="userId">The user identifier.</param>
- /// <param name="parentId">The parent identifier.</param>
- /// <param name="mediaTypes">The media types.</param>
- /// <param name="itemTypes">The item types.</param>
- /// <returns>Task&lt;QueryFilters&gt;.</returns>
- Task<QueryFilters> GetFilters(string userId, string parentId, string[] mediaTypes, string[] itemTypes);
-
- /// <summary>
- /// Gets the theme videos async.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="inheritFromParents">if set to <c>true</c> [inherit from parents].</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ThemeMediaResult}.</returns>
- Task<ThemeMediaResult> GetThemeVideosAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets all theme media async.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="inheritFromParents">if set to <c>true</c> [inherit from parents].</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{AllThemeMediaResult}.</returns>
- Task<AllThemeMediaResult> GetAllThemeMediaAsync(string userId, string itemId, bool inheritFromParents, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Marks the notifications read.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="notificationIdList">The notification id list.</param>
- /// <param name="isRead">if set to <c>true</c> [is read].</param>
- /// <returns>Task.</returns>
- Task MarkNotificationsRead(string userId, IEnumerable<string> notificationIdList, bool isRead);
-
- /// <summary>
- /// Gets the notifications summary.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{NotificationsSummary}.</returns>
- Task<NotificationsSummary> GetNotificationsSummary(string userId);
-
- /// <summary>
- /// Gets the notifications async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{NotificationResult}.</returns>
- Task<NotificationResult> GetNotificationsAsync(NotificationQuery query);
-
- /// <summary>
- /// Gets an image stream based on a url
- /// </summary>
- /// <param name="url">The URL.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{Stream}.</returns>
- /// <exception cref="ArgumentNullException">url</exception>
- Task<Stream> GetImageStreamAsync(string url, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the stream.
- /// </summary>
- /// <param name="url">The URL.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;Stream&gt;.</returns>
- Task<Stream> GetStream(string url, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the response.
- /// </summary>
- /// <param name="url">The URL.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;HttpResponse&gt;.</returns>
- Task<HttpResponse> GetResponse(string url, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Updates the user configuration.
- /// </summary>
- /// <param name="userId">The user identifier.</param>
- /// <param name="configuration">The configuration.</param>
- /// <returns>Task.</returns>
- Task UpdateUserConfiguration(string userId, UserConfiguration configuration);
-
- /// <summary>
- /// Gets a BaseItem
- /// </summary>
- /// <param name="id">The id.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- /// <exception cref="ArgumentNullException">id</exception>
- Task<BaseItemDto> GetItemAsync(string id, string userId);
-
- /// <summary>
- /// Gets the latest items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;QueryResult&lt;BaseItemDto&gt;&gt;.</returns>
- Task<BaseItemDto[]> GetLatestItems(LatestItemsQuery query);
-
- /// <summary>
- /// Gets the intros async.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetIntrosAsync(string itemId, string userId);
-
- /// <summary>
- /// Gets a BaseItem
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<BaseItemDto> GetRootFolderAsync(string userId);
-
- /// <summary>
- /// Gets the additional parts.
- /// </summary>
- /// <param name="itemId">The item identifier.</param>
- /// <param name="userId">The user identifier.</param>
- /// <returns>Task{BaseItemDto[]}.</returns>
- Task<ItemsResult> GetAdditionalParts(string itemId, string userId);
-
- /// <summary>
- /// Gets the playback information.
- /// </summary>
- /// <param name="request">The request.</param>
- /// <returns>Task&lt;LiveMediaInfoResult&gt;.</returns>
- Task<PlaybackInfoResponse> GetPlaybackInfo(PlaybackInfoRequest request);
-
- /// <summary>
- /// Gets the users async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{UserDto[]}.</returns>
- Task<UserDto[]> GetUsersAsync(UserQuery query);
-
- /// <summary>
- /// Gets the public users async.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{UserDto[]}.</returns>
- Task<UserDto[]> GetPublicUsersAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets active client sessions.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{SessionInfoDto[]}.</returns>
- Task<SessionInfoDto[]> GetClientSessionsAsync(SessionQuery query);
-
- /// <summary>
- /// Gets the client session asynchronous.
- /// </summary>
- /// <returns>Task{SessionInfoDto}.</returns>
- Task<SessionInfoDto> GetCurrentSessionAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the item counts async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemCounts}.</returns>
- Task<ItemCounts> GetItemCountsAsync(ItemCountsQuery query);
-
- /// <summary>
- /// Gets the episodes asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetEpisodesAsync(EpisodeQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the seasons asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetSeasonsAsync(SeasonQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- Task<PluginSecurityInfo> GetRegistrationInfo();
-
- /// <summary>
- /// Queries for items
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- /// <exception cref="ArgumentNullException">query</exception>
- Task<ItemsResult> GetItemsAsync(ItemQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the user views.
- /// </summary>
- /// <param name="userId">The user identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ItemsResult&gt;.</returns>
- Task<ItemsResult> GetUserViews(string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the instant mix from item asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;ItemsResult&gt;.</returns>
- Task<ItemsResult> GetInstantMixFromItemAsync(SimilarItemsQuery query);
-
- /// <summary>
- /// Gets the similar movies async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetSimilarItemsAsync(SimilarItemsQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the people async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<ItemsResult> GetPeopleAsync(PersonsQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the artists.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemsResult}.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<ItemsResult> GetArtistsAsync(ArtistsQuery query);
-
- /// <summary>
- /// Gets the album artists asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetAlbumArtistsAsync(ArtistsQuery query);
-
- /// <summary>
- /// Gets the next up async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetNextUpEpisodesAsync(NextUpQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the upcoming episodes asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetUpcomingEpisodesAsync(UpcomingEpisodesQuery query);
-
- /// <summary>
- /// Gets a genre
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<BaseItemDto> GetGenreAsync(string name, string userId);
-
- /// <summary>
- /// Gets the genres async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetGenresAsync(ItemsByNameQuery query);
-
- /// <summary>
- /// Gets the studios async.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task{ItemsResult}.</returns>
- Task<ItemsResult> GetStudiosAsync(ItemsByNameQuery query);
-
- /// <summary>
- /// Gets the music genre async.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- Task<BaseItemDto> GetMusicGenreAsync(string name, string userId);
-
- /// <summary>
- /// Gets the game genre async.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- Task<BaseItemDto> GetGameGenreAsync(string name, string userId);
-
- /// <summary>
- /// Restarts the server.
- /// </summary>
- /// <returns>Task.</returns>
- Task RestartServerAsync();
-
- /// <summary>
- /// Gets the system status async.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{SystemInfo}.</returns>
- Task<SystemInfo> GetSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the public system information asynchronous.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;PublicSystemInfo&gt;.</returns>
- Task<PublicSystemInfo> GetPublicSystemInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets a list of plugins installed on the server
- /// </summary>
- /// <returns>Task{PluginInfo[]}.</returns>
- Task<PluginInfo[]> GetInstalledPluginsAsync();
-
- /// <summary>
- /// Gets the current server configuration
- /// </summary>
- /// <returns>Task{ServerConfiguration}.</returns>
- Task<ServerConfiguration> GetServerConfigurationAsync();
-
- /// <summary>
- /// Gets the scheduled tasks.
- /// </summary>
- /// <returns>Task{TaskInfo[]}.</returns>
- Task<TaskInfo[]> GetScheduledTasksAsync();
-
- /// <summary>
- /// Gets the scheduled task async.
- /// </summary>
- /// <param name="id">The id.</param>
- /// <returns>Task{TaskInfo}.</returns>
- /// <exception cref="ArgumentNullException">id</exception>
- Task<TaskInfo> GetScheduledTaskAsync(string id);
-
- /// <summary>
- /// Gets a user by id
- /// </summary>
- /// <param name="id">The id.</param>
- /// <returns>Task{UserDto}.</returns>
- /// <exception cref="ArgumentNullException">id</exception>
- Task<UserDto> GetUserAsync(string id);
-
- /// <summary>
- /// Gets the offline user asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task&lt;UserDto&gt;.</returns>
- Task<UserDto> GetOfflineUserAsync(string id);
-
- /// <summary>
- /// Gets the parental ratings async.
- /// </summary>
- /// <returns>Task{List{ParentalRating}}.</returns>
- Task<List<ParentalRating>> GetParentalRatingsAsync();
-
- /// <summary>
- /// Gets local trailers for an item
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <returns>Task{ItemsResult}.</returns>
- /// <exception cref="ArgumentNullException">query</exception>
- Task<BaseItemDto[]> GetLocalTrailersAsync(string userId, string itemId);
-
- /// <summary>
- /// Gets special features for an item
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <returns>Task{BaseItemDto[]}.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<BaseItemDto[]> GetSpecialFeaturesAsync(string userId, string itemId);
-
- /// <summary>
- /// Gets the cultures async.
- /// </summary>
- /// <returns>Task{CultureDto[]}.</returns>
- Task<CultureDto[]> GetCulturesAsync();
-
- /// <summary>
- /// Gets the countries async.
- /// </summary>
- /// <returns>Task{CountryInfo[]}.</returns>
- Task<CountryInfo[]> GetCountriesAsync();
-
- /// <summary>
- /// Marks the played async.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <param name="datePlayed">The date played.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- Task<UserItemDataDto> MarkPlayedAsync(string itemId, string userId, DateTime? datePlayed);
-
- /// <summary>
- /// Marks the unplayed async.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- Task<UserItemDataDto> MarkUnplayedAsync(string itemId, string userId);
-
- /// <summary>
- /// Updates the favorite status async.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <param name="isFavorite">if set to <c>true</c> [is favorite].</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task<UserItemDataDto> UpdateFavoriteStatusAsync(string itemId, string userId, bool isFavorite);
-
- /// <summary>
- /// Reports to the server that the user has begun playing an item
- /// </summary>
- /// <param name="info">The information.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task ReportPlaybackStartAsync(PlaybackStartInfo info);
-
- /// <summary>
- /// Reports playback progress to the server
- /// </summary>
- /// <param name="info">The information.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task ReportPlaybackProgressAsync(PlaybackProgressInfo info);
-
- /// <summary>
- /// Reports to the server that the user has stopped playing an item
- /// </summary>
- /// <param name="info">The information.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task ReportPlaybackStoppedAsync(PlaybackStopInfo info);
-
- /// <summary>
- /// Instructs another client to browse to a library item.
- /// </summary>
- /// <param name="sessionId">The session id.</param>
- /// <param name="itemId">The id of the item to browse to.</param>
- /// <param name="itemName">The name of the item to browse to.</param>
- /// <param name="itemType">The type of the item to browse to.</param>
- /// <returns>Task.</returns>
- Task SendBrowseCommandAsync(string sessionId, string itemId, string itemName, string itemType);
-
- /// <summary>
- /// Sends the playstate command async.
- /// </summary>
- /// <param name="sessionId">The session id.</param>
- /// <param name="request">The request.</param>
- /// <returns>Task.</returns>
- Task SendPlaystateCommandAsync(string sessionId, PlaystateRequest request);
-
- /// <summary>
- /// Sends the play command async.
- /// </summary>
- /// <param name="sessionId">The session id.</param>
- /// <param name="request">The request.</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">sessionId
- /// or
- /// request</exception>
- Task SendPlayCommandAsync(string sessionId, PlayRequest request);
-
- /// <summary>
- /// Sends the command asynchronous.
- /// </summary>
- /// <param name="sessionId">The session identifier.</param>
- /// <param name="command">The command.</param>
- /// <returns>Task.</returns>
- Task SendCommandAsync(string sessionId, GeneralCommand command);
-
- /// <summary>
- /// Sends the string.
- /// </summary>
- /// <param name="sessionId">The session identifier.</param>
- /// <param name="text">The text.</param>
- /// <returns>Task.</returns>
- Task SendString(string sessionId, string text);
-
- /// <summary>
- /// Sets the volume.
- /// </summary>
- /// <param name="sessionId">The session identifier.</param>
- /// <param name="volume">The volume.</param>
- /// <returns>Task.</returns>
- Task SetVolume(string sessionId, int volume);
-
- /// <summary>
- /// Stops the transcoding processes.
- /// </summary>
- /// <param name="deviceId">The device identifier.</param>
- /// <param name="streamId">The stream identifier.</param>
- /// <returns>Task.</returns>
- Task StopTranscodingProcesses(string deviceId, string streamId);
-
- /// <summary>
- /// Sets the index of the audio stream.
- /// </summary>
- /// <param name="sessionId">The session identifier.</param>
- /// <param name="index">The index.</param>
- /// <returns>Task.</returns>
- Task SetAudioStreamIndex(string sessionId, int index);
-
- /// <summary>
- /// Sets the index of the subtitle stream.
- /// </summary>
- /// <param name="sessionId">The session identifier.</param>
- /// <param name="index">The index.</param>
- /// <returns>Task.</returns>
- Task SetSubtitleStreamIndex(string sessionId, int? index);
-
- /// <summary>
- /// Instructs the client to display a message to the user
- /// </summary>
- /// <param name="sessionId">The session id.</param>
- /// <param name="command">The command.</param>
- /// <returns>Task.</returns>
- Task SendMessageCommandAsync(string sessionId, MessageCommand command);
-
- /// <summary>
- /// Clears a user's rating for an item
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <returns>Task{UserItemDataDto}.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task<UserItemDataDto> ClearUserItemRatingAsync(string itemId, string userId);
-
- /// <summary>
- /// Updates a user's rating for an item, based on likes or dislikes
- /// </summary>
- /// <param name="itemId">The item id.</param>
- /// <param name="userId">The user id.</param>
- /// <param name="likes">if set to <c>true</c> [likes].</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- Task<UserItemDataDto> UpdateUserItemRatingAsync(string itemId, string userId, bool likes);
-
- /// <summary>
- /// Authenticates a user and returns the result
- /// </summary>
- /// <param name="username">The username.</param>
- /// <param name="password">The password.</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- Task<AuthenticationResult> AuthenticateUserAsync(string username,
- string password);
-
- /// <summary>
- /// Updates the server configuration async.
- /// </summary>
- /// <param name="configuration">The configuration.</param>
- /// <returns>Task.</returns>
- /// <exception cref="ArgumentNullException">configuration</exception>
- Task UpdateServerConfigurationAsync(ServerConfiguration configuration);
-
- /// <summary>
- /// Updates the scheduled task triggers.
- /// </summary>
- /// <param name="id">The id.</param>
- /// <param name="triggers">The triggers.</param>
- /// <returns>Task{RequestResult}.</returns>
- /// <exception cref="ArgumentNullException">id</exception>
- Task UpdateScheduledTaskTriggersAsync(string id, TaskTriggerInfo[] triggers);
-
- /// <summary>
- /// Gets the display preferences.
- /// </summary>
- /// <param name="id">The id.</param>
- /// <param name="userId">The user id.</param>
- /// <param name="client">The client.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{BaseItemDto}.</returns>
- Task<DisplayPreferences> GetDisplayPreferencesAsync(string id, string userId, string client, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Updates display preferences for a user
- /// </summary>
- /// <param name="displayPreferences">The display preferences.</param>
- /// <param name="userId">The user id.</param>
- /// <param name="client">The client.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{DisplayPreferences}.</returns>
- /// <exception cref="System.ArgumentNullException">userId</exception>
- Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Posts a set of data to a url, and deserializes the return stream into T
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="url">The URL.</param>
- /// <param name="args">The args.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{``0}.</returns>
- Task<T> PostAsync<T>(string url, Dictionary<string, string> args, CancellationToken cancellationToken = default(CancellationToken))
- where T : class;
-
- /// <summary>
- /// This is a helper around getting a stream from the server that contains serialized data
- /// </summary>
- /// <param name="url">The URL.</param>
- /// <returns>Task{Stream}.</returns>
- Task<Stream> GetSerializedStreamAsync(string url);
-
- /// <summary>
- /// Gets the json serializer.
- /// </summary>
- /// <value>The json serializer.</value>
- IJsonSerializer JsonSerializer { get; set; }
-
- /// <summary>
- /// Gets or sets the server address
- /// </summary>
- /// <value>The server address.</value>
- string ServerAddress { get; }
-
- /// <summary>
- /// Gets or sets the type of the client.
- /// </summary>
- /// <value>The type of the client.</value>
- string ClientName { get; set; }
-
- /// <summary>
- /// Gets the device.
- /// </summary>
- /// <value>The device.</value>
- IDevice Device { get; }
-
- /// <summary>
- /// Gets or sets the name of the device.
- /// </summary>
- /// <value>The name of the device.</value>
- string DeviceName { get; }
-
- /// <summary>
- /// Gets or sets the device id.
- /// </summary>
- /// <value>The device id.</value>
- string DeviceId { get; }
-
- /// <summary>
- /// Gets or sets the current user id.
- /// </summary>
- /// <value>The current user id.</value>
- string CurrentUserId { get; }
-
- /// <summary>
- /// Gets the access token.
- /// </summary>
- /// <value>The access token.</value>
- string AccessToken { get; }
-
- /// <summary>
- /// Sets the authentication information.
- /// </summary>
- /// <param name="accessToken">The access token.</param>
- /// <param name="userId">The user identifier.</param>
- void SetAuthenticationInfo(string accessToken, string userId);
-
- /// <summary>
- /// Sets the authentication information.
- /// </summary>
- /// <param name="accessToken">The access token.</param>
- void SetAuthenticationInfo(string accessToken);
-
- /// <summary>
- /// Clears the authentication information.
- /// </summary>
- void ClearAuthenticationInfo();
-
- /// <summary>
- /// Changes the server location.
- /// </summary>
- /// <param name="address">The address.</param>
- /// <param name="keepExistingAuth">if set to <c>true</c> [keep existing authentication].</param>
- void ChangeServerLocation(string address, bool keepExistingAuth = false);
-
- /// <summary>
- /// Starts the receiving synchronize job updates.
- /// </summary>
- /// <param name="intervalMs">The interval ms.</param>
- /// <param name="jobId">The job identifier.</param>
- /// <returns>Task.</returns>
- Task StartReceivingSyncJobUpdates(int intervalMs, string jobId);
-
- /// <summary>
- /// Stops the receiving synchronize job updates.
- /// </summary>
- /// <returns>Task.</returns>
- Task StopReceivingSyncJobUpdates();
-
- /// <summary>
- /// Starts the receiving synchronize jobs updates.
- /// </summary>
- /// <param name="intervalMs">The interval ms.</param>
- /// <param name="userId">The user identifier.</param>
- /// <param name="targetId">The target identifier.</param>
- /// <returns>Task.</returns>
- Task StartReceivingSyncJobsUpdates(int intervalMs, string userId, string targetId);
-
- /// <summary>
- /// Stops the receiving synchronize jobs updates.
- /// </summary>
- /// <returns>Task.</returns>
- Task StopReceivingSyncJobsUpdates();
-
- /// <summary>
- /// Starts the receiving session updates.
- /// </summary>
- /// <param name="intervalMs">The interval ms.</param>
- /// <returns>Task.</returns>
- Task StartReceivingSessionUpdates(int intervalMs);
-
- /// <summary>
- /// Stops the receiving session updates.
- /// </summary>
- /// <returns>Task.</returns>
- Task StopReceivingSessionUpdates();
-
- /// <summary>
- /// Gets the image URL.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">item</exception>
- string GetImageUrl(BaseItemDto item, ImageOptions options);
-
- /// <summary>
- /// Gets the image URL.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetImageUrl(ChannelInfoDto item, ImageOptions options);
-
- /// <summary>
- /// Gets the subtitle URL.
- /// </summary>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetSubtitleUrl(SubtitleDownloadOptions options);
-
- /// <summary>
- /// Gets an image url that can be used to download an image from the api
- /// </summary>
- /// <param name="itemId">The Id of the item</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">itemId</exception>
- string GetImageUrl(string itemId, ImageOptions options);
-
- /// <summary>
- /// Gets the user image URL.
- /// </summary>
- /// <param name="user">The user.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">user</exception>
- string GetUserImageUrl(UserDto user, ImageOptions options);
-
- /// <summary>
- /// Gets an image url that can be used to download an image from the api
- /// </summary>
- /// <param name="userId">The Id of the user</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">userId</exception>
- string GetUserImageUrl(string userId, ImageOptions options);
-
- /// <summary>
- /// Gets the person image URL.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">item</exception>
- string GetPersonImageUrl(BaseItemPerson item, ImageOptions options);
-
- /// <summary>
- /// Gets an image url that can be used to download an image from the api
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">name</exception>
- string GetGenreImageUrl(string name, ImageOptions options);
-
- /// <summary>
- /// Gets the music genre image URL.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetMusicGenreImageUrl(string name, ImageOptions options);
-
- /// <summary>
- /// Gets the game genre image URL.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetGameGenreImageUrl(string name, ImageOptions options);
-
- /// <summary>
- /// 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.
- /// </summary>
- /// <param name="item">A given item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String[][].</returns>
- /// <exception cref="ArgumentNullException">item</exception>
- string[] GetBackdropImageUrls(BaseItemDto item, ImageOptions options);
-
- /// <summary>
- /// 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.
- /// </summary>
- /// <param name="item">A given item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- /// <exception cref="ArgumentNullException">item</exception>
- string GetLogoImageUrl(BaseItemDto item, ImageOptions options);
-
- /// <summary>
- /// Gets the art image URL.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetArtImageUrl(BaseItemDto item, ImageOptions options);
-
- /// <summary>
- /// Gets the thumb image URL.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="options">The options.</param>
- /// <returns>System.String.</returns>
- string GetThumbImageUrl(BaseItemDto item, ImageOptions options);
-
- /// <summary>
- /// Gets the live tv information asynchronous.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{LiveTvInfo}.</returns>
- Task<LiveTvInfo> GetLiveTvInfoAsync(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv channels asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{LiveTvInfo}.</returns>
- Task<QueryResult<ChannelInfoDto>> GetLiveTvChannelsAsync(LiveTvChannelQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv channel asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="userId">The user identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ChannelInfoDto}.</returns>
- Task<ChannelInfoDto> GetLiveTvChannelAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv recordings asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{RecordingInfoDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetLiveTvRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv recording asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="userId">The user identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{RecordingInfoDto}.</returns>
- Task<BaseItemDto> GetLiveTvRecordingAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv recording groups asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{RecordingGroupDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetLiveTvRecordingGroupsAsync(RecordingGroupQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv recording group asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="userId">The user identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{RecordingGroupDto}.</returns>
- Task<BaseItemDto> GetLiveTvRecordingGroupAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv timers asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{TimerInfoDto}}.</returns>
- Task<QueryResult<TimerInfoDto>> GetLiveTvTimersAsync(TimerQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv programs asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetLiveTvProgramsAsync(ProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv program asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="userId">The user identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ProgramInfoDto}.</returns>
- Task<BaseItemDto> GetLiveTvProgramAsync(string id, string userId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the recommended live tv programs asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{ProgramInfoDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetRecommendedLiveTvProgramsAsync(RecommendedProgramQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Creates the live tv timer asynchronous.
- /// </summary>
- /// <param name="timer">The timer.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task CreateLiveTvTimerAsync(BaseTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Updates the live tv timer asynchronous.
- /// </summary>
- /// <param name="timer">The timer.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UpdateLiveTvTimerAsync(TimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Creates the live tv series timer asynchronous.
- /// </summary>
- /// <param name="timer">The timer.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task CreateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Updates the live tv series timer asynchronous.
- /// </summary>
- /// <param name="timer">The timer.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UpdateLiveTvSeriesTimerAsync(SeriesTimerInfoDto timer, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv timer asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{TimerInfoDto}.</returns>
- Task<TimerInfoDto> GetLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv series timers asynchronous.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{SeriesTimerInfoDto}}.</returns>
- Task<QueryResult<SeriesTimerInfoDto>> GetLiveTvSeriesTimersAsync(SeriesTimerQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv series timer asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{SeriesTimerInfoDto}.</returns>
- Task<SeriesTimerInfoDto> GetLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Cancels the live tv timer asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task CancelLiveTvTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Cancels the live tv series timer asynchronous.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task CancelLiveTvSeriesTimerAsync(string id, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the default timer information.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{SeriesTimerInfoDto}.</returns>
- Task<SeriesTimerInfoDto> GetDefaultLiveTvTimerInfo(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the live tv guide information.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{GuideInfo}.</returns>
- Task<GuideInfo> GetLiveTvGuideInfo(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the default timer information.
- /// </summary>
- /// <param name="programId">The program identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{SeriesTimerInfoDto}.</returns>
- Task<SeriesTimerInfoDto> GetDefaultLiveTvTimerInfo(string programId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the channel features.
- /// </summary>
- /// <param name="channelId">The channel identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{ChannelFeatures}.</returns>
- Task<ChannelFeatures> GetChannelFeatures(string channelId, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the channel items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{BaseItemDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the channels.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{BaseItemDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetChannels(ChannelQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the latest channel items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{QueryResult{BaseItemDto}}.</returns>
- Task<QueryResult<BaseItemDto>> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Creates the playlist.
- /// </summary>
- /// <param name="request">The request.</param>
- /// <returns>Task&lt;PlaylistCreationResult&gt;.</returns>
- Task<PlaylistCreationResult> CreatePlaylist(PlaylistCreationRequest request);
-
- /// <summary>
- /// Adds to playlist.
- /// </summary>
- /// <param name="playlistId">The playlist identifier.</param>
- /// <param name="itemIds">The item ids.</param>
- /// <param name="userId">The user identifier.</param>
- /// <returns>Task.</returns>
- Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId);
-
- /// <summary>
- /// Removes from playlist.
- /// </summary>
- /// <param name="playlistId">The playlist identifier.</param>
- /// <param name="entryIds">The entry ids.</param>
- /// <returns>Task.</returns>
- Task RemoveFromPlaylist(string playlistId, IEnumerable<string> entryIds);
-
- /// <summary>
- /// Gets the playlist items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;QueryResult&lt;BaseItemDto&gt;&gt;.</returns>
- Task<QueryResult<BaseItemDto>> GetPlaylistItems(PlaylistItemQuery query);
-
- /// <summary>
- /// Sends the context message asynchronous.
- /// </summary>
- /// <param name="itemType">Type of the item.</param>
- /// <param name="itemId">The item identifier.</param>
- /// <param name="itemName">Name of the item.</param>
- /// <param name="context">The context.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task SendContextMessageAsync(string itemType, string itemId, string itemName, string context,
- CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the content upload history.
- /// </summary>
- /// <param name="deviceId">The device identifier.</param>
- /// <returns>Task&lt;ContentUploadHistory&gt;.</returns>
- Task<ContentUploadHistory> GetContentUploadHistory(string deviceId);
-
- /// <summary>
- /// Uploads the file.
- /// </summary>
- /// <param name="stream">The stream.</param>
- /// <param name="file">The file.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UploadFile(Stream stream,
- LocalFileInfo file,
- CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the devices options options.
- /// </summary>
- /// <returns>Task&lt;DevicesOptions&gt;.</returns>
- Task<DevicesOptions> GetDevicesOptions();
-
- /// <summary>
- /// Updates the item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns>Task.</returns>
- Task UpdateItem(BaseItemDto item);
-
- /// <summary>
- /// Creates the synchronize job.
- /// </summary>
- /// <param name="request">The request.</param>
- /// <returns>Task&lt;SyncJob&gt;.</returns>
- Task<SyncJob> CreateSyncJob(SyncJobRequest request);
-
- /// <summary>
- /// Updates the synchronize job.
- /// </summary>
- /// <param name="job">The job.</param>
- /// <returns>Task.</returns>
- Task UpdateSyncJob(SyncJob job);
-
- /// <summary>
- /// Gets the synchronize jobs.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;QueryResult&lt;SyncJob&gt;&gt;.</returns>
- Task<QueryResult<SyncJob>> GetSyncJobs(SyncJobQuery query);
-
- /// <summary>
- /// Gets the synchronize job items.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;QueryResult&lt;SyncJobItem&gt;&gt;.</returns>
- Task<QueryResult<SyncJobItem>> GetSyncJobItems(SyncJobItemQuery query);
-
- /// <summary>
- /// Reports the synchronize job item transferred.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task ReportSyncJobItemTransferred(string id);
-
- /// <summary>
- /// Gets the synchronize job item file.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;Stream&gt;.</returns>
- Task<Stream> GetSyncJobItemFile(string id, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Gets the synchronize job item additional file.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="name">The name.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;Stream&gt;.</returns>
- Task<Stream> GetSyncJobItemAdditionalFile(string id, string name, CancellationToken cancellationToken);
-
- /// <summary>
- /// Opens the web socket.
- /// </summary>
- /// <param name="webSocketFactory">The web socket factory.</param>
- /// <param name="keepAliveTimerMs">The keep alive timer ms.</param>
- void OpenWebSocket(Func<IClientWebSocket> webSocketFactory, int keepAliveTimerMs = 60000);
-
- /// <summary>
- /// Reports the offline actions.
- /// </summary>
- /// <param name="actions">The actions.</param>
- /// <returns>Task.</returns>
- Task ReportOfflineActions(List<UserAction> actions);
-
- /// <summary>
- /// Gets the ready synchronize items.
- /// </summary>
- /// <param name="targetId">The target identifier.</param>
- /// <returns>List&lt;SyncedItem&gt;.</returns>
- Task<List<SyncedItem>> GetReadySyncItems(string targetId);
-
- /// <summary>
- /// Synchronizes the data.
- /// </summary>
- /// <param name="request">The request.</param>
- /// <returns>Task&lt;SyncDataResponse&gt;.</returns>
- Task<SyncDataResponse> SyncData(SyncDataRequest request);
- /// <summary>
- /// Gets the synchronize job item file URL.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>System.String.</returns>
- string GetSyncJobItemFileUrl(string id);
- /// <summary>
- /// Marks the synchronize job item for removal.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task MarkSyncJobItemForRemoval(string id);
- /// <summary>
- /// Unmarks the synchronize job item for removal.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task UnmarkSyncJobItemForRemoval(string id);
- /// <summary>
- /// Queues the failed synchronize job item for retry.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task QueueFailedSyncJobItemForRetry(string id);
- /// <summary>
- /// Cancels the synchronize job.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task CancelSyncJob(string id);
- /// <summary>
- /// Cancels the synchronize job item.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task CancelSyncJobItem(string id);
- /// <summary>
- /// Enables the cancelled synchronize job item.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task EnableCancelledSyncJobItem(string id);
- /// <summary>
- /// Gets the synchronize options.
- /// </summary>
- /// <param name="jobInfo">The job information.</param>
- /// <returns>Task&lt;SyncOptions&gt;.</returns>
- Task<SyncDialogOptions> GetSyncOptions(SyncJobRequest jobInfo);
- /// <summary>
- /// Gets the synchronize options.
- /// </summary>
- /// <param name="jobInfo">The job information.</param>
- /// <returns>Task&lt;SyncDialogOptions&gt;.</returns>
- Task<SyncDialogOptions> GetSyncOptions(SyncJob jobInfo);
- /// <summary>
- /// Gets the movie recommendations.
- /// </summary>
- /// <param name="query">The query.</param>
- /// <returns>Task&lt;List&lt;RecommendationDto&gt;&gt;.</returns>
- Task<List<RecommendationDto>> GetMovieRecommendations(MovieRecommendationQuery query);
- /// <summary>
- /// Opens the live stream.
- /// </summary>
- /// <param name="request">The request.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;LiveStreamResponse&gt;.</returns>
- Task<LiveStreamResponse> OpenLiveStream(LiveStreamRequest request, CancellationToken cancellationToken);
- /// <summary>
- /// Cancels the synchronize library items.
- /// </summary>
- /// <param name="targetId">The target identifier.</param>
- /// <param name="itemIds">The item ids.</param>
- /// <returns>Task.</returns>
- Task CancelSyncLibraryItems(string targetId, IEnumerable<string> itemIds);
- /// <summary>
- /// Gets the supported bitrate.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;System.Int32&gt;.</returns>
- Task<int> DetectMaxBitrate(CancellationToken cancellationToken);
-
- /// <summary>
- /// Gets the end point information.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>System.Threading.Tasks.Task&lt;MediaBrowser.Model.Net.EndPointInfo&gt;.</returns>
- Task<EndPointInfo> GetEndPointInfo(CancellationToken cancellationToken);
- }
-} \ No newline at end of file
diff --git a/MediaBrowser.Model/ApiClient/IClientWebSocket.cs b/MediaBrowser.Model/ApiClient/IClientWebSocket.cs
deleted file mode 100644
index ca3a761d4..000000000
--- a/MediaBrowser.Model/ApiClient/IClientWebSocket.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using MediaBrowser.Model.Net;
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Model.ApiClient
-{
- /// <summary>
- /// Interface IClientWebSocket
- /// </summary>
- public interface IClientWebSocket : IDisposable
- {
- /// <summary>
- /// Occurs when [closed].
- /// </summary>
- event EventHandler Closed;
-
- /// <summary>
- /// Gets or sets the state.
- /// </summary>
- /// <value>The state.</value>
- WebSocketState State { get; }
-
- /// <summary>
- /// Connects the async.
- /// </summary>
- /// <param name="url">The URL.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task ConnectAsync(string url, CancellationToken cancellationToken);
-
- /// <summary>
- /// Gets or sets the receive action.
- /// </summary>
- /// <value>The receive action.</value>
- Action<byte[]> OnReceiveBytes { get; set; }
-
- /// <summary>
- /// Gets or sets the on receive.
- /// </summary>
- /// <value>The on receive.</value>
- Action<string> OnReceive { get; set; }
-
- /// <summary>
- /// Sends the async.
- /// </summary>
- /// <param name="bytes">The bytes.</param>
- /// <param name="type">The type.</param>
- /// <param name="endOfMessage">if set to <c>true</c> [end of message].</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task SendAsync(byte[] bytes, WebSocketMessageType type, bool endOfMessage, CancellationToken cancellationToken);
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs
deleted file mode 100644
index 083f230bc..000000000
--- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs
+++ /dev/null
@@ -1,192 +0,0 @@
-using MediaBrowser.Model.Connect;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Session;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public interface IConnectionManager
- {
- /// <summary>
- /// Occurs when [connected].
- /// </summary>
- event EventHandler<GenericEventArgs<ConnectionResult>> Connected;
- /// <summary>
- /// Occurs when [local user sign in].
- /// </summary>
- event EventHandler<GenericEventArgs<UserDto>> LocalUserSignIn;
- /// <summary>
- /// Occurs when [connect user sign in].
- /// </summary>
- event EventHandler<GenericEventArgs<ConnectUser>> ConnectUserSignIn;
- /// <summary>
- /// Occurs when [local user sign out].
- /// </summary>
- event EventHandler<GenericEventArgs<IApiClient>> LocalUserSignOut;
- /// <summary>
- /// Occurs when [connect user sign out].
- /// </summary>
- event EventHandler<EventArgs> ConnectUserSignOut;
- /// <summary>
- /// Occurs when [remote logged out].
- /// </summary>
- event EventHandler<EventArgs> RemoteLoggedOut;
-
- /// <summary>
- /// Gets the device.
- /// </summary>
- /// <value>The device.</value>
- IDevice Device { get; }
-
- /// <summary>
- /// Gets the connect user.
- /// </summary>
- /// <value>The connect user.</value>
- ConnectUser ConnectUser { get; }
-
- /// <summary>
- /// Gets or sets a value indicating whether [save local credentials].
- /// </summary>
- /// <value><c>true</c> if [save local credentials]; otherwise, <c>false</c>.</value>
- bool SaveLocalCredentials { get; set; }
-
- /// <summary>
- /// Gets the client capabilities.
- /// </summary>
- /// <value>The client capabilities.</value>
- ClientCapabilities ClientCapabilities { get; }
-
- /// <summary>
- /// Gets the API client.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns>IApiClient.</returns>
- IApiClient GetApiClient(IHasServerId item);
-
- /// <summary>
- /// Gets the API client.
- /// </summary>
- /// <param name="serverId">The server identifier.</param>
- /// <returns>IApiClient.</returns>
- IApiClient GetApiClient(string serverId);
-
- /// <summary>
- /// Connects the specified cancellation token.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task<ConnectionResult> Connect(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Connects the specified API client.
- /// </summary>
- /// <param name="apiClient">The API client.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task<ConnectionResult> Connect(IApiClient apiClient, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Connects the specified server.
- /// </summary>
- /// <param name="server">The server.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task<ConnectionResult> Connect(ServerInfo server, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Connects the specified server.
- /// </summary>
- /// <param name="server">The server.</param>
- /// <param name="options">The options.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task<ConnectionResult> Connect(ServerInfo server, ConnectionOptions options, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Connects the specified server.
- /// </summary>
- /// <param name="address">The address.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task<ConnectionResult> Connect(string address, CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Logouts this instance.
- /// </summary>
- /// <returns>Task&lt;ConnectionResult&gt;.</returns>
- Task Logout();
-
- /// <summary>
- /// Logins to connect.
- /// </summary>
- /// <returns>Task.</returns>
- Task LoginToConnect(string username, string password);
-
- /// <summary>
- /// Gets the active api client instance
- /// </summary>
- IApiClient CurrentApiClient { get; }
-
- /// <summary>
- /// Creates the pin.
- /// </summary>
- /// <returns>Task&lt;PinCreationResult&gt;.</returns>
- Task<PinCreationResult> CreatePin();
-
- /// <summary>
- /// Gets the pin status.
- /// </summary>
- /// <param name="pin">The pin.</param>
- /// <returns>Task&lt;PinStatusResult&gt;.</returns>
- Task<PinStatusResult> GetPinStatus(PinCreationResult pin);
-
- /// <summary>
- /// Exchanges the pin.
- /// </summary>
- /// <param name="pin">The pin.</param>
- /// <returns>Task.</returns>
- Task ExchangePin(PinCreationResult pin);
-
- /// <summary>
- /// Gets the server information.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task&lt;ServerInfo&gt;.</returns>
- Task<ServerInfo> GetServerInfo(string id);
-
- /// <summary>
- /// Gets the available servers.
- /// </summary>
- /// <param name="cancellationToken">The cancellation token.</param>
- Task<List<ServerInfo>> GetAvailableServers(CancellationToken cancellationToken = default(CancellationToken));
-
- /// <summary>
- /// Authenticates an offline user with their password
- /// </summary>
- /// <param name="user">The user.</param>
- /// <param name="password">The password.</param>
- /// <param name="rememberCredentials">if set to <c>true</c> [remember credentials].</param>
- /// <returns>Task.</returns>
- Task AuthenticateOffline(UserDto user, string password, bool rememberCredentials);
-
- /// <summary>
- /// Gets the offline users.
- /// </summary>
- /// <returns>Task&lt;List&lt;UserDto&gt;&gt;.</returns>
- Task<List<UserDto>> GetOfflineUsers();
-
- /// <summary>
- /// Signups for connect.
- /// </summary>
- /// <param name="email">The email.</param>
- /// <param name="username">The username.</param>
- /// <param name="password">The password.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task<ConnectSignupResponse> SignupForConnect(string email, string username, string password, CancellationToken cancellationToken = default(CancellationToken));
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/IDevice.cs b/MediaBrowser.Model/ApiClient/IDevice.cs
deleted file mode 100644
index 7b67122fb..000000000
--- a/MediaBrowser.Model/ApiClient/IDevice.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using MediaBrowser.Model.Devices;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public interface IDevice
- {
- /// <summary>
- /// Occurs when [resume from sleep].
- /// </summary>
- event EventHandler<EventArgs> ResumeFromSleep;
- /// <summary>
- /// Gets the name of the device.
- /// </summary>
- /// <value>The name of the device.</value>
- string DeviceName { get; }
- /// <summary>
- /// Gets the device identifier.
- /// </summary>
- /// <value>The device identifier.</value>
- string DeviceId { get; }
- /// <summary>
- /// Gets the local images.
- /// </summary>
- /// <returns>IEnumerable&lt;LocalFileInfo&gt;.</returns>
- Task<IEnumerable<LocalFileInfo>> GetLocalPhotos();
- /// <summary>
- /// Gets the local videos.
- /// </summary>
- /// <returns>IEnumerable&lt;LocalFileInfo&gt;.</returns>
- Task<IEnumerable<LocalFileInfo>> GetLocalVideos();
- /// <summary>
- /// Uploads the file.
- /// </summary>
- /// <param name="file">The file.</param>
- /// <param name="apiClient">The API client.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task UploadFile(LocalFileInfo file, IApiClient apiClient, CancellationToken cancellationToken = default(CancellationToken));
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/IServerEvents.cs b/MediaBrowser.Model/ApiClient/IServerEvents.cs
deleted file mode 100644
index ae2d5d323..000000000
--- a/MediaBrowser.Model/ApiClient/IServerEvents.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Plugins;
-using MediaBrowser.Model.Session;
-using MediaBrowser.Model.Sync;
-using MediaBrowser.Model.Tasks;
-using MediaBrowser.Model.Updates;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Model.ApiClient
-{
- /// <summary>
- /// Interface IServerEvents
- /// </summary>
- public interface IServerEvents
- {
- /// <summary>
- /// Occurs when [user deleted].
- /// </summary>
- event EventHandler<GenericEventArgs<string>> UserDeleted;
- /// <summary>
- /// Occurs when [scheduled task ended].
- /// </summary>
- event EventHandler<GenericEventArgs<TaskResult>> ScheduledTaskEnded;
- /// <summary>
- /// Occurs when [package installing].
- /// </summary>
- event EventHandler<GenericEventArgs<InstallationInfo>> PackageInstalling;
- /// <summary>
- /// Occurs when [package installation failed].
- /// </summary>
- event EventHandler<GenericEventArgs<InstallationInfo>> PackageInstallationFailed;
- /// <summary>
- /// Occurs when [package installation completed].
- /// </summary>
- event EventHandler<GenericEventArgs<InstallationInfo>> PackageInstallationCompleted;
- /// <summary>
- /// Occurs when [package installation cancelled].
- /// </summary>
- event EventHandler<GenericEventArgs<InstallationInfo>> PackageInstallationCancelled;
- /// <summary>
- /// Occurs when [user updated].
- /// </summary>
- event EventHandler<GenericEventArgs<UserDto>> UserUpdated;
- /// <summary>
- /// Occurs when [plugin uninstalled].
- /// </summary>
- event EventHandler<GenericEventArgs<PluginInfo>> PluginUninstalled;
- /// <summary>
- /// Occurs when [library changed].
- /// </summary>
- event EventHandler<GenericEventArgs<LibraryUpdateInfo>> LibraryChanged;
- /// <summary>
- /// Occurs when [browse command].
- /// </summary>
- event EventHandler<GenericEventArgs<BrowseRequest>> BrowseCommand;
- /// <summary>
- /// Occurs when [play command].
- /// </summary>
- event EventHandler<GenericEventArgs<PlayRequest>> PlayCommand;
- /// <summary>
- /// Occurs when [playstate command].
- /// </summary>
- event EventHandler<GenericEventArgs<PlaystateRequest>> PlaystateCommand;
- /// <summary>
- /// Occurs when [message command].
- /// </summary>
- event EventHandler<GenericEventArgs<MessageCommand>> MessageCommand;
- /// <summary>
- /// Occurs when [system command].
- /// </summary>
- event EventHandler<GenericEventArgs<GeneralCommandEventArgs>> GeneralCommand;
- /// <summary>
- /// Occurs when [notification added].
- /// </summary>
- event EventHandler<EventArgs> NotificationAdded;
- /// <summary>
- /// Occurs when [notification updated].
- /// </summary>
- event EventHandler<EventArgs> NotificationUpdated;
- /// <summary>
- /// Occurs when [notifications marked read].
- /// </summary>
- event EventHandler<EventArgs> NotificationsMarkedRead;
- /// <summary>
- /// Occurs when [server restarting].
- /// </summary>
- event EventHandler<EventArgs> ServerRestarting;
- /// <summary>
- /// Occurs when [server shutting down].
- /// </summary>
- event EventHandler<EventArgs> ServerShuttingDown;
- /// <summary>
- /// Occurs when [send text command].
- /// </summary>
- event EventHandler<GenericEventArgs<string>> SendStringCommand;
- /// <summary>
- /// Occurs when [set volume command].
- /// </summary>
- event EventHandler<GenericEventArgs<int>> SetVolumeCommand;
- /// <summary>
- /// Occurs when [set audio stream index command].
- /// </summary>
- event EventHandler<GenericEventArgs<int>> SetAudioStreamIndexCommand;
- /// <summary>
- /// Occurs when [set video stream index command].
- /// </summary>
- event EventHandler<GenericEventArgs<int>> SetSubtitleStreamIndexCommand;
- /// <summary>
- /// Occurs when [sessions updated].
- /// </summary>
- event EventHandler<GenericEventArgs<SessionUpdatesEventArgs>> SessionsUpdated;
- /// <summary>
- /// Occurs when [restart required].
- /// </summary>
- event EventHandler<EventArgs> RestartRequired;
- /// <summary>
- /// Occurs when [user data changed].
- /// </summary>
- event EventHandler<GenericEventArgs<UserDataChangeInfo>> UserDataChanged;
- /// <summary>
- /// Occurs when [playback start].
- /// </summary>
- event EventHandler<GenericEventArgs<SessionInfoDto>> PlaybackStart;
- /// <summary>
- /// Occurs when [playback stopped].
- /// </summary>
- event EventHandler<GenericEventArgs<SessionInfoDto>> PlaybackStopped;
- /// <summary>
- /// Occurs when [session ended].
- /// </summary>
- event EventHandler<GenericEventArgs<SessionInfoDto>> SessionEnded;
- /// <summary>
- /// Occurs when [synchronize job created].
- /// </summary>
- event EventHandler<GenericEventArgs<SyncJobCreationResult>> SyncJobCreated;
- /// <summary>
- /// Occurs when [synchronize job cancelled].
- /// </summary>
- event EventHandler<GenericEventArgs<SyncJob>> SyncJobCancelled;
- /// <summary>
- /// Occurs when [synchronize jobs updated].
- /// </summary>
- event EventHandler<GenericEventArgs<List<SyncJob>>> SyncJobsUpdated;
- /// <summary>
- /// Occurs when [synchronize job updated].
- /// </summary>
- event EventHandler<GenericEventArgs<CompleteSyncJobInfo>> SyncJobUpdated;
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/NetworkStatus.cs b/MediaBrowser.Model/ApiClient/NetworkStatus.cs
deleted file mode 100644
index 715087607..000000000
--- a/MediaBrowser.Model/ApiClient/NetworkStatus.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class NetworkStatus
- {
- /// <summary>
- /// Gets or sets a value indicating whether this instance is network available.
- /// </summary>
- /// <value><c>true</c> if this instance is network available; otherwise, <c>false</c>.</value>
- public bool IsNetworkAvailable { get; set; }
- /// <summary>
- /// Gets or sets a value indicating whether this instance is local network available.
- /// </summary>
- /// <value><c>null</c> if [is local network available] contains no value, <c>true</c> if [is local network available]; otherwise, <c>false</c>.</value>
- public bool? IsLocalNetworkAvailable { get; set; }
- /// <summary>
- /// Gets the is any local network available.
- /// </summary>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
- public bool GetIsAnyLocalNetworkAvailable()
- {
- if (!IsLocalNetworkAvailable.HasValue)
- {
- return IsNetworkAvailable;
- }
-
- return IsLocalNetworkAvailable.Value;
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/RemoteLogoutReason.cs b/MediaBrowser.Model/ApiClient/RemoteLogoutReason.cs
deleted file mode 100644
index 237949c69..000000000
--- a/MediaBrowser.Model/ApiClient/RemoteLogoutReason.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-
-namespace MediaBrowser.Model.ApiClient
-{
- public enum RemoteLogoutReason
- {
- GeneralAccesError = 0,
- ParentalControlRestriction = 1
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs
deleted file mode 100644
index ddeb7e546..000000000
--- a/MediaBrowser.Model/ApiClient/ServerCredentials.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-using MediaBrowser.Model.Extensions;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class ServerCredentials
- {
- public List<ServerInfo> Servers { get; set; }
-
- public string ConnectUserId { get; set; }
- public string ConnectAccessToken { get; set; }
-
- public ServerCredentials()
- {
- Servers = new List<ServerInfo>();
- }
-
- public void AddOrUpdateServer(ServerInfo server)
- {
- if (server == null)
- {
- throw new ArgumentNullException("server");
- }
-
- // Clone the existing list of servers
- var list = new List<ServerInfo>();
- foreach (ServerInfo serverInfo in Servers)
- {
- list.Add(serverInfo);
- }
-
- var index = FindIndex(list, server.Id);
-
- if (index != -1)
- {
- var existing = list[index];
-
- // Take the most recent DateLastAccessed
- if (server.DateLastAccessed > existing.DateLastAccessed)
- {
- existing.DateLastAccessed = server.DateLastAccessed;
- }
-
- existing.UserLinkType = server.UserLinkType;
-
- if (!string.IsNullOrEmpty(server.AccessToken))
- {
- existing.AccessToken = server.AccessToken;
- existing.UserId = server.UserId;
- }
- if (!string.IsNullOrEmpty(server.ExchangeToken))
- {
- existing.ExchangeToken = server.ExchangeToken;
- }
- if (!string.IsNullOrEmpty(server.RemoteAddress))
- {
- existing.RemoteAddress = server.RemoteAddress;
- }
- if (!string.IsNullOrEmpty(server.ConnectServerId))
- {
- existing.ConnectServerId = server.ConnectServerId;
- }
- if (!string.IsNullOrEmpty(server.LocalAddress))
- {
- existing.LocalAddress = server.LocalAddress;
- }
- if (!string.IsNullOrEmpty(server.ManualAddress))
- {
- existing.ManualAddress = server.ManualAddress;
- }
- if (!string.IsNullOrEmpty(server.Name))
- {
- existing.Name = server.Name;
- }
- if (server.WakeOnLanInfos != null && server.WakeOnLanInfos.Count > 0)
- {
- existing.WakeOnLanInfos = new List<WakeOnLanInfo>();
- foreach (WakeOnLanInfo info in server.WakeOnLanInfos)
- {
- existing.WakeOnLanInfos.Add(info);
- }
- }
- if (server.LastConnectionMode.HasValue)
- {
- existing.LastConnectionMode = server.LastConnectionMode;
- }
- foreach (ServerUserInfo user in server.Users)
- {
- existing.AddOrUpdate(user);
- }
- }
- else
- {
- list.Add(server);
- }
-
- Servers = list;
- }
-
- private int FindIndex(List<ServerInfo> servers, string id)
- {
- var index = 0;
-
- foreach (ServerInfo server in servers)
- {
- if (StringHelper.EqualsIgnoreCase(id, server.Id))
- {
- return index;
- }
-
- index++;
- }
-
- return -1;
- }
-
- public ServerInfo GetServer(string id)
- {
- foreach (ServerInfo server in Servers)
- {
- if (StringHelper.EqualsIgnoreCase(id, server.Id))
- {
- return server;
- }
- }
-
- return null;
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ServerInfo.cs b/MediaBrowser.Model/ApiClient/ServerInfo.cs
deleted file mode 100644
index 48995e80a..000000000
--- a/MediaBrowser.Model/ApiClient/ServerInfo.cs
+++ /dev/null
@@ -1,127 +0,0 @@
-using MediaBrowser.Model.Connect;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.System;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class ServerInfo
- {
- public List<ServerUserInfo> Users { get; set; }
-
- public String Name { get; set; }
- public String Id { get; set; }
- public String ConnectServerId { get; set; }
- public String LocalAddress { get; set; }
- public String RemoteAddress { get; set; }
- public String ManualAddress { get; set; }
- public String UserId { get; set; }
- public String AccessToken { get; set; }
- public List<WakeOnLanInfo> WakeOnLanInfos { get; set; }
- public DateTime DateLastAccessed { get; set; }
- public String ExchangeToken { get; set; }
- public UserLinkType? UserLinkType { get; set; }
- public ConnectionMode? LastConnectionMode { get; set; }
-
- public ServerInfo()
- {
- WakeOnLanInfos = new List<WakeOnLanInfo>();
- Users = new List<ServerUserInfo>();
- }
-
- public void ImportInfo(PublicSystemInfo systemInfo)
- {
- Name = systemInfo.ServerName;
- Id = systemInfo.Id;
-
- if (!string.IsNullOrEmpty(systemInfo.LocalAddress))
- {
- LocalAddress = systemInfo.LocalAddress;
- }
-
- if (!string.IsNullOrEmpty(systemInfo.WanAddress))
- {
- RemoteAddress = systemInfo.WanAddress;
- }
-
- var fullSystemInfo = systemInfo as SystemInfo;
-
- if (fullSystemInfo != null)
- {
- WakeOnLanInfos = new List<WakeOnLanInfo>();
-
- if (!string.IsNullOrEmpty(fullSystemInfo.MacAddress))
- {
- WakeOnLanInfos.Add(new WakeOnLanInfo
- {
- MacAddress = fullSystemInfo.MacAddress
- });
- }
- }
- }
-
- public string GetAddress(ConnectionMode mode)
- {
- switch (mode)
- {
- case ConnectionMode.Local:
- return LocalAddress;
- case ConnectionMode.Manual:
- return ManualAddress;
- case ConnectionMode.Remote:
- return RemoteAddress;
- default:
- throw new ArgumentException("Unexpected ConnectionMode");
- }
- }
-
- public void AddOrUpdate(ServerUserInfo user)
- {
- if (user == null)
- {
- throw new ArgumentNullException("user");
- }
-
- // Clone the existing list of users
- var list = new List<ServerUserInfo>();
- foreach (ServerUserInfo serverUserInfo in Users)
- {
- list.Add(serverUserInfo);
- }
-
- var index = FindIndex(list, user.Id);
-
- if (index != -1)
- {
- var existing = list[index];
-
- // Merge the data
- existing.IsSignedInOffline = user.IsSignedInOffline;
- }
- else
- {
- list.Add(user);
- }
-
- Users = list;
- }
-
- private int FindIndex(List<ServerUserInfo> users, string id)
- {
- var index = 0;
-
- foreach (var user in users)
- {
- if (StringHelper.EqualsIgnoreCase(id, user.Id))
- {
- return index;
- }
-
- index++;
- }
-
- return -1;
- }
- }
-}
diff --git a/MediaBrowser.Model/ApiClient/ServerUserInfo.cs b/MediaBrowser.Model/ApiClient/ServerUserInfo.cs
deleted file mode 100644
index 812da7402..000000000
--- a/MediaBrowser.Model/ApiClient/ServerUserInfo.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-
-namespace MediaBrowser.Model.ApiClient
-{
- public class ServerUserInfo
- {
- public string Id { get; set; }
- public bool IsSignedInOffline { get; set; }
- }
-}
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 2df69a58f..324570901 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -222,12 +222,6 @@ namespace MediaBrowser.Model.Dto
public long? CumulativeRunTimeTicks { get; set; }
/// <summary>
- /// Gets or sets the original run time ticks.
- /// </summary>
- /// <value>The original run time ticks.</value>
- public long? OriginalRunTimeTicks { get; set; }
-
- /// <summary>
/// Gets or sets the run time ticks.
/// </summary>
/// <value>The run time ticks.</value>
@@ -411,12 +405,6 @@ namespace MediaBrowser.Model.Dto
public string Status { get; set; }
/// <summary>
- /// Gets or sets the air time.
- /// </summary>
- /// <value>The air time.</value>
- public string AirTime { get; set; }
-
- /// <summary>
/// Gets or sets the air days.
/// </summary>
/// <value>The air days.</value>
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index 547baee66..60cad44db 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -40,25 +40,10 @@
<Compile Include="Activity\ActivityLogEntry.cs" />
<Compile Include="Activity\IActivityManager.cs" />
<Compile Include="Activity\IActivityRepository.cs" />
- <Compile Include="ApiClient\ApiHelpers.cs" />
- <Compile Include="ApiClient\ConnectionMode.cs" />
- <Compile Include="ApiClient\ConnectionResult.cs" />
- <Compile Include="ApiClient\ConnectionState.cs" />
<Compile Include="ApiClient\ConnectSignupResponse.cs" />
<Compile Include="ApiClient\HttpResponseEventArgs.cs" />
- <Compile Include="ApiClient\IApiClient.cs" />
- <Compile Include="ApiClient\ApiClientExtensions.cs" />
- <Compile Include="ApiClient\IClientWebSocket.cs" />
- <Compile Include="ApiClient\IConnectionManager.cs" />
- <Compile Include="ApiClient\IDevice.cs" />
- <Compile Include="ApiClient\IServerEvents.cs" />
<Compile Include="ApiClient\GeneralCommandEventArgs.cs" />
- <Compile Include="ApiClient\NetworkStatus.cs" />
- <Compile Include="ApiClient\RemoteLogoutReason.cs" />
- <Compile Include="ApiClient\ServerCredentials.cs" />
<Compile Include="ApiClient\ServerDiscoveryInfo.cs" />
- <Compile Include="ApiClient\ServerInfo.cs" />
- <Compile Include="ApiClient\ServerUserInfo.cs" />
<Compile Include="ApiClient\SessionUpdatesEventArgs.cs" />
<Compile Include="ApiClient\WakeOnLanInfo.cs" />
<Compile Include="Branding\BrandingOptions.cs" />
@@ -85,7 +70,6 @@
<Compile Include="Connect\ConnectAuthenticationResult.cs" />
<Compile Include="Connect\ConnectAuthorization.cs" />
<Compile Include="Connect\ConnectAuthorizationRequest.cs" />
- <Compile Include="ApiClient\ConnectionOptions.cs" />
<Compile Include="Connect\ConnectPassword.cs" />
<Compile Include="Connect\ConnectUser.cs" />
<Compile Include="Connect\ConnectUserQuery.cs" />
diff --git a/MediaBrowser.Model/Sync/SyncJobItem.cs b/MediaBrowser.Model/Sync/SyncJobItem.cs
index 1c72ccd52..9fb275823 100644
--- a/MediaBrowser.Model/Sync/SyncJobItem.cs
+++ b/MediaBrowser.Model/Sync/SyncJobItem.cs
@@ -92,11 +92,6 @@ namespace MediaBrowser.Model.Sync
/// <value>The additional files.</value>
public List<ItemFileInfo> AdditionalFiles { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether this instance is marked for removal.
- /// </summary>
- /// <value><c>true</c> if this instance is marked for removal; otherwise, <c>false</c>.</value>
- public bool IsMarkedForRemoval { get; set; }
- /// <summary>
/// Gets or sets the index of the job item.
/// </summary>
/// <value>The index of the job item.</value>
diff --git a/MediaBrowser.Model/Sync/SyncJobItemStatus.cs b/MediaBrowser.Model/Sync/SyncJobItemStatus.cs
index c4e23c63c..2a968869f 100644
--- a/MediaBrowser.Model/Sync/SyncJobItemStatus.cs
+++ b/MediaBrowser.Model/Sync/SyncJobItemStatus.cs
@@ -8,8 +8,6 @@ namespace MediaBrowser.Model.Sync
ReadyToTransfer = 2,
Transferring = 3,
Synced = 4,
- RemovedFromDevice = 5,
- Failed = 6,
- Cancelled = 7
+ Failed = 5
}
}
diff --git a/MediaBrowser.Model/Sync/SyncJobStatus.cs b/MediaBrowser.Model/Sync/SyncJobStatus.cs
index ac211a32a..2d1d30802 100644
--- a/MediaBrowser.Model/Sync/SyncJobStatus.cs
+++ b/MediaBrowser.Model/Sync/SyncJobStatus.cs
@@ -9,7 +9,6 @@ namespace MediaBrowser.Model.Sync
Transferring = 3,
Completed = 4,
CompletedWithError = 5,
- Failed = 6,
- Cancelled = 7
+ Failed = 6
}
}
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index d82242826..fedb815cf 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.720</version>
+ <version>3.0.726</version>
<title>Emby.Common</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 8c3f90e4f..58432679b 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.720</version>
+ <version>3.0.726</version>
<title>Emby.Server.Core</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Emby Server.</description>
<copyright>Copyright © Emby 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.720" />
+ <dependency id="MediaBrowser.Common" version="3.0.726" />
</dependencies>
</metadata>
<files>
diff --git a/SharedVersion.cs b/SharedVersion.cs
index 719ace03f..25d498a60 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,3 +1,3 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.2.26.21")]
+[assembly: AssemblyVersion("3.2.26.22")]