brought in flurl and stated adding tests for the requester

This commit is contained in:
TomPallister
2016-09-13 20:29:00 +01:00
parent 8423199754
commit 0627e9399b
11 changed files with 163 additions and 38 deletions

View File

@ -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));
}
}
}

View File

@ -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);
}
}

View File

@ -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)
{

View File

@ -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);
}

View File

@ -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);
}