Merged in develop

This commit is contained in:
Marc Denman 2017-03-14 21:50:03 +00:00
commit 82ecd667e0
4 changed files with 18 additions and 25 deletions

View File

@ -1,17 +1,16 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Ocelot.Errors; using Ocelot.Errors;
using Ocelot.Responses;
namespace Ocelot.Responder namespace Ocelot.Responder
{ {
public class ErrorsToHttpStatusCodeMapper : IErrorsToHttpStatusCodeMapper public class ErrorsToHttpStatusCodeMapper : IErrorsToHttpStatusCodeMapper
{ {
public Response<int> Map(List<Error> errors) public int Map(List<Error> errors)
{ {
if (errors.Any(e => e.Code == OcelotErrorCode.UnauthenticatedError)) if (errors.Any(e => e.Code == OcelotErrorCode.UnauthenticatedError))
{ {
return new OkResponse<int>(401); return 401;
} }
if (errors.Any(e => e.Code == OcelotErrorCode.UnauthorizedError if (errors.Any(e => e.Code == OcelotErrorCode.UnauthorizedError
@ -19,20 +18,20 @@ namespace Ocelot.Responder
|| e.Code == OcelotErrorCode.UserDoesNotHaveClaimError || e.Code == OcelotErrorCode.UserDoesNotHaveClaimError
|| e.Code == OcelotErrorCode.CannotFindClaimError)) || e.Code == OcelotErrorCode.CannotFindClaimError))
{ {
return new OkResponse<int>(403); return 403;
} }
if (errors.Any(e => e.Code == OcelotErrorCode.RequestTimedOutError)) if (errors.Any(e => e.Code == OcelotErrorCode.RequestTimedOutError))
{ {
return new OkResponse<int>(503); return 503;
} }
if (errors.Any(e => e.Code == OcelotErrorCode.UnableToFindDownstreamRouteError)) if (errors.Any(e => e.Code == OcelotErrorCode.UnableToFindDownstreamRouteError))
{ {
return new OkResponse<int>(404); return 404;
} }
return new OkResponse<int>(404); return 404;
} }
} }
} }

View File

@ -1,11 +1,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using Ocelot.Errors; using Ocelot.Errors;
using Ocelot.Responses;
namespace Ocelot.Responder namespace Ocelot.Responder
{ {
/// <summary>
/// Map a list OceoltErrors to a single appropriate HTTP status code
/// </summary>
public interface IErrorsToHttpStatusCodeMapper public interface IErrorsToHttpStatusCodeMapper
{ {
Response<int> Map(List<Error> errors); int Map(List<Error> errors);
} }
} }

View File

@ -60,14 +60,7 @@ namespace Ocelot.Responder.Middleware
{ {
var statusCode = _codeMapper.Map(errors); var statusCode = _codeMapper.Map(errors);
if (!statusCode.IsError) _responder.SetErrorResponseOnContext(context, statusCode);
{
_responder.SetErrorResponseOnContext(context, statusCode.Data);
}
else
{
_responder.SetErrorResponseOnContext(context, 500);
}
} }
} }
} }

View File

@ -4,7 +4,6 @@ using Ocelot.Errors;
using Ocelot.Middleware; using Ocelot.Middleware;
using Ocelot.Requester; using Ocelot.Requester;
using Ocelot.Responder; using Ocelot.Responder;
using Ocelot.Responses;
using Shouldly; using Shouldly;
using TestStack.BDDfy; using TestStack.BDDfy;
using Xunit; using Xunit;
@ -14,7 +13,7 @@ namespace Ocelot.UnitTests.Responder
public class ErrorsToHttpStatusCodeMapperTests public class ErrorsToHttpStatusCodeMapperTests
{ {
private readonly IErrorsToHttpStatusCodeMapper _codeMapper; private readonly IErrorsToHttpStatusCodeMapper _codeMapper;
private Response<int> _result; private int _result;
private List<Error> _errors; private List<Error> _errors;
public ErrorsToHttpStatusCodeMapperTests() public ErrorsToHttpStatusCodeMapperTests()
@ -77,7 +76,7 @@ namespace Ocelot.UnitTests.Responder
private void ThenTheResponseIsStatusCodeIs(int expectedCode) private void ThenTheResponseIsStatusCodeIs(int expectedCode)
{ {
_result.Data.ShouldBe(expectedCode); _result.ShouldBe(expectedCode);
} }
} }
} }