aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Images/ImageByNameService.cs68
-rw-r--r--MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs5
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs5
-rw-r--r--MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs5
-rw-r--r--MediaBrowser.Controller/Session/SessionInfo.cs2
-rw-r--r--MediaBrowser.Model/Session/SessionInfoDto.cs6
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs9
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs12
-rw-r--r--MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs10
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs2
11 files changed, 68 insertions, 58 deletions
diff --git a/MediaBrowser.Api/Images/ImageByNameService.cs b/MediaBrowser.Api/Images/ImageByNameService.cs
index 10e30db5f..b17cc81de 100644
--- a/MediaBrowser.Api/Images/ImageByNameService.cs
+++ b/MediaBrowser.Api/Images/ImageByNameService.cs
@@ -1,8 +1,10 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Entities;
using ServiceStack.ServiceHost;
using System;
using System.IO;
+using System.Linq;
namespace MediaBrowser.Api.Images
{
@@ -98,9 +100,11 @@ namespace MediaBrowser.Api.Images
? "folder"
: request.Type;
- var file = Path.Combine(_appPaths.GeneralPath, request.Name, filename + ".jpg");
+ var paths = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(_appPaths.GeneralPath, request.Name, filename + i)).ToList();
- return ToStaticFileResult(File.Exists(file) ? file : Path.ChangeExtension(file, ".png"));
+ var path = paths.FirstOrDefault(File.Exists) ?? paths.FirstOrDefault();
+
+ return ToStaticFileResult(path);
}
/// <summary>
@@ -114,18 +118,12 @@ namespace MediaBrowser.Api.Images
if (Directory.Exists(themeFolder))
{
- var file = Path.Combine(themeFolder, request.Name + ".png");
-
- if (File.Exists(file))
- {
- return ToStaticFileResult(file);
- }
+ var path = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(themeFolder, request.Name + i))
+ .FirstOrDefault(File.Exists);
- file = Path.Combine(themeFolder, request.Name + ".jpg");
-
- if (File.Exists(file))
+ if (!string.IsNullOrEmpty(path))
{
- return ToStaticFileResult(file);
+ return ToStaticFileResult(path);
}
}
@@ -133,18 +131,15 @@ namespace MediaBrowser.Api.Images
if (Directory.Exists(allFolder))
{
- var file = Path.Combine(allFolder, request.Name + ".png");
-
- if (File.Exists(file))
- {
- return ToStaticFileResult(file);
- }
+ // Avoid implicitly captured closure
+ var currentRequest = request;
- file = Path.Combine(allFolder, request.Name + ".jpg");
+ var path = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(allFolder, currentRequest.Name + i))
+ .FirstOrDefault(File.Exists);
- if (File.Exists(file))
+ if (!string.IsNullOrEmpty(path))
{
- return ToStaticFileResult(file);
+ return ToStaticFileResult(path);
}
}
@@ -162,18 +157,12 @@ namespace MediaBrowser.Api.Images
if (Directory.Exists(themeFolder))
{
- var file = Path.Combine(themeFolder, request.Name + ".png");
+ var path = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(themeFolder, request.Name + i))
+ .FirstOrDefault(File.Exists);
- if (File.Exists(file))
+ if (!string.IsNullOrEmpty(path))
{
- return ToStaticFileResult(file);
- }
-
- file = Path.Combine(themeFolder, request.Name + ".jpg");
-
- if (File.Exists(file))
- {
- return ToStaticFileResult(file);
+ return ToStaticFileResult(path);
}
}
@@ -181,18 +170,15 @@ namespace MediaBrowser.Api.Images
if (Directory.Exists(allFolder))
{
- var file = Path.Combine(allFolder, request.Name + ".png");
-
- if (File.Exists(file))
- {
- return ToStaticFileResult(file);
- }
-
- file = Path.Combine(allFolder, request.Name + ".jpg");
+ // Avoid implicitly captured closure
+ var currentRequest = request;
- if (File.Exists(file))
+ var path = BaseItem.SupportedImageExtensions.Select(i => Path.Combine(allFolder, currentRequest.Name + i))
+ .FirstOrDefault(File.Exists);
+
+ if (!string.IsNullOrEmpty(path))
{
- return ToStaticFileResult(file);
+ return ToStaticFileResult(path);
}
}
diff --git a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs
index ce8e510b8..27e6a8d95 100644
--- a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs
+++ b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs
@@ -36,9 +36,10 @@ namespace MediaBrowser.Controller.Dto
dto.NowPlayingItem = DtoBuilder.GetBaseItemInfo(session.NowPlayingItem);
}
- if (session.UserId.HasValue)
+ if (session.User != null)
{
- dto.UserId = session.UserId.Value.ToString("N");
+ dto.UserId = session.User.Id.ToString("N");
+ dto.UserName = session.User.Name;
}
return dto;
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index de272ca64..e4e3debe9 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -43,6 +43,11 @@ namespace MediaBrowser.Controller.Entities
}
/// <summary>
+ /// The supported image extensions
+ /// </summary>
+ public static readonly string[] SupportedImageExtensions = new[] { ".png", ".jpg", ".jpeg" };
+
+ /// <summary>
/// The trailer folder name
/// </summary>
public const string TrailerFolderName = "trailers";
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
index 1bca867a9..1bd4ce0ca 100644
--- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
@@ -146,8 +146,7 @@ namespace MediaBrowser.Controller.Providers
/// <returns>FileSystemInfo.</returns>
protected virtual FileSystemInfo GetImage(BaseItem item, string filenameWithoutExtension)
{
- return item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.ResolveArgs.Path, filenameWithoutExtension + ".png"))
- ?? item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.ResolveArgs.Path, filenameWithoutExtension + ".jpg"));
+ return BaseItem.SupportedImageExtensions.Select(i => item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.ResolveArgs.Path, filenameWithoutExtension + i))).FirstOrDefault(i => i != null);
}
/// <summary>
@@ -159,7 +158,7 @@ namespace MediaBrowser.Controller.Providers
// Primary Image
var image = GetImage(item, "folder") ??
GetImage(item, "poster") ??
- GetImage(item, "cover") ??
+ GetImage(item, "cover") ??
GetImage(item, "default");
if (image != null)
diff --git a/MediaBrowser.Controller/Session/SessionInfo.cs b/MediaBrowser.Controller/Session/SessionInfo.cs
index c3651974b..e49b52624 100644
--- a/MediaBrowser.Controller/Session/SessionInfo.cs
+++ b/MediaBrowser.Controller/Session/SessionInfo.cs
@@ -27,7 +27,7 @@ namespace MediaBrowser.Controller.Session
/// Gets or sets the user id.
/// </summary>
/// <value>The user id.</value>
- public Guid? UserId { get; set; }
+ public User User { get; set; }
/// <summary>
/// Gets or sets the type of the client.
diff --git a/MediaBrowser.Model/Session/SessionInfoDto.cs b/MediaBrowser.Model/Session/SessionInfoDto.cs
index 879d496b2..294e6a264 100644
--- a/MediaBrowser.Model/Session/SessionInfoDto.cs
+++ b/MediaBrowser.Model/Session/SessionInfoDto.cs
@@ -18,6 +18,12 @@ namespace MediaBrowser.Model.Session
public string UserId { get; set; }
/// <summary>
+ /// Gets or sets the name of the user.
+ /// </summary>
+ /// <value>The name of the user.</value>
+ public string UserName { get; set; }
+
+ /// <summary>
/// Gets or sets the type of the client.
/// </summary>
/// <value>The type of the client.</value>
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
index 7087c0421..0c3016552 100644
--- a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
+++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
@@ -4,6 +4,7 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
@@ -175,7 +176,13 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
/// <returns>IEnumerable{System.String}.</returns>
private IEnumerable<string> GetFiles(string path)
{
- return Directory.EnumerateFiles(path, "*.jpg", SearchOption.AllDirectories).Concat(Directory.EnumerateFiles(path, "*.png", SearchOption.AllDirectories));
+ return Directory.EnumerateFiles(path, "*", SearchOption.AllDirectories)
+ .Where(i =>
+ {
+ var ext = Path.GetExtension(i);
+
+ return !string.IsNullOrEmpty(ext) && BaseItem.SupportedImageExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase);
+ });
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 6c1768fd8..29ce2698c 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -185,7 +185,7 @@ namespace MediaBrowser.Server.Implementations.Session
connection.DeviceName = deviceName;
- connection.UserId = user == null ? (Guid?)null : user.Id;
+ connection.User = user;
return connection;
}
diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
index 532436c07..c649fd474 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
@@ -99,18 +99,18 @@ namespace MediaBrowser.Server.Implementations.Session
{
var session = _sessionManager.Sessions.FirstOrDefault(i => i.WebSockets.Contains(message.Connection));
- if (session != null && session.UserId.HasValue)
+ if (session != null && session.User != null)
{
var item = DtoBuilder.GetItemByClientId(message.Data, _userManager, _libraryManager);
- _sessionManager.OnPlaybackStart(_userManager.GetUserById(session.UserId.Value), item, session.Client, session.DeviceId, session.DeviceName);
+ _sessionManager.OnPlaybackStart(_userManager.GetUserById(session.User.Id), item, session.Client, session.DeviceId, session.DeviceName);
}
}
else if (string.Equals(message.MessageType, "PlaybackProgress", StringComparison.OrdinalIgnoreCase))
{
var session = _sessionManager.Sessions.FirstOrDefault(i => i.WebSockets.Contains(message.Connection));
- if (session != null && session.UserId.HasValue)
+ if (session != null && session.User != null)
{
var vals = message.Data.Split('|');
@@ -130,14 +130,14 @@ namespace MediaBrowser.Server.Implementations.Session
var isPaused = vals.Length > 2 && string.Equals(vals[2], "true", StringComparison.OrdinalIgnoreCase);
- _sessionManager.OnPlaybackProgress(_userManager.GetUserById(session.UserId.Value), item, positionTicks, isPaused, session.Client, session.DeviceId, session.DeviceName);
+ _sessionManager.OnPlaybackProgress(_userManager.GetUserById(session.User.Id), item, positionTicks, isPaused, session.Client, session.DeviceId, session.DeviceName);
}
}
else if (string.Equals(message.MessageType, "PlaybackStopped", StringComparison.OrdinalIgnoreCase))
{
var session = _sessionManager.Sessions.FirstOrDefault(i => i.WebSockets.Contains(message.Connection));
- if (session != null && session.UserId.HasValue)
+ if (session != null && session.User != null)
{
var vals = message.Data.Split('|');
@@ -155,7 +155,7 @@ namespace MediaBrowser.Server.Implementations.Session
}
}
- _sessionManager.OnPlaybackStopped(_userManager.GetUserById(session.UserId.Value), item, positionTicks, session.Client, session.DeviceId, session.DeviceName);
+ _sessionManager.OnPlaybackStopped(_userManager.GetUserById(session.User.Id), item, positionTicks, session.Client, session.DeviceId, session.DeviceName);
}
}
diff --git a/MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs
index a59b15257..43224c6a9 100644
--- a/MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs
+++ b/MediaBrowser.ServerApplication/EntryPoints/LibraryChangedNotifier.cs
@@ -190,12 +190,18 @@ namespace MediaBrowser.ServerApplication.EntryPoints
{
var currentSessions = _sessionManager.Sessions.ToList();
- var users = currentSessions.Select(i => i.UserId ?? Guid.Empty).Where(i => i != Guid.Empty).Distinct().ToList();
+ var users = currentSessions.Select(i => i.User)
+ .Where(i => i != null)
+ .Select(i => i.Id)
+ .Distinct()
+ .ToList();
foreach (var userId in users)
{
var id = userId;
- var webSockets = currentSessions.Where(u => u.UserId.HasValue && u.UserId.Value == id).SelectMany(i => i.WebSockets).ToList();
+ var webSockets = currentSessions.Where(u => u.User != null && u.User.Id == id)
+ .SelectMany(i => i.WebSockets)
+ .ToList();
try
{
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 4f7162da7..5ef413b55 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -208,7 +208,7 @@ namespace MediaBrowser.WebDashboard.Api
var dtoBuilder = new UserDtoBuilder(logger);
- var tasks = userManager.Users.Where(u => connections.Any(c => c.UserId.HasValue && c.UserId.Value == u.Id)).Select(dtoBuilder.GetUserDto);
+ var tasks = userManager.Users.Where(u => connections.Any(c => c.User != null && c.User.Id == u.Id)).Select(dtoBuilder.GetUserDto);
var users = await Task.WhenAll(tasks).ConfigureAwait(false);