I realised we can get rid of the cookie container as cookies are just sent as a header called cookie...

This commit is contained in:
TomPallister
2017-03-05 18:05:20 +00:00
parent d0118ea4a3
commit c787202374
12 changed files with 344 additions and 392 deletions

View File

@ -14,7 +14,6 @@ namespace Ocelot.Request.Builder
string downstreamUrl,
Stream content,
IHeaderDictionary headers,
IRequestCookieCollection cookies,
QueryString queryString,
string contentType,
RequestId.RequestId requestId,
@ -29,7 +28,6 @@ namespace Ocelot.Request.Builder
.WithContentType(contentType)
.WithHeaders(headers)
.WithRequestId(requestId)
.WithCookies(cookies)
.WithIsQos(isQos)
.WithQos(qosProvider)
.Build();

View File

@ -12,7 +12,6 @@ namespace Ocelot.Request.Builder
string downstreamUrl,
Stream content,
IHeaderDictionary headers,
IRequestCookieCollection cookies,
QueryString queryString,
string contentType,
RequestId.RequestId requestId,

View File

@ -21,7 +21,6 @@ namespace Ocelot.Request.Builder
private string _contentType;
private IHeaderDictionary _headers;
private RequestId.RequestId _requestId;
private IRequestCookieCollection _cookies;
private readonly string[] _unsupportedHeaders = {"host"};
private bool _isQos;
private IQoSProvider _qoSProvider;
@ -68,12 +67,6 @@ namespace Ocelot.Request.Builder
return this;
}
public RequestBuilder WithCookies(IRequestCookieCollection cookies)
{
_cookies = cookies;
return this;
}
public RequestBuilder WithIsQos(bool isqos)
{
_isQos = isqos;
@ -103,9 +96,7 @@ namespace Ocelot.Request.Builder
AddRequestIdHeader(_requestId, httpRequestMessage);
}
var cookieContainer = CreateCookieContainer(uri);
return new Request(httpRequestMessage, cookieContainer,_isQos, _qoSProvider);
return new Request(httpRequestMessage,_isQos, _qoSProvider);
}
private Uri CreateUri()
@ -153,21 +144,6 @@ namespace Ocelot.Request.Builder
return !_unsupportedHeaders.Contains(header.Key.ToLower());
}
private CookieContainer CreateCookieContainer(Uri uri)
{
var cookieContainer = new CookieContainer();
if (_cookies != null)
{
foreach (var cookie in _cookies)
{
cookieContainer.Add(uri, new Cookie(cookie.Key, cookie.Value));
}
}
return cookieContainer;
}
private void AddRequestIdHeader(RequestId.RequestId requestId, HttpRequestMessage httpRequestMessage)
{
httpRequestMessage.Headers.Add(requestId.RequestIdKey, requestId.RequestIdValue);

View File

@ -48,7 +48,6 @@ namespace Ocelot.Request.Middleware
DownstreamUrl,
context.Request.Body,
context.Request.Headers,
context.Request.Cookies,
context.Request.QueryString,
context.Request.ContentType,
new RequestId.RequestId(DownstreamRoute?.ReRoute?.RequestIdKey, context.TraceIdentifier),

View File

@ -1,7 +1,4 @@
using Ocelot.Configuration;
using Ocelot.Values;
using System.Net;
using System.Net.Http;
using System.Net.Http;
using Ocelot.Requester.QoS;
namespace Ocelot.Request
@ -10,18 +7,15 @@ namespace Ocelot.Request
{
public Request(
HttpRequestMessage httpRequestMessage,
CookieContainer cookieContainer,
bool isQos,
IQoSProvider qosProvider)
{
HttpRequestMessage = httpRequestMessage;
CookieContainer = cookieContainer;
IsQos = isQos;
QosProvider = qosProvider;
}
public HttpRequestMessage HttpRequestMessage { get; private set; }
public CookieContainer CookieContainer { get; private set; }
public bool IsQos { get; private set; }
public IQoSProvider QosProvider { get; private set; }
}

View File

@ -11,17 +11,17 @@ namespace Ocelot.Requester
{
private readonly Dictionary<int, Func<DelegatingHandler>> _handlers = new Dictionary<int, Func<DelegatingHandler>>();
public HttpClientBuilder WithQoS(IQoSProvider qoSProvider, IOcelotLogger logger, HttpMessageHandler innerHandler)
public HttpClientBuilder WithQoS(IQoSProvider qoSProvider, IOcelotLogger logger)
{
_handlers.Add(5000, () => new PollyCircuitBreakingDelegatingHandler(qoSProvider, logger, innerHandler));
_handlers.Add(5000, () => new PollyCircuitBreakingDelegatingHandler(qoSProvider, logger));
return this;
}
internal HttpClient Build(HttpMessageHandler innerHandler)
internal HttpClient Build()
{
return _handlers.Any() ?
new HttpClient(CreateHttpMessageHandler()) :
new HttpClient(innerHandler);
new HttpClient();
}
private HttpMessageHandler CreateHttpMessageHandler()

View File

@ -19,36 +19,33 @@ namespace Ocelot.Requester
public async Task<Response<HttpResponseMessage>> GetResponse(Request.Request request)
{
var builder = new HttpClientBuilder();
var builder = new HttpClientBuilder();
using (var handler = new HttpClientHandler { CookieContainer = request.CookieContainer })
if (request.IsQos)
{
if (request.IsQos)
{
builder.WithQoS(request.QosProvider, _logger, handler);
}
builder.WithQoS(request.QosProvider, _logger);
}
using (var httpClient = builder.Build(handler))
using (var httpClient = builder.Build())
{
try
{
try
{
var response = await httpClient.SendAsync(request.HttpRequestMessage);
return new OkResponse<HttpResponseMessage>(response);
}
catch (TimeoutRejectedException exception)
{
return
new ErrorResponse<HttpResponseMessage>(new RequestTimedOutError(exception));
}
catch (BrokenCircuitException exception)
{
return
new ErrorResponse<HttpResponseMessage>(new RequestTimedOutError(exception));
}
catch (Exception exception)
{
return new ErrorResponse<HttpResponseMessage>(new UnableToCompleteRequestError(exception));
}
var response = await httpClient.SendAsync(request.HttpRequestMessage);
return new OkResponse<HttpResponseMessage>(response);
}
catch (TimeoutRejectedException exception)
{
return
new ErrorResponse<HttpResponseMessage>(new RequestTimedOutError(exception));
}
catch (BrokenCircuitException exception)
{
return
new ErrorResponse<HttpResponseMessage>(new RequestTimedOutError(exception));
}
catch (Exception exception)
{
return new ErrorResponse<HttpResponseMessage>(new UnableToCompleteRequestError(exception));
}
}
}

View File

@ -16,9 +16,7 @@ namespace Ocelot.Requester
public PollyCircuitBreakingDelegatingHandler(
IQoSProvider qoSProvider,
IOcelotLogger logger,
HttpMessageHandler innerHandler)
: base(innerHandler)
IOcelotLogger logger)
{
_qoSProvider = qoSProvider;
_logger = logger;