diff options
Diffstat (limited to 'MediaBrowser.Api/HttpHandlers')
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/GenresHandler.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/ImageHandler.cs | 75 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/ItemHandler.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/ItemListHandler.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/JsonHandler.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/PersonHandler.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/PluginsHandler.cs | 36 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/StudiosHandler.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/UserConfigurationHandler.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/UsersHandler.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/HttpHandlers/YearsHandler.cs | 14 |
13 files changed, 138 insertions, 125 deletions
diff --git a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs index da397fec9..fd85993c8 100644 --- a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs @@ -107,17 +107,18 @@ namespace MediaBrowser.Api.HttpHandlers }
}
- public override void ProcessRequest(HttpListenerContext ctx)
+ public override async Task ProcessRequest(HttpListenerContext ctx)
{
HttpListenerContext = ctx;
if (!RequiresConversion())
{
- new StaticFileHandler() { Path = LibraryItem.Path }.ProcessRequest(ctx);
- return;
+ await new StaticFileHandler() { Path = LibraryItem.Path }.ProcessRequest(ctx);
+ }
+ else
+ {
+ await base.ProcessRequest(ctx);
}
-
- base.ProcessRequest(ctx);
}
protected abstract string GetCommandLineArguments();
diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs index e8e3fd80b..0c38a2396 100644 --- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -1,20 +1,18 @@ using System;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class GenresHandler : JsonHandler
+ public class GenresHandler : BaseJsonHandler
{
- protected sealed override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
+ Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
+ Guid userId = Guid.Parse(QueryString["userid"]);
- return Kernel.Instance.GetAllGenres(parent, userId);
- }
+ return Kernel.Instance.GetAllGenres(parent, userId);
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs index c53afb5c4..826438098 100644 --- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs @@ -2,6 +2,8 @@ using System.IO;
using System.Linq;
using System.Threading.Tasks;
+using MediaBrowser.Common.Logging;
+using MediaBrowser.Common.Net;
using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Entities;
@@ -10,12 +12,12 @@ namespace MediaBrowser.Api.HttpHandlers {
public class ImageHandler : BaseHandler
{
- private string _ImagePath = string.Empty;
+ private string _ImagePath = null;
private string ImagePath
{
get
{
- if (string.IsNullOrEmpty(_ImagePath))
+ if (_ImagePath == null)
{
_ImagePath = GetImagePath();
}
@@ -24,18 +26,61 @@ namespace MediaBrowser.Api.HttpHandlers }
}
- public override string ContentType
+ private Stream _SourceStream = null;
+ private Stream SourceStream
{
get
{
- string extension = Path.GetExtension(ImagePath);
+ EnsureSourceStream();
+
+ return _SourceStream;
+ }
+ }
- if (extension.EndsWith("png", StringComparison.OrdinalIgnoreCase))
+
+ private bool _SourceStreamEnsured = false;
+ private void EnsureSourceStream()
+ {
+ if (!_SourceStreamEnsured)
+ {
+ try
+ {
+ _SourceStream = File.OpenRead(ImagePath);
+ }
+ catch (FileNotFoundException ex)
+ {
+ StatusCode = 404;
+ Logger.LogException(ex);
+ }
+ catch (DirectoryNotFoundException ex)
+ {
+ StatusCode = 404;
+ Logger.LogException(ex);
+ }
+ catch (UnauthorizedAccessException ex)
+ {
+ StatusCode = 403;
+ Logger.LogException(ex);
+ }
+ finally
{
- return "image/png";
+ _SourceStreamEnsured = true;
}
+ }
+ }
+
+ public override string ContentType
+ {
+ get
+ {
+ EnsureSourceStream();
- return "image/jpeg";
+ if (SourceStream == null)
+ {
+ return null;
+ }
+
+ return MimeTypes.GetMimeType(ImagePath);
}
}
@@ -49,14 +94,14 @@ namespace MediaBrowser.Api.HttpHandlers protected override DateTime? GetLastDateModified()
{
- try
- {
- return File.GetLastWriteTime(ImagePath);
- }
- catch
+ EnsureSourceStream();
+
+ if (SourceStream == null)
{
- return base.GetLastDateModified();
+ return null;
}
+
+ return File.GetLastWriteTime(ImagePath);
}
private int? Height
@@ -142,7 +187,7 @@ namespace MediaBrowser.Api.HttpHandlers if (string.IsNullOrEmpty(imageType))
{
- return Model.Entities.ImageType.Primary;
+ return ImageType.Primary;
}
return (ImageType)Enum.Parse(typeof(ImageType), imageType, true);
@@ -153,7 +198,7 @@ namespace MediaBrowser.Api.HttpHandlers {
return Task.Run(() =>
{
- ImageProcessor.ProcessImage(ImagePath, stream, Width, Height, MaxWidth, MaxHeight, Quality);
+ ImageProcessor.ProcessImage(SourceStream, stream, Width, Height, MaxWidth, MaxHeight, Quality);
});
}
diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs index a54d65524..28def271f 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs @@ -1,18 +1,23 @@ using System;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class ItemHandler : JsonHandler
+ public class ItemHandler : BaseJsonHandler
{
- protected sealed override object ObjectToSerialize
+ protected sealed override object GetObjectToSerialize()
{
- get
- {
- Guid userId = Guid.Parse(QueryString["userid"]);
+ Guid userId = Guid.Parse(QueryString["userid"]);
+
+ BaseItem item = ItemToSerialize;
- return ApiService.GetSerializationObject(ItemToSerialize, true, userId);
+ if (item == null)
+ {
+ return null;
}
+
+ return ApiService.GetSerializationObject(item, true, userId);
}
protected virtual BaseItem ItemToSerialize
diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs index a94c2061e..0d9d3d0a8 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs @@ -1,22 +1,20 @@ using System;
using System.Collections.Generic;
using System.Linq;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public abstract class ItemListHandler : JsonHandler
+ public abstract class ItemListHandler : BaseJsonHandler
{
- protected sealed override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
+ return ItemsToSerialize.Select(i =>
{
- return ItemsToSerialize.Select(i =>
- {
- return ApiService.GetSerializationObject(i, false, UserId);
+ return ApiService.GetSerializationObject(i, false, UserId);
- });
- }
+ });
}
protected abstract IEnumerable<BaseItem> ItemsToSerialize
diff --git a/MediaBrowser.Api/HttpHandlers/JsonHandler.cs b/MediaBrowser.Api/HttpHandlers/JsonHandler.cs deleted file mode 100644 index bffa84174..000000000 --- a/MediaBrowser.Api/HttpHandlers/JsonHandler.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.IO;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Net.Handlers;
-using MediaBrowser.Common.Serialization;
-
-namespace MediaBrowser.Api.HttpHandlers
-{
- public abstract class JsonHandler : BaseJsonHandler
- {
- protected abstract object ObjectToSerialize { get; }
-
- protected override Task WriteResponseToOutputStream(Stream stream)
- {
- return Task.Run(() =>
- {
- JsonSerializer.SerializeToStream(ObjectToSerialize, stream);
- });
- }
- }
-}
diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index c70ad39ca..103e49cd2 100644 --- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -1,15 +1,13 @@ -using MediaBrowser.Controller;
+using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Controller;
namespace MediaBrowser.Api.HttpHandlers
{
- public class PersonHandler : JsonHandler
+ public class PersonHandler : BaseJsonHandler
{
- protected sealed override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- return Kernel.Instance.ItemController.GetPerson(QueryString["name"]);
- }
+ return Kernel.Instance.ItemController.GetPerson(QueryString["name"]);
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs b/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs index 5f5203dae..4dc317ecc 100644 --- a/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs @@ -1,19 +1,17 @@ using System;
using System.Linq;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
namespace MediaBrowser.Api.HttpHandlers
{
- public class PluginConfigurationHandler : JsonHandler
+ public class PluginConfigurationHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- string pluginName = QueryString["name"];
+ string pluginName = QueryString["name"];
- return Kernel.Instance.Plugins.First(p => p.Name.Equals(pluginName, StringComparison.OrdinalIgnoreCase)).Configuration;
- }
+ return Kernel.Instance.Plugins.First(p => p.Name.Equals(pluginName, StringComparison.OrdinalIgnoreCase)).Configuration;
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs b/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs index 63797026d..a44e12692 100644 --- a/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs @@ -1,4 +1,5 @@ using System.Linq;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Plugins;
@@ -7,31 +8,28 @@ namespace MediaBrowser.Api.HttpHandlers /// <summary>
/// Provides information about installed plugins
/// </summary>
- public class PluginsHandler : JsonHandler
+ public class PluginsHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
+ var plugins = Kernel.Instance.Plugins.Select(p =>
{
- var plugins = Kernel.Instance.Plugins.Select(p =>
+ return new PluginInfo()
{
- return new PluginInfo()
- {
- Path = p.Path,
- Name = p.Name,
- Enabled = p.Enabled,
- DownloadToUI = p.DownloadToUI,
- Version = p.Version
- };
- });
+ Path = p.Path,
+ Name = p.Name,
+ Enabled = p.Enabled,
+ DownloadToUI = p.DownloadToUI,
+ Version = p.Version
+ };
+ });
- if (QueryString["uionly"] == "1")
- {
- plugins = plugins.Where(p => p.DownloadToUI);
- }
-
- return plugins;
+ if (QueryString["uionly"] == "1")
+ {
+ plugins = plugins.Where(p => p.DownloadToUI);
}
+
+ return plugins;
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs index ff48ae6e3..a381af15f 100644 --- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs @@ -1,20 +1,18 @@ using System;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class StudiosHandler : JsonHandler
+ public class StudiosHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
+ Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
+ Guid userId = Guid.Parse(QueryString["userid"]);
- return Kernel.Instance.GetAllStudios(parent, userId);
- }
+ return Kernel.Instance.GetAllStudios(parent, userId);
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/UserConfigurationHandler.cs b/MediaBrowser.Api/HttpHandlers/UserConfigurationHandler.cs index 06c3ea86d..f9d3536b6 100644 --- a/MediaBrowser.Api/HttpHandlers/UserConfigurationHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UserConfigurationHandler.cs @@ -1,18 +1,16 @@ using System;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
namespace MediaBrowser.Api.HttpHandlers
{
- public class UserConfigurationHandler : JsonHandler
+ public class UserConfigurationHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- Guid userId = Guid.Parse(QueryString["userid"]);
+ Guid userId = Guid.Parse(QueryString["userid"]);
- return Kernel.Instance.GetUserConfiguration(userId);
- }
+ return Kernel.Instance.GetUserConfiguration(userId);
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs index d10561e43..64f68f62f 100644 --- a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs @@ -1,15 +1,13 @@ -using MediaBrowser.Controller;
+using MediaBrowser.Common.Net.Handlers;
+using MediaBrowser.Controller;
namespace MediaBrowser.Api.HttpHandlers
{
- class UsersHandler : JsonHandler
+ class UsersHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- return Kernel.Instance.Users;
- }
+ return Kernel.Instance.Users;
}
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs index 6f4787028..044866dca 100644 --- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs @@ -1,20 +1,18 @@ using System;
+using MediaBrowser.Common.Net.Handlers;
using MediaBrowser.Controller;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Api.HttpHandlers
{
- public class YearsHandler : JsonHandler
+ public class YearsHandler : BaseJsonHandler
{
- protected override object ObjectToSerialize
+ protected override object GetObjectToSerialize()
{
- get
- {
- Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
- Guid userId = Guid.Parse(QueryString["userid"]);
+ Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder;
+ Guid userId = Guid.Parse(QueryString["userid"]);
- return Kernel.Instance.GetAllYears(parent, userId);
- }
+ return Kernel.Instance.GetAllYears(parent, userId);
}
}
}
|
