From 5c615fa02448813499ed87f2a1c2b937c7a7dcd5 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Sep 2014 11:10:51 -0400 Subject: add connect linking --- .../Connect/ConnectInvitationRequest.cs | 20 +++++++++++++ MediaBrowser.Controller/Connect/ConnectUser.cs | 22 +++++++++++++++ MediaBrowser.Controller/Connect/ConnectUserLink.cs | 10 +++++++ MediaBrowser.Controller/Connect/IConnectManager.cs | 29 ++++++++++++++++++- MediaBrowser.Controller/Entities/User.cs | 33 ++++++++++++++++++---- MediaBrowser.Controller/Library/IUserManager.cs | 7 +++++ .../MediaBrowser.Controller.csproj | 3 ++ MediaBrowser.Controller/Net/LoggedAttribute.cs | 2 +- 8 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs create mode 100644 MediaBrowser.Controller/Connect/ConnectUser.cs create mode 100644 MediaBrowser.Controller/Connect/ConnectUserLink.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs b/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs new file mode 100644 index 000000000..91516723b --- /dev/null +++ b/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs @@ -0,0 +1,20 @@ + +namespace MediaBrowser.Controller.Connect +{ + public class ConnectInvitationRequest + { + public string LocalUserId { get; set; } + + public string Username { get; set; } + + public string RequesterUserId { get; set; } + + public ConnectUserType Type { get; set; } + } + + public enum ConnectUserType + { + LinkedUser = 1, + Guest = 2 + } +} diff --git a/MediaBrowser.Controller/Connect/ConnectUser.cs b/MediaBrowser.Controller/Connect/ConnectUser.cs new file mode 100644 index 000000000..c640f9095 --- /dev/null +++ b/MediaBrowser.Controller/Connect/ConnectUser.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Connect +{ + public class ConnectUser + { + public string Id { get; set; } + public string Name { get; set; } + public string Email { get; set; } + } + + public class ConnectUserQuery + { + public string Id { get; set; } + public string Name { get; set; } + public string Email { get; set; } + } +} diff --git a/MediaBrowser.Controller/Connect/ConnectUserLink.cs b/MediaBrowser.Controller/Connect/ConnectUserLink.cs new file mode 100644 index 000000000..93de6d8b4 --- /dev/null +++ b/MediaBrowser.Controller/Connect/ConnectUserLink.cs @@ -0,0 +1,10 @@ + +namespace MediaBrowser.Controller.Connect +{ + public class ConnectUserLink + { + public string Username { get; set; } + public string UserId { get; set; } + public string LocalUserId { get; set; } + } +} diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs index 2e52591f5..6c2128cd3 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -1,8 +1,35 @@ - +using System.Threading.Tasks; + namespace MediaBrowser.Controller.Connect { public interface IConnectManager { + /// + /// Gets the wan API address. + /// + /// The wan API address. string WanApiAddress { get; } + + /// + /// Gets the user information. + /// + /// The user identifier. + /// ConnectUserInfo. + ConnectUserLink GetUserInfo(string userId); + + /// + /// Links the user. + /// + /// The user identifier. + /// The connect username. + /// Task. + Task LinkUser(string userId, string connectUsername); + + /// + /// Removes the link. + /// + /// The user identifier. + /// Task. + Task RemoveLink(string userId); } } diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index e4fd929ff..c0c7a6c53 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -19,6 +19,12 @@ namespace MediaBrowser.Controller.Entities public static IUserManager UserManager { get; set; } public static IXmlSerializer XmlSerializer { get; set; } + /// + /// From now on all user paths will be Id-based. + /// This is for backwards compatibility. + /// + public bool UsesIdForConfigurationPath { get; set; } + /// /// Gets or sets the password. /// @@ -26,6 +32,10 @@ namespace MediaBrowser.Controller.Entities public string Password { get; set; } public string LocalPassword { get; set; } + public string ConnectUserName { get; set; } + public string ConnectUserId { get; set; } + public string ConnectAccessKey { get; set; } + /// /// Gets or sets the path. /// @@ -136,12 +146,14 @@ namespace MediaBrowser.Controller.Entities { if (string.IsNullOrEmpty(newName)) { - throw new ArgumentNullException(); + throw new ArgumentNullException("newName"); } // If only the casing is changing, leave the file system alone - if (!newName.Equals(Name, StringComparison.OrdinalIgnoreCase)) + if (!UsesIdForConfigurationPath && !newName.Equals(Name, StringComparison.OrdinalIgnoreCase)) { + UsesIdForConfigurationPath = true; + // Move configuration var newConfigDirectory = GetConfigurationDirectoryPath(newName); var oldConfigurationDirectory = ConfigurationDirectoryPath; @@ -168,7 +180,8 @@ namespace MediaBrowser.Controller.Entities { ReplaceAllMetadata = true, ImageRefreshMode = ImageRefreshMode.FullRefresh, - MetadataRefreshMode = MetadataRefreshMode.FullRefresh + MetadataRefreshMode = MetadataRefreshMode.FullRefresh, + ForceSave = true }, CancellationToken.None); } @@ -183,7 +196,7 @@ namespace MediaBrowser.Controller.Entities /// /// The configuration directory path. [IgnoreDataMember] - public string ConfigurationDirectoryPath + private string ConfigurationDirectoryPath { get { @@ -203,9 +216,17 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException("username"); } - var safeFolderName = FileSystem.GetValidFilename(username); + var parentPath = ConfigurationManager.ApplicationPaths.UserConfigurationDirectoryPath; + + // Legacy + if (!UsesIdForConfigurationPath) + { + var safeFolderName = FileSystem.GetValidFilename(username); + + return System.IO.Path.Combine(ConfigurationManager.ApplicationPaths.UserConfigurationDirectoryPath, safeFolderName); + } - return System.IO.Path.Combine(ConfigurationManager.ApplicationPaths.UserConfigurationDirectoryPath, safeFolderName); + return System.IO.Path.Combine(parentPath, Id.ToString("N")); } /// diff --git a/MediaBrowser.Controller/Library/IUserManager.cs b/MediaBrowser.Controller/Library/IUserManager.cs index a5d949c8a..3efdbea76 100644 --- a/MediaBrowser.Controller/Library/IUserManager.cs +++ b/MediaBrowser.Controller/Library/IUserManager.cs @@ -49,6 +49,13 @@ namespace MediaBrowser.Controller.Library /// User GetUserById(Guid id); + /// + /// Gets the user by identifier. + /// + /// The identifier. + /// User. + User GetUserById(string id); + /// /// Authenticates a User and returns a result indicating whether or not it succeeded /// diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 1813d9f08..1d23a82a9 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -99,6 +99,9 @@ + + + diff --git a/MediaBrowser.Controller/Net/LoggedAttribute.cs b/MediaBrowser.Controller/Net/LoggedAttribute.cs index 6df72f7a7..ea07b1c7f 100644 --- a/MediaBrowser.Controller/Net/LoggedAttribute.cs +++ b/MediaBrowser.Controller/Net/LoggedAttribute.cs @@ -33,7 +33,7 @@ namespace MediaBrowser.Controller.Net { var userId = auth.UserId; - user = UserManager.GetUserById(new Guid(userId)); + user = UserManager.GetUserById(userId); } string deviceId = auth.DeviceId; -- cgit v1.2.3