commit
00073c162a
|
@ -67,17 +67,17 @@ namespace Emby.Server.Implementations.Session
|
||||||
public event EventHandler<GenericEventArgs<AuthenticationResult>> AuthenticationSucceeded;
|
public event EventHandler<GenericEventArgs<AuthenticationResult>> AuthenticationSucceeded;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when [playback start].
|
/// Occurs when playback has started.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<PlaybackProgressEventArgs> PlaybackStart;
|
public event EventHandler<PlaybackProgressEventArgs> PlaybackStart;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when [playback progress].
|
/// Occurs when playback has progressed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<PlaybackProgressEventArgs> PlaybackProgress;
|
public event EventHandler<PlaybackProgressEventArgs> PlaybackProgress;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs when [playback stopped].
|
/// Occurs when playback has stopped.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<PlaybackStopEventArgs> PlaybackStopped;
|
public event EventHandler<PlaybackStopEventArgs> PlaybackStopped;
|
||||||
|
|
||||||
|
@ -690,7 +690,7 @@ namespace Emby.Server.Implementations.Session
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to report playback progress for an item
|
/// Used to report playback progress for an item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
public async Task OnPlaybackProgress(PlaybackProgressInfo info, bool isAutomated)
|
public async Task OnPlaybackProgress(PlaybackProgressInfo info, bool isAutomated)
|
||||||
|
@ -1383,20 +1383,16 @@ namespace Emby.Server.Implementations.Session
|
||||||
user = _userManager.GetUserByName(request.Username);
|
user = _userManager.GetUserByName(request.Username);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
// TODO: Move this to userManager?
|
|
||||||
if (!string.IsNullOrEmpty(request.DeviceId)
|
|
||||||
&& !_deviceManager.CanAccessDevice(user, request.DeviceId))
|
|
||||||
{
|
|
||||||
throw new SecurityException("User is not allowed access from this device.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
AuthenticationFailed?.Invoke(this, new GenericEventArgs<AuthenticationRequest>(request));
|
AuthenticationFailed?.Invoke(this, new GenericEventArgs<AuthenticationRequest>(request));
|
||||||
throw new SecurityException("Invalid user or password entered.");
|
throw new SecurityException("Invalid username or password entered.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(request.DeviceId)
|
||||||
|
&& !_deviceManager.CanAccessDevice(user, request.DeviceId))
|
||||||
|
{
|
||||||
|
throw new SecurityException("User is not allowed access from this device.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enforcePassword)
|
if (enforcePassword)
|
||||||
|
@ -1439,14 +1435,13 @@ namespace Emby.Server.Implementations.Session
|
||||||
DeviceId = deviceId,
|
DeviceId = deviceId,
|
||||||
UserId = user.Id,
|
UserId = user.Id,
|
||||||
Limit = 1
|
Limit = 1
|
||||||
|
|
||||||
}).Items.FirstOrDefault();
|
}).Items.FirstOrDefault();
|
||||||
|
|
||||||
var allExistingForDevice = _authRepo.Get(new AuthenticationInfoQuery
|
var allExistingForDevice = _authRepo.Get(
|
||||||
{
|
new AuthenticationInfoQuery
|
||||||
DeviceId = deviceId
|
{
|
||||||
|
DeviceId = deviceId
|
||||||
}).Items;
|
}).Items;
|
||||||
|
|
||||||
foreach (var auth in allExistingForDevice)
|
foreach (var auth in allExistingForDevice)
|
||||||
{
|
{
|
||||||
|
@ -1503,7 +1498,6 @@ namespace Emby.Server.Implementations.Session
|
||||||
{
|
{
|
||||||
Limit = 1,
|
Limit = 1,
|
||||||
AccessToken = accessToken
|
AccessToken = accessToken
|
||||||
|
|
||||||
}).Items.FirstOrDefault();
|
}).Items.FirstOrDefault();
|
||||||
|
|
||||||
if (existing != null)
|
if (existing != null)
|
||||||
|
@ -1696,23 +1690,24 @@ namespace Emby.Server.Implementations.Session
|
||||||
throw new ArgumentNullException(nameof(itemId));
|
throw new ArgumentNullException(nameof(itemId));
|
||||||
}
|
}
|
||||||
|
|
||||||
//var item = _libraryManager.GetItemById(new Guid(itemId));
|
var item = _libraryManager.GetItemById(new Guid(itemId));
|
||||||
|
|
||||||
//var info = GetItemInfo(item, null, null);
|
var info = GetItemInfo(item, null);
|
||||||
|
|
||||||
//ReportNowViewingItem(sessionId, info);
|
ReportNowViewingItem(sessionId, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReportNowViewingItem(string sessionId, BaseItemDto item)
|
public void ReportNowViewingItem(string sessionId, BaseItemDto item)
|
||||||
{
|
{
|
||||||
//var session = GetSession(sessionId);
|
var session = GetSession(sessionId);
|
||||||
|
|
||||||
//session.NowViewingItem = item;
|
session.NowViewingItem = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReportTranscodingInfo(string deviceId, TranscodingInfo info)
|
public void ReportTranscodingInfo(string deviceId, TranscodingInfo info)
|
||||||
{
|
{
|
||||||
var session = Sessions.FirstOrDefault(i => string.Equals(i.DeviceId, deviceId));
|
var session = Sessions.FirstOrDefault(i =>
|
||||||
|
string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
if (session != null)
|
if (session != null)
|
||||||
{
|
{
|
||||||
|
@ -1727,8 +1722,9 @@ namespace Emby.Server.Implementations.Session
|
||||||
|
|
||||||
public SessionInfo GetSession(string deviceId, string client, string version)
|
public SessionInfo GetSession(string deviceId, string client, string version)
|
||||||
{
|
{
|
||||||
return Sessions.FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
|
return Sessions.FirstOrDefault(i =>
|
||||||
string.Equals(i.Client, client));
|
string.Equals(i.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase)
|
||||||
|
&& string.Equals(i.Client, client, StringComparison.OrdinalIgnoreCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
public SessionInfo GetSessionByAuthenticationToken(AuthenticationInfo info, string deviceId, string remoteEndpoint, string appVersion)
|
public SessionInfo GetSessionByAuthenticationToken(AuthenticationInfo info, string deviceId, string remoteEndpoint, string appVersion)
|
||||||
|
|
|
@ -230,6 +230,17 @@ namespace MediaBrowser.Api.Session
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Route("/Sessions/Viewing", "POST", Summary = "Reports that a session is viewing an item")]
|
||||||
|
[Authenticated]
|
||||||
|
public class ReportViewing : IReturnVoid
|
||||||
|
{
|
||||||
|
[ApiMember(Name = "SessionId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
|
||||||
|
public string SessionId { get; set; }
|
||||||
|
|
||||||
|
[ApiMember(Name = "ItemId", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
|
||||||
|
public string ItemId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
[Route("/Sessions/Logout", "POST", Summary = "Reports that a session has ended")]
|
[Route("/Sessions/Logout", "POST", Summary = "Reports that a session has ended")]
|
||||||
[Authenticated]
|
[Authenticated]
|
||||||
public class ReportSessionEnded : IReturnVoid
|
public class ReportSessionEnded : IReturnVoid
|
||||||
|
@ -276,7 +287,7 @@ namespace MediaBrowser.Api.Session
|
||||||
public class SessionsService : BaseApiService
|
public class SessionsService : BaseApiService
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _session manager.
|
/// The session manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly ISessionManager _sessionManager;
|
private readonly ISessionManager _sessionManager;
|
||||||
|
|
||||||
|
@ -438,14 +449,12 @@ namespace MediaBrowser.Api.Session
|
||||||
public Task Post(SendSystemCommand request)
|
public Task Post(SendSystemCommand request)
|
||||||
{
|
{
|
||||||
var name = request.Command;
|
var name = request.Command;
|
||||||
|
|
||||||
if (Enum.TryParse(name, true, out GeneralCommandType commandType))
|
if (Enum.TryParse(name, true, out GeneralCommandType commandType))
|
||||||
{
|
{
|
||||||
name = commandType.ToString();
|
name = commandType.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentSession = GetSession(_sessionContext);
|
var currentSession = GetSession(_sessionContext);
|
||||||
|
|
||||||
var command = new GeneralCommand
|
var command = new GeneralCommand
|
||||||
{
|
{
|
||||||
Name = name,
|
Name = name,
|
||||||
|
@ -518,16 +527,13 @@ namespace MediaBrowser.Api.Session
|
||||||
{
|
{
|
||||||
request.Id = GetSession(_sessionContext).Id;
|
request.Id = GetSession(_sessionContext).Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sessionManager.ReportCapabilities(request.Id, new ClientCapabilities
|
_sessionManager.ReportCapabilities(request.Id, new ClientCapabilities
|
||||||
{
|
{
|
||||||
PlayableMediaTypes = SplitValue(request.PlayableMediaTypes, ','),
|
PlayableMediaTypes = SplitValue(request.PlayableMediaTypes, ','),
|
||||||
|
|
||||||
SupportedCommands = SplitValue(request.SupportedCommands, ','),
|
SupportedCommands = SplitValue(request.SupportedCommands, ','),
|
||||||
|
|
||||||
SupportsMediaControl = request.SupportsMediaControl,
|
SupportsMediaControl = request.SupportsMediaControl,
|
||||||
|
|
||||||
SupportsSync = request.SupportsSync,
|
SupportsSync = request.SupportsSync,
|
||||||
|
|
||||||
SupportsPersistentIdentifier = request.SupportsPersistentIdentifier
|
SupportsPersistentIdentifier = request.SupportsPersistentIdentifier
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -538,7 +544,15 @@ namespace MediaBrowser.Api.Session
|
||||||
{
|
{
|
||||||
request.Id = GetSession(_sessionContext).Id;
|
request.Id = GetSession(_sessionContext).Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sessionManager.ReportCapabilities(request.Id, request);
|
_sessionManager.ReportCapabilities(request.Id, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Post(ReportViewing request)
|
||||||
|
{
|
||||||
|
request.SessionId = GetSession(_sessionContext).Id;
|
||||||
|
|
||||||
|
_sessionManager.ReportNowViewingItem(request.SessionId, request.ItemId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,10 +103,6 @@ namespace MediaBrowser.Api.UserLibrary
|
||||||
[ApiMember(Name = "MediaSourceId", Description = "The id of the MediaSource", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
|
[ApiMember(Name = "MediaSourceId", Description = "The id of the MediaSource", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
|
||||||
public string MediaSourceId { get; set; }
|
public string MediaSourceId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets a value indicating whether this <see cref="UpdateUserItemRating" /> is likes.
|
|
||||||
/// </summary>
|
|
||||||
/// <value><c>true</c> if likes; otherwise, <c>false</c>.</value>
|
|
||||||
[ApiMember(Name = "CanSeek", Description = "Indicates if the client can seek", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")]
|
[ApiMember(Name = "CanSeek", Description = "Indicates if the client can seek", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")]
|
||||||
public bool CanSeek { get; set; }
|
public bool CanSeek { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -240,7 +240,7 @@ namespace MediaBrowser.Api
|
||||||
public class UserService : BaseApiService
|
public class UserService : BaseApiService
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _user manager
|
/// The user manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly IUserManager _userManager;
|
private readonly IUserManager _userManager;
|
||||||
private readonly ISessionManager _sessionMananger;
|
private readonly ISessionManager _sessionMananger;
|
||||||
|
|
|
@ -107,6 +107,8 @@ namespace MediaBrowser.Controller.Session
|
||||||
|
|
||||||
public BaseItem FullNowPlayingItem { get; set; }
|
public BaseItem FullNowPlayingItem { get; set; }
|
||||||
|
|
||||||
|
public BaseItemDto NowViewingItem { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the device id.
|
/// Gets or sets the device id.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -239,11 +241,6 @@ namespace MediaBrowser.Controller.Session
|
||||||
SessionControllers = controllers.ToArray();
|
SessionControllers = controllers.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ContainsUser(string userId)
|
|
||||||
{
|
|
||||||
return ContainsUser(new Guid(userId));
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ContainsUser(Guid userId)
|
public bool ContainsUser(Guid userId)
|
||||||
{
|
{
|
||||||
if (UserId.Equals(userId))
|
if (UserId.Equals(userId))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user