diff options
Diffstat (limited to 'MediaBrowser.Model')
| -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 | 7 | ||||
| -rw-r--r-- | MediaBrowser.Model/ApiClient/IConnectionManager.cs | 9 | ||||
| -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 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dto/UserDto.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Model/MediaBrowser.Model.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Session/ClientCapabilities.cs | 1 |
10 files changed, 92 insertions, 3 deletions
diff --git a/MediaBrowser.Model/ApiClient/ConnectionResult.cs b/MediaBrowser.Model/ApiClient/ConnectionResult.cs index 12a80ee159..32a80d1a3e 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 5e47d688e1..9b753c7bb6 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 0e69bb91f7..bcd1dfe12a 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> diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index a54c330acd..658c71ac5d 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/ServerCredentials.cs b/MediaBrowser.Model/ApiClient/ServerCredentials.cs index fbbc6c05de..b5f38f4db3 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 46cc560af2..2faa5b4073 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.IsOffline = user.IsOffline; + } + 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 0000000000..43186c86d6 --- /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 IsOffline { get; set; } + } +} diff --git a/MediaBrowser.Model/Dto/UserDto.cs b/MediaBrowser.Model/Dto/UserDto.cs index 3e2d869d6f..22428fadd2 100644 --- a/MediaBrowser.Model/Dto/UserDto.cs +++ b/MediaBrowser.Model/Dto/UserDto.cs @@ -48,7 +48,13 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The id.</value> public string Id { get; set; } - + + /// <summary> + /// Gets or sets the offline password. + /// </summary> + /// <value>The offline password.</value> + public string OfflinePassword { get; set; } + /// <summary> /// Gets or sets the primary image tag. /// </summary> @@ -108,7 +114,7 @@ namespace MediaBrowser.Model.Dto /// </summary> /// <value>The original primary image aspect ratio.</value> public double? OriginalPrimaryImageAspectRatio { get; set; } - + /// <summary> /// Gets a value indicating whether this instance has primary image. /// </summary> diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index bad17abaea..0962cbe7a0 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -76,6 +76,7 @@ <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" /> diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs index 6c1b6e8b2d..6ca4507c02 100644 --- a/MediaBrowser.Model/Session/ClientCapabilities.cs +++ b/MediaBrowser.Model/Session/ClientCapabilities.cs @@ -16,6 +16,7 @@ namespace MediaBrowser.Model.Session public bool SupportsContentUploading { get; set; } public bool SupportsPersistentIdentifier { get; set; } public bool SupportsSync { get; set; } + public bool SupportsOfflineAccess { get; set; } public DeviceProfile DeviceProfile { get; set; } |
