mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-22 06:22:50 +08:00
Merged in develop
This commit is contained in:
commit
82ecd667e0
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user