Merge pull request #67 from MarcDenman/feature/updateResponder

Change HttpStatusCodeMapper not to wrap responses
This commit is contained in:
Tom Pallister 2017-03-14 18:54:49 +00:00 committed by GitHub
commit 3e8a296631
4 changed files with 18 additions and 25 deletions

View File

@ -1,17 +1,16 @@
using System.Collections.Generic;
using System.Linq;
using Ocelot.Errors;
using Ocelot.Responses;
namespace Ocelot.Responder
{
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))
{
return new OkResponse<int>(401);
return 401;
}
if (errors.Any(e => e.Code == OcelotErrorCode.UnauthorizedError
@ -19,15 +18,15 @@ namespace Ocelot.Responder
|| e.Code == OcelotErrorCode.UserDoesNotHaveClaimError
|| e.Code == OcelotErrorCode.CannotFindClaimError))
{
return new OkResponse<int>(403);
return 403;
}
if (errors.Any(e => e.Code == OcelotErrorCode.RequestTimedOutError))
{
return new OkResponse<int>(503);
return 503;
}
return new OkResponse<int>(404);
return 404;
}
}
}

View File

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

View File

@ -21,7 +21,7 @@ namespace Ocelot.Responder.Middleware
IOcelotLoggerFactory loggerFactory,
IRequestScopedDataRepository requestScopedDataRepository,
IErrorsToHttpStatusCodeMapper codeMapper)
:base(requestScopedDataRepository)
: base(requestScopedDataRepository)
{
_next = next;
_responder = responder;
@ -60,14 +60,7 @@ namespace Ocelot.Responder.Middleware
{
var statusCode = _codeMapper.Map(errors);
if (!statusCode.IsError)
{
_responder.SetErrorResponseOnContext(context, statusCode.Data);
}
else
{
_responder.SetErrorResponseOnContext(context, 500);
}
_responder.SetErrorResponseOnContext(context, statusCode);
}
}
}

View File

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