diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/BaseApiService.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Api/MediaBrowser.Api.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Api/SessionsService.cs | 54 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 12 |
4 files changed, 78 insertions, 6 deletions
diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index 0c95f61120..17c36254e7 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -1,5 +1,7 @@ using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Session; using MediaBrowser.Model.Logging; using ServiceStack.Common.Web; using ServiceStack.ServiceHost; @@ -100,6 +102,8 @@ namespace MediaBrowser.Api /// <value>The user manager.</value> public IUserManager UserManager { get; set; } + public ISessionManager SessionManager { get; set; } + /// <summary> /// Gets or sets the logger. /// </summary> @@ -122,11 +126,20 @@ namespace MediaBrowser.Api { var userId = auth["UserId"]; + User user = null; + if (!string.IsNullOrEmpty(userId)) { - var user = UserManager.GetUserById(new Guid(userId)); + user = UserManager.GetUserById(new Guid(userId)); + } - UserManager.LogUserActivity(user, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); + var deviceId = auth["DeviceId"]; + var device = auth["Device"]; + var client = auth["Client"]; + + if (!string.IsNullOrEmpty(client) && !string.IsNullOrEmpty(deviceId) && !string.IsNullOrEmpty(device)) + { + SessionManager.LogConnectionActivity(client, deviceId, device, user); } } } diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index b17412ee65..7ed030a873 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -88,6 +88,7 @@ <Compile Include="ScheduledTasks\ScheduledTasksWebSocketListener.cs" /> <Compile Include="ApiEntryPoint.cs" /> <Compile Include="SearchService.cs" /> + <Compile Include="SessionsService.cs" /> <Compile Include="SystemService.cs" /> <Compile Include="TvShowsService.cs" /> <Compile Include="UserLibrary\ArtistsService.cs" /> diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs new file mode 100644 index 0000000000..03a352307a --- /dev/null +++ b/MediaBrowser.Api/SessionsService.cs @@ -0,0 +1,54 @@ +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Session; +using ServiceStack.ServiceHost; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Api +{ + /// <summary> + /// Class GetSessions + /// </summary> + [Route("/Sessions", "GET")] + [Api(("Gets a list of sessions"))] + public class GetSessions : IReturn<List<SessionInfo>> + { + /// <summary> + /// Gets or sets a value indicating whether this instance is recent. + /// </summary> + /// <value><c>true</c> if this instance is recent; otherwise, <c>false</c>.</value> + public bool IsRecent { get; set; } + } + + /// <summary> + /// Class SessionsService + /// </summary> + public class SessionsService : BaseApiService + { + /// <summary> + /// The _session manager + /// </summary> + private readonly ISessionManager _sessionManager; + + /// <summary> + /// Initializes a new instance of the <see cref="SessionsService"/> class. + /// </summary> + /// <param name="sessionManager">The session manager.</param> + public SessionsService(ISessionManager sessionManager) + { + _sessionManager = sessionManager; + } + + /// <summary> + /// Gets the specified request. + /// </summary> + /// <param name="request">The request.</param> + /// <returns>System.Object.</returns> + public object Get(GetSessions request) + { + var result = request.IsRecent ? _sessionManager.RecentConnections : _sessionManager.AllConnections; + + return ToOptimizedResult(result.ToList()); + } + } +} diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index 5c1eff9549..53f2e9bca5 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Session; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Querying; using ServiceStack.ServiceHost; @@ -401,6 +402,8 @@ namespace MediaBrowser.Api.UserLibrary private readonly IItemRepository _itemRepo; + private readonly ISessionManager _sessionManager; + /// <summary> /// Initializes a new instance of the <see cref="UserLibraryService" /> class. /// </summary> @@ -409,13 +412,14 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="userDataRepository">The user data repository.</param> /// <param name="itemRepo">The item repo.</param> /// <exception cref="System.ArgumentNullException">jsonSerializer</exception> - public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo) + public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepo, ISessionManager sessionManager) : base() { _userManager = userManager; _libraryManager = libraryManager; _userDataRepository = userDataRepository; _itemRepo = itemRepo; + _sessionManager = sessionManager; } /// <summary> @@ -693,7 +697,7 @@ namespace MediaBrowser.Api.UserLibrary if (auth != null) { - _userManager.OnPlaybackStart(user, item, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); + _sessionManager.OnPlaybackStart(user, item, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); } } @@ -711,7 +715,7 @@ namespace MediaBrowser.Api.UserLibrary if (auth != null) { - var task = _userManager.OnPlaybackProgress(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); + var task = _sessionManager.OnPlaybackProgress(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); Task.WaitAll(task); } @@ -731,7 +735,7 @@ namespace MediaBrowser.Api.UserLibrary if (auth != null) { - var task = _userManager.OnPlaybackStopped(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); + var task = _sessionManager.OnPlaybackStopped(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty); Task.WaitAll(task); } |
