aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-09 18:43:11 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-09 18:43:11 -0400
commit35a7986b3f2c40e66bb7da6a9ae91b38cc763422 (patch)
treea81b31b24b2372ce2c8f23faedcf240f8bd7e700
parent2b2832076471f789d46faf938596c57a18601e1f (diff)
added model classes for remote control
-rw-r--r--MediaBrowser.Api/SessionsService.cs7
-rw-r--r--MediaBrowser.Common/Plugins/BasePlugin.cs2
-rw-r--r--MediaBrowser.Controller/Dto/DtoBuilder.cs2
-rw-r--r--MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs45
-rw-r--r--MediaBrowser.Controller/Dto/UserDtoBuilder.cs2
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj2
-rw-r--r--MediaBrowser.Controller/Session/SessionInfo.cs (renamed from MediaBrowser.Model/Session/SessionInfo.cs)15
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj5
-rw-r--r--MediaBrowser.Model/Session/BrowseRequest.cs37
-rw-r--r--MediaBrowser.Model/Session/PlayRequest.cs46
-rw-r--r--MediaBrowser.Model/Session/PlaystateRequest.cs53
-rw-r--r--MediaBrowser.Model/Session/SessionInfoDto.cs62
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserManager.cs1
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs16
-rw-r--r--MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs2
-rw-r--r--MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs2
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardInfo.cs2
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs4
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec6
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
22 files changed, 289 insertions, 30 deletions
diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs
index 03a352307..590fd6f06 100644
--- a/MediaBrowser.Api/SessionsService.cs
+++ b/MediaBrowser.Api/SessionsService.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Session;
+using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Session;
using ServiceStack.ServiceHost;
using System.Collections.Generic;
@@ -11,7 +12,7 @@ namespace MediaBrowser.Api
/// </summary>
[Route("/Sessions", "GET")]
[Api(("Gets a list of sessions"))]
- public class GetSessions : IReturn<List<SessionInfo>>
+ public class GetSessions : IReturn<List<SessionInfoDto>>
{
/// <summary>
/// Gets or sets a value indicating whether this instance is recent.
@@ -48,7 +49,7 @@ namespace MediaBrowser.Api
{
var result = request.IsRecent ? _sessionManager.RecentConnections : _sessionManager.AllConnections;
- return ToOptimizedResult(result.ToList());
+ return ToOptimizedResult(result.Select(SessionInfoDtoBuilder.GetSessionInfoDto).ToList());
}
}
}
diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs
index 3a7a57455..71168c219 100644
--- a/MediaBrowser.Common/Plugins/BasePlugin.cs
+++ b/MediaBrowser.Common/Plugins/BasePlugin.cs
@@ -304,7 +304,7 @@ namespace MediaBrowser.Common.Plugins
AssemblyFileName = AssemblyFileName,
ConfigurationDateLastModified = ConfigurationDateLastModified,
Description = Description,
- Id = Id.ToString(),
+ Id = Id.ToString("N"),
EnableAutoUpdate = Configuration.EnableAutoUpdate,
UpdateClass = Configuration.UpdateClass,
ConfigurationFileName = ConfigurationFileName
diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs
index 167ff2f78..ca08a3290 100644
--- a/MediaBrowser.Controller/Dto/DtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs
@@ -868,7 +868,7 @@ namespace MediaBrowser.Controller.Dto
return GetClientItemId(indexFolder.Parent) + IndexFolderDelimeter + (indexFolder.IndexName ?? string.Empty) + IndexFolderDelimeter + indexFolder.Id;
}
- return item.Id.ToString();
+ return item.Id.ToString("N");
}
/// <summary>
diff --git a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs
new file mode 100644
index 000000000..850af573f
--- /dev/null
+++ b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs
@@ -0,0 +1,45 @@
+using MediaBrowser.Controller.Session;
+using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Session;
+
+namespace MediaBrowser.Controller.Dto
+{
+ /// <summary>
+ /// Class SessionInfoDtoBuilder
+ /// </summary>
+ public static class SessionInfoDtoBuilder
+ {
+ /// <summary>
+ /// Gets the session info dto.
+ /// </summary>
+ /// <param name="session">The session.</param>
+ /// <returns>SessionInfoDto.</returns>
+ public static SessionInfoDto GetSessionInfoDto(SessionInfo session)
+ {
+ var dto = new SessionInfoDto
+ {
+ Client = session.Client,
+ DeviceId = session.DeviceId,
+ DeviceName = session.DeviceName,
+ Id = session.Id,
+ LastActivityDate = session.LastActivityDate,
+ NowPlayingPositionTicks = session.NowPlayingPositionTicks
+ };
+
+ if (session.NowPlayingItem != null)
+ {
+ dto.NowPlayingItem = DtoBuilder.GetBaseItemInfo(session.NowPlayingItem);
+ }
+
+ if (session.UserId.HasValue)
+ {
+ dto.UserId = session.UserId.Value.ToString("N");
+ }
+
+ dto.SupportsRemoteControl = session.WebSocket != null &&
+ session.WebSocket.State == WebSocketState.Open;
+
+ return dto;
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Dto/UserDtoBuilder.cs b/MediaBrowser.Controller/Dto/UserDtoBuilder.cs
index ad90a392c..892bd5dd0 100644
--- a/MediaBrowser.Controller/Dto/UserDtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/UserDtoBuilder.cs
@@ -41,7 +41,7 @@ namespace MediaBrowser.Controller.Dto
var dto = new UserDto
{
- Id = user.Id.ToString(),
+ Id = user.Id.ToString("N"),
Name = user.Name,
HasPassword = !String.IsNullOrEmpty(user.Password),
LastActivityDate = user.LastActivityDate,
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index c54a446fb..378011e34 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -70,6 +70,7 @@
<Link>Properties\SharedVersion.cs</Link>
</Compile>
<Compile Include="Configuration\IServerConfigurationManager.cs" />
+ <Compile Include="Dto\SessionInfoDtoBuilder.cs" />
<Compile Include="Session\ISessionManager.cs" />
<Compile Include="Drawing\ImageExtensions.cs" />
<Compile Include="Drawing\ImageHeader.cs" />
@@ -191,6 +192,7 @@
<Compile Include="Providers\FolderProviderFromXml.cs" />
<Compile Include="Providers\ImageFromMediaLocationProvider.cs" />
<Compile Include="Providers\MediaInfo\FFProbeVideoInfoProvider.cs" />
+ <Compile Include="Session\SessionInfo.cs" />
<Compile Include="Sorting\IBaseItemComparer.cs" />
<Compile Include="Sorting\IUserBaseItemComparer.cs" />
<Compile Include="Updates\IInstallationManager.cs" />
diff --git a/MediaBrowser.Model/Session/SessionInfo.cs b/MediaBrowser.Controller/Session/SessionInfo.cs
index f74db9058..21c65df97 100644
--- a/MediaBrowser.Model/Session/SessionInfo.cs
+++ b/MediaBrowser.Controller/Session/SessionInfo.cs
@@ -1,7 +1,8 @@
-using MediaBrowser.Model.Entities;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Entities;
using System;
-namespace MediaBrowser.Model.Session
+namespace MediaBrowser.Controller.Session
{
/// <summary>
/// Class SessionInfo
@@ -18,7 +19,7 @@ namespace MediaBrowser.Model.Session
/// Gets or sets the user id.
/// </summary>
/// <value>The user id.</value>
- public string UserId { get; set; }
+ public Guid? UserId { get; set; }
/// <summary>
/// Gets or sets the type of the client.
@@ -42,7 +43,7 @@ namespace MediaBrowser.Model.Session
/// Gets or sets the now playing item.
/// </summary>
/// <value>The now playing item.</value>
- public BaseItemInfo NowPlayingItem { get; set; }
+ public BaseItem NowPlayingItem { get; set; }
/// <summary>
/// Gets or sets the now playing position ticks.
@@ -55,5 +56,11 @@ namespace MediaBrowser.Model.Session
/// </summary>
/// <value>The device id.</value>
public string DeviceId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the web socket.
+ /// </summary>
+ /// <value>The web socket.</value>
+ public IWebSocketConnection WebSocket { get; set; }
}
}
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index dbfe38698..979e0d55e 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -56,7 +56,9 @@
<Compile Include="Querying\ArtistsQuery.cs" />
<Compile Include="Querying\ItemsByNameQuery.cs" />
<Compile Include="Entities\BaseItemInfo.cs" />
- <Compile Include="Session\SessionInfo.cs" />
+ <Compile Include="Session\BrowseRequest.cs" />
+ <Compile Include="Session\PlayRequest.cs" />
+ <Compile Include="Session\PlaystateRequest.cs" />
<Compile Include="Entities\ImageDownloadOptions.cs" />
<Compile Include="Logging\ILogManager.cs" />
<Compile Include="MediaInfo\BlurayDiscInfo.cs" />
@@ -92,6 +94,7 @@
<Compile Include="Search\SearchHintResult.cs" />
<Compile Include="Serialization\IJsonSerializer.cs" />
<Compile Include="Serialization\IXmlSerializer.cs" />
+ <Compile Include="Session\SessionInfoDto.cs" />
<Compile Include="Updates\CheckForUpdateResult.cs" />
<Compile Include="Updates\PackageTargetSystem.cs" />
<Compile Include="Updates\InstallationInfo.cs" />
diff --git a/MediaBrowser.Model/Session/BrowseRequest.cs b/MediaBrowser.Model/Session/BrowseRequest.cs
new file mode 100644
index 000000000..3d10b3bfd
--- /dev/null
+++ b/MediaBrowser.Model/Session/BrowseRequest.cs
@@ -0,0 +1,37 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class BrowseRequest
+ /// </summary>
+ public class BrowseRequest
+ {
+ /// <summary>
+ /// Artist, Genre, Studio, Person, or any kind of BaseItem
+ /// </summary>
+ /// <value>The type of the item.</value>
+ public string ItemType { get; set; }
+
+ /// <summary>
+ /// Artist name, genre name, item Id, etc
+ /// </summary>
+ /// <value>The item identifier.</value>
+ public string ItemIdentifier { get; set; }
+
+ /// <summary>
+ /// Gets or sets the context (Movies, Music, Tv, etc)
+ /// Applicable to genres, studios and persons only because the context of items and artists can be inferred.
+ /// This is optional to supply and clients are free to ignore it.
+ /// </summary>
+ /// <value>The context.</value>
+ public string Context { get; set; }
+ }
+
+ public class ItemContext
+ {
+ public const string Music = "Music";
+ public const string Movies = "Movies";
+ public const string TvShows = "TvShows";
+ public const string Games = "Games";
+ }
+}
diff --git a/MediaBrowser.Model/Session/PlayRequest.cs b/MediaBrowser.Model/Session/PlayRequest.cs
new file mode 100644
index 000000000..c9bb58693
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlayRequest.cs
@@ -0,0 +1,46 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlayRequest
+ /// </summary>
+ public class PlayRequest
+ {
+ /// <summary>
+ /// Gets or sets the item ids.
+ /// </summary>
+ /// <value>The item ids.</value>
+ public string[] ItemIds { get; set; }
+
+ /// <summary>
+ /// Gets or sets the start position ticks that the first item should be played at
+ /// </summary>
+ /// <value>The start position ticks.</value>
+ public long? StartPositionTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the play command.
+ /// </summary>
+ /// <value>The play command.</value>
+ public PlayCommand PlayCommand { get; set; }
+ }
+
+ /// <summary>
+ /// Enum PlayCommand
+ /// </summary>
+ public enum PlayCommand
+ {
+ /// <summary>
+ /// The play now
+ /// </summary>
+ PlayNow,
+ /// <summary>
+ /// The play next
+ /// </summary>
+ PlayNext,
+ /// <summary>
+ /// The play last
+ /// </summary>
+ PlayLast
+ }
+}
diff --git a/MediaBrowser.Model/Session/PlaystateRequest.cs b/MediaBrowser.Model/Session/PlaystateRequest.cs
new file mode 100644
index 000000000..4db06c3d6
--- /dev/null
+++ b/MediaBrowser.Model/Session/PlaystateRequest.cs
@@ -0,0 +1,53 @@
+
+namespace MediaBrowser.Model.Session
+{
+ /// <summary>
+ /// Class PlaystateRequest
+ /// </summary>
+ public class PlaystateRequest
+ {
+ /// <summary>
+ /// Gets or sets the command.
+ /// </summary>
+ /// <value>The command.</value>
+ public PlaystateCommand Command { get; set; }
+
+ /// <summary>
+ /// Gets or sets the seek position.
+ /// Only applicable to seek commands.
+ /// </summary>
+ /// <value>The seek position.</value>
+ public long SeekPosition { get; set; }
+ }
+
+ /// <summary>
+ /// Enum PlaystateCommand
+ /// </summary>
+ public enum PlaystateCommand
+ {
+ /// <summary>
+ /// The stop
+ /// </summary>
+ Stop,
+ /// <summary>
+ /// The pause
+ /// </summary>
+ Pause,
+ /// <summary>
+ /// The unpause
+ /// </summary>
+ Unpause,
+ /// <summary>
+ /// The next track
+ /// </summary>
+ NextTrack,
+ /// <summary>
+ /// The previous track
+ /// </summary>
+ PreviousTrack,
+ /// <summary>
+ /// The seek
+ /// </summary>
+ Seek
+ }
+}
diff --git a/MediaBrowser.Model/Session/SessionInfoDto.cs b/MediaBrowser.Model/Session/SessionInfoDto.cs
new file mode 100644
index 000000000..0548876a1
--- /dev/null
+++ b/MediaBrowser.Model/Session/SessionInfoDto.cs
@@ -0,0 +1,62 @@
+using MediaBrowser.Model.Entities;
+using System;
+
+namespace MediaBrowser.Model.Session
+{
+ public class SessionInfoDto
+ {
+ /// <summary>
+ /// Gets or sets the id.
+ /// </summary>
+ /// <value>The id.</value>
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// Gets or sets the user id.
+ /// </summary>
+ /// <value>The user id.</value>
+ public string UserId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the type of the client.
+ /// </summary>
+ /// <value>The type of the client.</value>
+ public string Client { get; set; }
+
+ /// <summary>
+ /// Gets or sets the last activity date.
+ /// </summary>
+ /// <value>The last activity date.</value>
+ public DateTime LastActivityDate { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the device.
+ /// </summary>
+ /// <value>The name of the device.</value>
+ public string DeviceName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the now playing item.
+ /// </summary>
+ /// <value>The now playing item.</value>
+ public BaseItemInfo NowPlayingItem { get; set; }
+
+ /// <summary>
+ /// Gets or sets the now playing position ticks.
+ /// </summary>
+ /// <value>The now playing position ticks.</value>
+ public long? NowPlayingPositionTicks { get; set; }
+
+ /// <summary>
+ /// Gets or sets the device id.
+ /// </summary>
+ /// <value>The device id.</value>
+ public string DeviceId { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether [supports remote control].
+ /// </summary>
+ /// <value><c>true</c> if [supports remote control]; otherwise, <c>false</c>.</value>
+ public bool SupportsRemoteControl { get; set; }
+ }
+}
diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs
index dc863ca4d..6f5725e1b 100644
--- a/MediaBrowser.Server.Implementations/Library/UserManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs
@@ -7,6 +7,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Concurrent;
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs
index b9a51ab78..d3ed270b8 100644
--- a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs
+++ b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs
@@ -216,7 +216,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
var filename = item.Album ?? string.Empty;
- filename += album == null ? item.Id.ToString() + item.DateModified.Ticks : album.Id.ToString() + album.DateModified.Ticks;
+ filename += album == null ? item.Id.ToString("N") + item.DateModified.Ticks : album.Id.ToString() + album.DateModified.Ticks;
var path = ImageCache.GetResourcePath(filename + "_primary", ".jpg");
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 051c8fb68..99407e349 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -41,9 +41,6 @@ namespace MediaBrowser.Server.Implementations.Session
private readonly ConcurrentDictionary<string, SessionInfo> _activeConnections =
new ConcurrentDictionary<string, SessionInfo>(StringComparer.OrdinalIgnoreCase);
- private readonly ConcurrentDictionary<Guid, IWebSocketConnection> _websocketConnections =
- new ConcurrentDictionary<Guid, IWebSocketConnection>();
-
/// <summary>
/// Occurs when [playback start].
/// </summary>
@@ -133,7 +130,7 @@ namespace MediaBrowser.Server.Implementations.Session
var conn = GetConnection(clientType, deviceId, deviceName, user);
conn.NowPlayingPositionTicks = currentPositionTicks;
- conn.NowPlayingItem = DtoBuilder.GetBaseItemInfo(item);
+ conn.NowPlayingItem = item;
conn.LastActivityDate = DateTime.UtcNow;
}
@@ -149,7 +146,7 @@ namespace MediaBrowser.Server.Implementations.Session
{
var conn = GetConnection(clientType, deviceId, deviceName, user);
- if (conn.NowPlayingItem != null && conn.NowPlayingItem.Id.Equals(item.Id.ToString()))
+ if (conn.NowPlayingItem != null && conn.NowPlayingItem.Id == item.Id)
{
conn.NowPlayingItem = null;
conn.NowPlayingPositionTicks = null;
@@ -177,7 +174,7 @@ namespace MediaBrowser.Server.Implementations.Session
connection.DeviceName = deviceName;
- connection.UserId = user == null ? null : user.Id.ToString();
+ connection.UserId = user == null ? (Guid?)null : user.Id;
return connection;
}
@@ -366,7 +363,12 @@ namespace MediaBrowser.Server.Implementations.Session
/// <param name="webSocket">The web socket.</param>
public void IdentifyWebSocket(Guid sessionId, IWebSocketConnection webSocket)
{
- _websocketConnections.AddOrUpdate(sessionId, webSocket, (key, existing) => webSocket);
+ var session = AllConnections.FirstOrDefault(i => i.Id == sessionId);
+
+ if (session != null)
+ {
+ session.WebSocket = webSocket;
+ }
}
}
}
diff --git a/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs b/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs
index 1ba4232d3..a4a43509d 100644
--- a/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs
+++ b/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs
@@ -326,7 +326,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
/// <param name="e">The e.</param>
void userManager_UserDeleted(object sender, GenericEventArgs<User> e)
{
- _serverManager.SendWebSocketMessage("UserDeleted", e.Argument.Id.ToString());
+ _serverManager.SendWebSocketMessage("UserDeleted", e.Argument.Id.ToString("N"));
}
/// <summary>
diff --git a/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs b/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs
index 5cba80850..97bba0970 100644
--- a/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs
+++ b/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs
@@ -27,7 +27,7 @@ namespace MediaBrowser.WebDashboard.Api
{
Name = page.Name;
ConfigurationPageType = page.ConfigurationPageType;
- PluginId = page.Plugin.Id.ToString();
+ PluginId = page.Plugin.Id.ToString("N");
}
}
}
diff --git a/MediaBrowser.WebDashboard/Api/DashboardInfo.cs b/MediaBrowser.WebDashboard/Api/DashboardInfo.cs
index 500464ed8..48670eb83 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardInfo.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardInfo.cs
@@ -33,7 +33,7 @@ namespace MediaBrowser.WebDashboard.Api
/// Gets or sets the active connections.
/// </summary>
/// <value>The active connections.</value>
- public SessionInfo[] ActiveConnections { get; set; }
+ public SessionInfoDto[] ActiveConnections { get; set; }
/// <summary>
/// Gets or sets the users.
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index b33c152f1..a0892060f 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -210,7 +210,7 @@ namespace MediaBrowser.WebDashboard.Api
var dtoBuilder = new UserDtoBuilder(logger);
- var tasks = userManager.Users.Where(u => connections.Any(c => new Guid(c.UserId) == u.Id)).Select(dtoBuilder.GetUserDto);
+ var tasks = userManager.Users.Where(u => connections.Any(c => c.UserId.HasValue && c.UserId.Value == u.Id)).Select(dtoBuilder.GetUserDto);
var users = await Task.WhenAll(tasks).ConfigureAwait(false);
@@ -224,7 +224,7 @@ namespace MediaBrowser.WebDashboard.Api
ApplicationUpdateTaskId = taskManager.ScheduledTasks.First(t => t.ScheduledTask.GetType().Name.Equals("SystemUpdateTask", StringComparison.OrdinalIgnoreCase)).Id,
- ActiveConnections = connections,
+ ActiveConnections = connections.Select(SessionInfoDtoBuilder.GetSessionInfoDto).ToArray(),
Users = users.ToArray()
};
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 188a44335..56feae805 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.94</version>
+ <version>3.0.97</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,9 +12,9 @@
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.94" />
+ <dependency id="MediaBrowser.Common" version="3.0.97" />
<dependency id="NLog" version="2.0.1.2" />
- <dependency id="ServiceStack.Text" version="3.9.94" />
+ <dependency id="ServiceStack.Text" version="3.9.97" />
<dependency id="SimpleInjector" version="2.2.1" />
</dependencies>
</metadata>
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 4c972ea13..0860c7c9c 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.94</version>
+ <version>3.0.97</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 503b7c0f6..ed83cc8d8 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.94</version>
+ <version>3.0.97</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.94" />
+ <dependency id="MediaBrowser.Common" version="3.0.97" />
</dependencies>
</metadata>
<files>