From b12215b3f94dd7f7d5cff6a703b037e215090a98 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Sep 2014 13:12:47 -0400 Subject: add connect error handling --- .../Connect/ConnectManager.cs | 66 +++++++++++++--------- .../Connect/Responses.cs | 5 ++ 2 files changed, 44 insertions(+), 27 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Connect') diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 972f3adb6..d0de64a6f 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -295,7 +295,7 @@ namespace MediaBrowser.Server.Implementations.Connect if (!string.IsNullOrWhiteSpace(user.ConnectUserId)) { - await RemoveLink(user, connectUser).ConfigureAwait(false); + await RemoveLink(user, connectUser.Id).ConfigureAwait(false); } var url = GetConnectUrl("ServerAuthorizations"); @@ -323,6 +323,7 @@ namespace MediaBrowser.Server.Implementations.Connect // No need to examine the response using (var stream = (await _httpClient.Post(options).ConfigureAwait(false)).Content) { + var response = _json.DeserializeFromStream(stream); } user.ConnectAccessKey = accessToken; @@ -332,44 +333,55 @@ namespace MediaBrowser.Server.Implementations.Connect await user.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); } - public async Task RemoveLink(string userId) + public Task RemoveLink(string userId) { var user = GetUser(userId); - var connectUser = await GetConnectUser(new ConnectUserQuery - { - Name = user.ConnectUserId - - }, CancellationToken.None).ConfigureAwait(false); - - await RemoveLink(user, connectUser).ConfigureAwait(false); + return RemoveLink(user, user.ConnectUserId); } - public async Task RemoveLink(User user, ConnectUser connectUser) + private async Task RemoveLink(User user, string connectUserId) { - var url = GetConnectUrl("ServerAuthorizations"); - - var options = new HttpRequestOptions + if (!string.IsNullOrWhiteSpace(connectUserId)) { - Url = url, - CancellationToken = CancellationToken.None - }; + var url = GetConnectUrl("ServerAuthorizations"); - var postData = new Dictionary - { - {"serverId", ConnectServerId}, - {"userId", connectUser.Id} - }; + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = CancellationToken.None + }; - options.SetPostData(postData); + var postData = new Dictionary + { + {"serverId", ConnectServerId}, + {"userId", connectUserId} + }; - SetServerAccessToken(options); + options.SetPostData(postData); - // No need to examine the response - using (var stream = (await _httpClient.SendAsync(options, "DELETE").ConfigureAwait(false)).Content) - { + SetServerAccessToken(options); + + try + { + // No need to examine the response + using (var stream = (await _httpClient.SendAsync(options, "DELETE").ConfigureAwait(false)).Content) + { + } + } + catch (HttpException ex) + { + // If connect says the auth doesn't exist, we can handle that gracefully since this is a remove operation + + if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound) + { + throw; + } + + _logger.Debug("Connect returned a 404 when removing a user auth link. Handling it."); + } } - + user.ConnectAccessKey = null; user.ConnectUserName = null; user.ConnectUserId = null; diff --git a/MediaBrowser.Server.Implementations/Connect/Responses.cs b/MediaBrowser.Server.Implementations/Connect/Responses.cs index 5d71c0f9b..7a80015d5 100644 --- a/MediaBrowser.Server.Implementations/Connect/Responses.cs +++ b/MediaBrowser.Server.Implementations/Connect/Responses.cs @@ -25,4 +25,9 @@ namespace MediaBrowser.Server.Implementations.Connect public string IsActive { get; set; } public string ImageUrl { get; set; } } + + public class ServerUserAuthorizationResponse + { + + } } -- cgit v1.2.3 From 14bb0aa30c4f13e4093b5a80fcb964c0402feda0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Sep 2014 13:25:46 -0400 Subject: check if connect user is active --- MediaBrowser.Controller/Connect/ConnectUser.cs | 1 + MediaBrowser.Server.Implementations/Connect/ConnectManager.cs | 8 +++++++- MediaBrowser.Server.Implementations/Connect/Responses.cs | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Connect') diff --git a/MediaBrowser.Controller/Connect/ConnectUser.cs b/MediaBrowser.Controller/Connect/ConnectUser.cs index c640f9095..2cd14ec7c 100644 --- a/MediaBrowser.Controller/Connect/ConnectUser.cs +++ b/MediaBrowser.Controller/Connect/ConnectUser.cs @@ -11,6 +11,7 @@ namespace MediaBrowser.Controller.Connect public string Id { get; set; } public string Name { get; set; } public string Email { get; set; } + public bool IsActive { get; set; } } public class ConnectUserQuery diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index d0de64a6f..6a1c3f074 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -291,6 +291,11 @@ namespace MediaBrowser.Server.Implementations.Connect }, CancellationToken.None).ConfigureAwait(false); + if (!connectUser.IsActive) + { + throw new ArgumentException("The Media Browser account has been disabled."); + } + var user = GetUser(userId); if (!string.IsNullOrWhiteSpace(user.ConnectUserId)) @@ -422,7 +427,8 @@ namespace MediaBrowser.Server.Implementations.Connect { Email = response.Email, Id = response.Id, - Name = response.Name + Name = response.Name, + IsActive = response.IsActive }; } } diff --git a/MediaBrowser.Server.Implementations/Connect/Responses.cs b/MediaBrowser.Server.Implementations/Connect/Responses.cs index 7a80015d5..a3b0369ba 100644 --- a/MediaBrowser.Server.Implementations/Connect/Responses.cs +++ b/MediaBrowser.Server.Implementations/Connect/Responses.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.Server.Implementations.Connect public string Name { get; set; } public string DisplayName { get; set; } public string Email { get; set; } - public string IsActive { get; set; } + public bool IsActive { get; set; } public string ImageUrl { get; set; } } -- cgit v1.2.3 From 9ad7d5d1a94239395b1a0717a8f5b220111ec886 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Sep 2014 14:47:48 -0400 Subject: consolidate connect calls --- MediaBrowser.Api/ConnectService.cs | 16 +--------------- MediaBrowser.Controller/Connect/ConnectUserLink.cs | 10 ---------- MediaBrowser.Controller/Connect/IConnectManager.cs | 7 ------- MediaBrowser.Controller/Entities/User.cs | 2 ++ .../MediaBrowser.Controller.csproj | 1 - .../MediaBrowser.Model.Portable.csproj | 3 +++ .../MediaBrowser.Model.net35.csproj | 3 +++ MediaBrowser.Model/Connect/UserLinkType.cs | 15 +++++++++++++++ MediaBrowser.Model/Dto/UserDto.cs | 19 ++++++++++++++++++- MediaBrowser.Model/MediaBrowser.Model.csproj | 1 + .../Connect/ConnectManager.cs | 12 ------------ .../Library/UserManager.cs | 9 ++++++--- 12 files changed, 49 insertions(+), 49 deletions(-) delete mode 100644 MediaBrowser.Controller/Connect/ConnectUserLink.cs create mode 100644 MediaBrowser.Model/Connect/UserLinkType.cs (limited to 'MediaBrowser.Server.Implementations/Connect') diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index e2a1b98e9..14b04a0bb 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -5,15 +5,8 @@ using System.Threading.Tasks; namespace MediaBrowser.Api { - [Route("/Users/{Id}/Connect/Info", "GET", Summary = "Gets connect info for a user")] - public class GetConnectUserInfo : IReturn - { - [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public string Id { get; set; } - } - [Route("/Users/{Id}/Connect/Link", "POST", Summary = "Creates a Connect link for a user")] - public class CreateConnectLink : IReturn + public class CreateConnectLink : IReturnVoid { [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] public string Id { get; set; } @@ -39,13 +32,6 @@ namespace MediaBrowser.Api _connectManager = connectManager; } - public object Get(GetConnectUserInfo request) - { - var result = _connectManager.GetUserInfo(request.Id); - - return ToOptimizedResult(result); - } - public void Post(CreateConnectLink request) { var task = _connectManager.LinkUser(request.Id, request.ConnectUsername); diff --git a/MediaBrowser.Controller/Connect/ConnectUserLink.cs b/MediaBrowser.Controller/Connect/ConnectUserLink.cs deleted file mode 100644 index 93de6d8b4..000000000 --- a/MediaBrowser.Controller/Connect/ConnectUserLink.cs +++ /dev/null @@ -1,10 +0,0 @@ - -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 6c2128cd3..8bdb76ea4 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -10,13 +10,6 @@ namespace MediaBrowser.Controller.Connect /// The wan API address. string WanApiAddress { get; } - /// - /// Gets the user information. - /// - /// The user identifier. - /// ConnectUserInfo. - ConnectUserLink GetUserInfo(string userId); - /// /// Links the user. /// diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index c0c7a6c53..e0682c9ee 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Connect; using MediaBrowser.Model.Serialization; using System; using System.IO; @@ -34,6 +35,7 @@ namespace MediaBrowser.Controller.Entities public string ConnectUserName { get; set; } public string ConnectUserId { get; set; } + public UserLinkType ConnectLinkType { get; set; } public string ConnectAccessKey { get; set; } /// diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 1d23a82a9..fa1064232 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -101,7 +101,6 @@ - diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index c6e8adb16..32054beb3 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -188,6 +188,9 @@ Configuration\XbmcMetadataOptions.cs + + Connect\UserLinkType.cs + Dlna\AudioOptions.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index 715331436..e9153117b 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -151,6 +151,9 @@ Configuration\XbmcMetadataOptions.cs + + Connect\UserLinkType.cs + Dlna\AudioOptions.cs diff --git a/MediaBrowser.Model/Connect/UserLinkType.cs b/MediaBrowser.Model/Connect/UserLinkType.cs new file mode 100644 index 000000000..e8ea15a4e --- /dev/null +++ b/MediaBrowser.Model/Connect/UserLinkType.cs @@ -0,0 +1,15 @@ + +namespace MediaBrowser.Model.Connect +{ + public enum UserLinkType + { + /// + /// The linked user + /// + LinkedUser = 1, + /// + /// The guest + /// + Guest = 2 + } +} diff --git a/MediaBrowser.Model/Dto/UserDto.cs b/MediaBrowser.Model/Dto/UserDto.cs index 787f55ec0..b88e9d411 100644 --- a/MediaBrowser.Model/Dto/UserDto.cs +++ b/MediaBrowser.Model/Dto/UserDto.cs @@ -1,9 +1,10 @@ using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Connect; +using MediaBrowser.Model.Extensions; using System; using System.ComponentModel; using System.Diagnostics; using System.Runtime.Serialization; -using MediaBrowser.Model.Extensions; namespace MediaBrowser.Model.Dto { @@ -19,6 +20,22 @@ namespace MediaBrowser.Model.Dto /// The name. public string Name { get; set; } + /// + /// Gets or sets the name of the connect user. + /// + /// The name of the connect user. + public string ConnectUserName { get; set; } + /// + /// Gets or sets the connect user identifier. + /// + /// The connect user identifier. + public string ConnectUserId { get; set; } + /// + /// Gets or sets the type of the connect link. + /// + /// The type of the connect link. + public UserLinkType ConnectLinkType { get; set; } + /// /// Gets or sets the id. /// diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9223db80a..c4da280e2 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -81,6 +81,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 6a1c3f074..3933b180e 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -261,18 +261,6 @@ namespace MediaBrowser.Server.Implementations.Connect return user; } - public ConnectUserLink GetUserInfo(string userId) - { - var user = GetUser(userId); - - return new ConnectUserLink - { - LocalUserId = user.Id.ToString("N"), - Username = user.ConnectUserName, - UserId = user.ConnectUserId - }; - } - private string GetConnectUrl(string handler) { return "https://connect.mediabrowser.tv/service/" + handler; diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 47d6b17f0..16a1dc516 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -86,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Library /// public event EventHandler> UserUpdated; public event EventHandler> UserConfigurationUpdated; - + /// /// Called when [user updated]. /// @@ -137,7 +137,7 @@ namespace MediaBrowser.Server.Implementations.Library { return GetUserById(new Guid(id)); } - + public async Task Initialize() { Users = await LoadUsers().ConfigureAwait(false); @@ -260,7 +260,10 @@ namespace MediaBrowser.Server.Implementations.Library HasConfiguredPassword = hasConfiguredDefaultPassword, LastActivityDate = user.LastActivityDate, LastLoginDate = user.LastLoginDate, - Configuration = user.Configuration + Configuration = user.Configuration, + ConnectLinkType = user.ConnectLinkType, + ConnectUserId = user.ConnectUserId, + ConnectUserName = user.ConnectUserName }; var image = user.GetImageInfo(ImageType.Primary, 0); -- cgit v1.2.3 From 6dc9b169666bcfeb2edf3620c0646efa0c29606f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Sep 2014 19:39:06 -0400 Subject: update connect link text --- MediaBrowser.Api/ConnectService.cs | 8 +++----- .../Connect/ConnectInvitationRequest.cs | 20 -------------------- MediaBrowser.Controller/Connect/ConnectUser.cs | 7 +------ MediaBrowser.Controller/Connect/IConnectManager.cs | 2 +- MediaBrowser.Controller/Connect/UserLinkResult.cs | 8 ++++++++ .../MediaBrowser.Controller.csproj | 2 +- .../Connect/ConnectManager.cs | 11 ++++++++++- .../Connect/Responses.cs | 9 ++++++++- .../Localization/JavaScript/javascript.json | 3 ++- .../Localization/Server/server.json | 1 + 10 files changed, 35 insertions(+), 36 deletions(-) delete mode 100644 MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs create mode 100644 MediaBrowser.Controller/Connect/UserLinkResult.cs (limited to 'MediaBrowser.Server.Implementations/Connect') diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index 14b04a0bb..9ea75d4ac 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Api { [Route("/Users/{Id}/Connect/Link", "POST", Summary = "Creates a Connect link for a user")] - public class CreateConnectLink : IReturnVoid + public class CreateConnectLink : IReturn { [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] public string Id { get; set; } @@ -32,11 +32,9 @@ namespace MediaBrowser.Api _connectManager = connectManager; } - public void Post(CreateConnectLink request) + public object Post(CreateConnectLink request) { - var task = _connectManager.LinkUser(request.Id, request.ConnectUsername); - - Task.WaitAll(task); + return _connectManager.LinkUser(request.Id, request.ConnectUsername); } public void Delete(DeleteConnectLink request) diff --git a/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs b/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs deleted file mode 100644 index 91516723b..000000000 --- a/MediaBrowser.Controller/Connect/ConnectInvitationRequest.cs +++ /dev/null @@ -1,20 +0,0 @@ - -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 index 2cd14ec7c..389330cec 100644 --- a/MediaBrowser.Controller/Connect/ConnectUser.cs +++ b/MediaBrowser.Controller/Connect/ConnectUser.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - + namespace MediaBrowser.Controller.Connect { public class ConnectUser diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs index 8bdb76ea4..7c1e14c30 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -16,7 +16,7 @@ namespace MediaBrowser.Controller.Connect /// The user identifier. /// The connect username. /// Task. - Task LinkUser(string userId, string connectUsername); + Task LinkUser(string userId, string connectUsername); /// /// Removes the link. diff --git a/MediaBrowser.Controller/Connect/UserLinkResult.cs b/MediaBrowser.Controller/Connect/UserLinkResult.cs new file mode 100644 index 000000000..4ed57cfc2 --- /dev/null +++ b/MediaBrowser.Controller/Connect/UserLinkResult.cs @@ -0,0 +1,8 @@ + +namespace MediaBrowser.Controller.Connect +{ + public class UserLinkResult + { + public bool IsPending { get; set; } + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index fa1064232..6d881da4f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -99,9 +99,9 @@ - + diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 3933b180e..d92ca8323 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -6,6 +6,7 @@ using MediaBrowser.Controller.Connect; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Security; +using MediaBrowser.Model.Connect; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.Serialization; @@ -266,7 +267,7 @@ namespace MediaBrowser.Server.Implementations.Connect return "https://connect.mediabrowser.tv/service/" + handler; } - public async Task LinkUser(string userId, string connectUsername) + public async Task LinkUser(string userId, string connectUsername) { if (string.IsNullOrWhiteSpace(connectUsername)) { @@ -313,17 +314,24 @@ namespace MediaBrowser.Server.Implementations.Connect SetServerAccessToken(options); + var result = new UserLinkResult(); + // No need to examine the response using (var stream = (await _httpClient.Post(options).ConfigureAwait(false)).Content) { var response = _json.DeserializeFromStream(stream); + + result.IsPending = string.Equals(response.AcceptStatus, "waiting", StringComparison.OrdinalIgnoreCase); } user.ConnectAccessKey = accessToken; user.ConnectUserName = connectUser.Name; user.ConnectUserId = connectUser.Id; + user.ConnectLinkType = UserLinkType.LinkedUser; await user.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + + return result; } public Task RemoveLink(string userId) @@ -378,6 +386,7 @@ namespace MediaBrowser.Server.Implementations.Connect user.ConnectAccessKey = null; user.ConnectUserName = null; user.ConnectUserId = null; + user.ConnectLinkType = UserLinkType.LinkedUser; await user.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); } diff --git a/MediaBrowser.Server.Implementations/Connect/Responses.cs b/MediaBrowser.Server.Implementations/Connect/Responses.cs index a3b0369ba..eeb56d1c9 100644 --- a/MediaBrowser.Server.Implementations/Connect/Responses.cs +++ b/MediaBrowser.Server.Implementations/Connect/Responses.cs @@ -28,6 +28,13 @@ namespace MediaBrowser.Server.Implementations.Connect public class ServerUserAuthorizationResponse { - + public string Id { get; set; } + public string ServerId { get; set; } + public string UserId { get; set; } + public string AccessToken { get; set; } + public string DateCreated { get; set; } + public bool IsActive { get; set; } + public string AcceptStatus { get; set; } + public string UserType { get; set; } } } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index f8bb0f1d5..543bcced2 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -453,7 +453,8 @@ "MessageYouHaveAnActiveRecurringMembership": "You have an active {0} membership. You can upgrade your plan using the options below.", "ButtonDelete": "Delete", "HeaderMediaBrowserAccountAdded": "Media Browser Account Added", - "MessageMediaBrowserAccontAdded": "A Media Browser account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", + "MessageMediaBrowserAccountAdded": "The Media Browser account has been successfully linked to this user.", + "MessagePendingMediaBrowserAccountAdded": "A Media Browser account has been linked to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", "HeaderMediaBrowserAccountRemoved": "Media Browser Account Removed", "MessageMediaBrowserAccontRemoved": "The Media Browser account has been removed from this user.", "TooltipLinkedToMediaBrowserConnect": "Linked to Media Browser Connect" diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 86dc60c2e..781b3e927 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -684,6 +684,7 @@ "OptionPlainVideoItemsHelp": "If enabled, all videos are represented in DIDL as \"object.item.videoItem\" instead of a more specific type, such as \"object.item.videoItem.movie\".", "LabelSupportedMediaTypes": "Supported Media Types:", "TabIdentification": "Identification", + "HeaderIdentification": "Identification", "TabDirectPlay": "Direct Play", "TabContainers": "Containers", "TabCodecs": "Codecs", -- cgit v1.2.3