mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 05:48:16 +08:00
brought in flurl and stated adding tests for the requester
This commit is contained in:
@ -1,21 +1,17 @@
|
||||
using System.Net.Http;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Flurl.Http;
|
||||
|
||||
namespace Ocelot.Library.Infrastructure.Requester
|
||||
{
|
||||
public class HttpClientHttpRequester : IHttpRequester
|
||||
{
|
||||
public async Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl)
|
||||
public async Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl, Stream content = null)
|
||||
{
|
||||
var method = new HttpMethod(httpMethod);
|
||||
|
||||
var httpRequestMessage = new HttpRequestMessage(method, downstreamUrl);
|
||||
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
var response = await httpClient.SendAsync(httpRequestMessage);
|
||||
return response;
|
||||
}
|
||||
return await downstreamUrl.SendAsync(method, new StreamContent(content));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
using System.Net.Http;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Flurl.Http;
|
||||
|
||||
@ -6,6 +7,6 @@ namespace Ocelot.Library.Infrastructure.Requester
|
||||
{
|
||||
public interface IHttpRequester
|
||||
{
|
||||
Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl);
|
||||
Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl, Stream content = null);
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ namespace Ocelot.Library.Infrastructure.Responder
|
||||
{
|
||||
public class HttpContextResponder : IHttpResponder
|
||||
{
|
||||
public async Task<HttpContext> CreateSuccessResponse(HttpContext context, HttpResponseMessage response)
|
||||
public async Task<HttpContext> CreateResponse(HttpContext context, HttpResponseMessage response)
|
||||
{
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
|
@ -6,7 +6,7 @@ namespace Ocelot.Library.Infrastructure.Responder
|
||||
{
|
||||
public interface IHttpResponder
|
||||
{
|
||||
Task<HttpContext> CreateSuccessResponse(HttpContext context, HttpResponseMessage response);
|
||||
Task<HttpContext> CreateResponse(HttpContext context, HttpResponseMessage response);
|
||||
Task<HttpContext> CreateNotFoundResponse(HttpContext context);
|
||||
|
||||
}
|
||||
|
@ -47,9 +47,9 @@ namespace Ocelot.Library.Middleware
|
||||
|
||||
var downstreamUrl = _urlReplacer.ReplaceTemplateVariables(downstreamRoute.Data);
|
||||
|
||||
var response = await _requester.GetResponse(context.Request.Method, downstreamUrl);
|
||||
var response = await _requester.GetResponse(context.Request.Method, downstreamUrl, context.Request.Body);
|
||||
|
||||
context = await _responder.CreateSuccessResponse(context, response);
|
||||
await _responder.CreateResponse(context, response);
|
||||
|
||||
await _next.Invoke(context);
|
||||
}
|
||||
|
Reference in New Issue
Block a user