@ -1,8 +1,10 @@
using MediaBrowser.Common.Extensions ;
using System ;
using MediaBrowser.Common.Extensions ;
using MediaBrowser.Controller.Connect ;
using MediaBrowser.Controller.Library ;
using MediaBrowser.Controller.Net ;
using MediaBrowser.Model.Connect ;
using MediaBrowser.Model.Dto ;
using ServiceStack ;
using System.Collections.Generic ;
using System.Linq ;
@ -87,6 +89,14 @@ namespace MediaBrowser.Api
public string Id { get ; set ; }
}
[Route("/Connect/Supporters", "POST")]
[Authenticated(Roles = "Admin")]
public class AddConnectSupporter : IReturnVoid
{
[ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Id { get ; set ; }
}
public class ConnectService : BaseApiService
{
private readonly IConnectManager _connectManager ;
@ -101,6 +111,14 @@ namespace MediaBrowser.Api
public async Task < object > Get ( GetConnectSupporterSummary request )
{
var result = await _connectManager . GetConnectSupporterSummary ( ) . ConfigureAwait ( false ) ;
var existingConnectUserIds = result . Users . Select ( i = > i . Id ) . ToList ( ) ;
result . EligibleUsers = _userManager . Users
. Where ( i = > ! string . IsNullOrWhiteSpace ( i . ConnectUserId ) )
. Where ( i = > ! existingConnectUserIds . Contains ( i . ConnectUserId , StringComparer . OrdinalIgnoreCase ) )
. OrderBy ( i = > i . Name )
. Select ( i = > _userManager . GetUserDto ( i ) )
. ToList ( ) ;
return ToOptimizedResult ( result ) ;
}
@ -112,6 +130,13 @@ namespace MediaBrowser.Api
Task . WaitAll ( task ) ;
}
public void Post ( AddConnectSupporter request )
{
var task = _connectManager . AddConnectSupporter ( request . Id ) ;
Task . WaitAll ( task ) ;
}
public object Post ( CreateConnectLink request )
{
return _connectManager . LinkUser ( request . Id , request . ConnectUsername ) ;