update exception response mapping

This commit is contained in:
Luke Pulverenti 2016-12-27 02:24:44 -05:00
parent cb8751f985
commit 0b53004c61

View File

@ -91,16 +91,12 @@ namespace Emby.Server.Implementations.HttpServer
readonly Dictionary<Type, int> _mapExceptionToStatusCode = new Dictionary<Type, int> readonly Dictionary<Type, int> _mapExceptionToStatusCode = new Dictionary<Type, int>
{ {
{typeof (InvalidOperationException), 500},
{typeof (NotImplementedException), 500},
{typeof (ResourceNotFoundException), 404}, {typeof (ResourceNotFoundException), 404},
{typeof (FileNotFoundException), 404}, {typeof (FileNotFoundException), 404},
//{typeof (DirectoryNotFoundException), 404}, //{typeof (DirectoryNotFoundException), 404},
{typeof (SecurityException), 401}, {typeof (SecurityException), 401},
{typeof (PaymentRequiredException), 402}, {typeof (PaymentRequiredException), 402},
{typeof (UnauthorizedAccessException), 500}, {typeof (ArgumentException), 400}
{typeof (PlatformNotSupportedException), 500},
{typeof (NotSupportedException), 500}
}; };
public override void Configure() public override void Configure()
@ -228,6 +224,22 @@ namespace Emby.Server.Implementations.HttpServer
} }
} }
private int GetStatusCode(Exception ex)
{
if (ex is ArgumentException)
{
return 400;
}
int statusCode;
if (!_mapExceptionToStatusCode.TryGetValue(ex.GetType(), out statusCode))
{
statusCode = 500;
}
return statusCode;
}
private void ErrorHandler(Exception ex, IRequest httpReq, bool logException = true) private void ErrorHandler(Exception ex, IRequest httpReq, bool logException = true)
{ {
try try
@ -244,11 +256,7 @@ namespace Emby.Server.Implementations.HttpServer
return; return;
} }
int statusCode; var statusCode = GetStatusCode(ex);
if (!_mapExceptionToStatusCode.TryGetValue(ex.GetType(), out statusCode))
{
statusCode = 500;
}
httpRes.StatusCode = statusCode; httpRes.StatusCode = statusCode;
httpRes.ContentType = "text/html"; httpRes.ContentType = "text/html";