diff options
Diffstat (limited to 'MediaBrowser.Model/ApiClient')
| -rw-r--r-- | MediaBrowser.Model/ApiClient/ConnectionResult.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/ConnectionState.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/IApiClient.cs | 70 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/IConnectionManager.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/IServerEvents.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/ServerCredentials.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/ServerInfo.cs | 48 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/ServerUserInfo.cs | 9 |
8 files changed, 132 insertions, 19 deletions
diff --git a/MediaBrowser.Model/ApiClient/ConnectionResult.cs b/MediaBrowser.Model/ApiClient/ConnectionResult.cs index 12a80ee15..32a80d1a3 100644 --- a/MediaBrowser.Model/ApiClient/ConnectionResult.cs +++ b/MediaBrowser.Model/ApiClient/ConnectionResult.cs @@ -1,4 +1,5 @@ using MediaBrowser.Model.Connect; +using MediaBrowser.Model.Dto; using System.Collections.Generic; namespace MediaBrowser.Model.ApiClient @@ -9,6 +10,7 @@ namespace MediaBrowser.Model.ApiClient public List<ServerInfo> Servers { get; set; } public IApiClient ApiClient { get; set; } public ConnectUser ConnectUser { get; set; } + public UserDto OfflineUser { get; set; } public ConnectionResult() { diff --git a/MediaBrowser.Model/ApiClient/ConnectionState.cs b/MediaBrowser.Model/ApiClient/ConnectionState.cs index 5e47d688e..9b753c7bb 100644 --- a/MediaBrowser.Model/ApiClient/ConnectionState.cs +++ b/MediaBrowser.Model/ApiClient/ConnectionState.cs @@ -6,6 +6,8 @@ namespace MediaBrowser.Model.ApiClient ServerSignIn = 2, SignedIn = 3, ServerSelection = 4, - ConnectSignIn = 5 + 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 index 9faa8fced..bcd1dfe12 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -558,6 +558,13 @@ namespace MediaBrowser.Model.ApiClient Task<UserDto> GetUserAsync(string id); /// <summary> + /// Gets the offline user asynchronous. + /// </summary> + /// <param name="id">The identifier.</param> + /// <returns>Task<UserDto>.</returns> + Task<UserDto> GetOfflineUserAsync(string id); + + /// <summary> /// Gets the parental ratings async. /// </summary> /// <returns>Task{List{ParentalRating}}.</returns> @@ -1317,24 +1324,6 @@ namespace MediaBrowser.Model.ApiClient Task<QueryResult<BaseItemDto>> GetPlaylistItems(PlaylistItemQuery query); /// <summary> - /// Gets the url needed to stream a video file - /// </summary> - /// <param name="options">The options.</param> - /// <returns>System.String.</returns> - /// <exception cref="ArgumentNullException">options</exception> - [Obsolete] - string GetVideoStreamUrl(VideoStreamOptions options); - - /// <summary> - /// Formulates a url for streaming video using the HLS protocol - /// </summary> - /// <param name="options">The options.</param> - /// <returns>System.String.</returns> - /// <exception cref="ArgumentNullException">options</exception> - [Obsolete] - string GetHlsVideoStreamUrl(VideoStreamOptions options); - - /// <summary> /// Sends the context message asynchronous. /// </summary> /// <param name="itemType">Type of the item.</param> @@ -1414,6 +1403,15 @@ namespace MediaBrowser.Model.ApiClient Task<Stream> GetSyncJobItemFile(string id, CancellationToken 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<Stream>.</returns> + Task<Stream> GetSyncJobItemAdditionalFile(string id, string name, CancellationToken cancellationToken); + + /// <summary> /// Opens the web socket. /// </summary> /// <param name="webSocketFactory">The web socket factory.</param> @@ -1440,5 +1438,41 @@ namespace MediaBrowser.Model.ApiClient /// <param name="request">The request.</param> /// <returns>Task<SyncDataResponse>.</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 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); } }
\ No newline at end of file diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index a54c330ac..658c71ac5 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -136,5 +136,14 @@ namespace MediaBrowser.Model.ApiClient /// </summary> /// <param name="cancellationToken">The cancellation token.</param> Task<List<ServerInfo>> GetAvailableServers(CancellationToken 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); } } diff --git a/MediaBrowser.Model/ApiClient/IServerEvents.cs b/MediaBrowser.Model/ApiClient/IServerEvents.cs index 88faad388..b74d43ee0 100644 --- a/MediaBrowser.Model/ApiClient/IServerEvents.cs +++ b/MediaBrowser.Model/ApiClient/IServerEvents.cs @@ -3,6 +3,7 @@ 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; @@ -130,5 +131,9 @@ namespace MediaBrowser.Model.ApiClient /// Occurs when [session ended]. /// </summary> event EventHandler<GenericEventArgs<SessionInfoDto>> SessionEnded; + /// <summary> + /// Occurs when [synchronize job created]. + /// </summary> + event EventHandler<GenericEventArgs<SyncJobCreationResult>> SyncJobCreated; } } diff --git a/MediaBrowser.Model/ApiClient/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs index fbbc6c05d..b5f38f4db 100644 --- a/MediaBrowser.Model/ApiClient/ServerCredentials.cs +++ b/MediaBrowser.Model/ApiClient/ServerCredentials.cs @@ -70,6 +70,10 @@ namespace MediaBrowser.Model.ApiClient { existing.LastConnectionMode = server.LastConnectionMode; } + foreach (ServerUserInfo user in server.Users) + { + existing.AddOrUpdate(user); + } } else { diff --git a/MediaBrowser.Model/ApiClient/ServerInfo.cs b/MediaBrowser.Model/ApiClient/ServerInfo.cs index 46cc560af..dcd5e75b1 100644 --- a/MediaBrowser.Model/ApiClient/ServerInfo.cs +++ b/MediaBrowser.Model/ApiClient/ServerInfo.cs @@ -1,12 +1,16 @@ using MediaBrowser.Model.Connect; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.System; using System; using System.Collections.Generic; +using System.Linq; 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 LocalAddress { get; set; } @@ -23,6 +27,7 @@ namespace MediaBrowser.Model.ApiClient public ServerInfo() { WakeOnLanInfos = new List<WakeOnLanInfo>(); + Users = new List<ServerUserInfo>(); } public void ImportInfo(PublicSystemInfo systemInfo) @@ -70,5 +75,48 @@ namespace MediaBrowser.Model.ApiClient throw new ArgumentException("Unexpected ConnectionMode"); } } + + public void AddOrUpdate(ServerUserInfo user) + { + if (user == null) + { + throw new ArgumentNullException("user"); + } + + var list = Users.ToList(); + + 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.Equals(id, user.Id)) + { + return index; + } + + index++; + } + + return -1; + } } } diff --git a/MediaBrowser.Model/ApiClient/ServerUserInfo.cs b/MediaBrowser.Model/ApiClient/ServerUserInfo.cs new file mode 100644 index 000000000..812da7402 --- /dev/null +++ b/MediaBrowser.Model/ApiClient/ServerUserInfo.cs @@ -0,0 +1,9 @@ + +namespace MediaBrowser.Model.ApiClient +{ + public class ServerUserInfo + { + public string Id { get; set; } + public bool IsSignedInOffline { get; set; } + } +} |
