some tidying up and a bit of refactoring...not too happy about how the proxy is working at the moment! May need a rethink!

This commit is contained in:
TomPallister
2016-09-11 21:32:56 +01:00
parent 87702141e2
commit 72cec38c0e
16 changed files with 151 additions and 60 deletions

View File

@ -1,11 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using Ocelot.Library.Infrastructure.Responses;
namespace Ocelot.Library.Infrastructure.Configuration
{
public class ConfigurationValidationResult
{
public ConfigurationValidationResult(bool isError)
{
IsError = isError;
Errors = new List<Error>();
}
public ConfigurationValidationResult(bool isError, List<Error> errors)
{
IsError = isError;
Errors = errors;
}
public bool IsError { get; private set; }
public List<Error> Errors { get; private set; }
}
}

View File

@ -1,7 +1,5 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ocelot.Library.Infrastructure.Responses;
namespace Ocelot.Library.Infrastructure.Configuration
@ -19,7 +17,7 @@ namespace Ocelot.Library.Infrastructure.Configuration
if (duplicateUpstreamTemplates.Count <= 0)
{
return new OkResponse<ConfigurationValidationResult>(new ConfigurationValidationResult());
return new OkResponse<ConfigurationValidationResult>(new ConfigurationValidationResult(false));
}
var errors = new List<Error>();
@ -31,7 +29,7 @@ namespace Ocelot.Library.Infrastructure.Configuration
errors.Add(error);
}
return new ErrorResponse<ConfigurationValidationResult>(errors);
return new OkResponse<ConfigurationValidationResult>(new ConfigurationValidationResult(true, errors));
}
}
}

View File

@ -18,7 +18,6 @@ namespace Ocelot.Library.Infrastructure.DownstreamRouteFinder
public Response<DownstreamRoute> FindDownstreamRoute(string upstreamUrlPath)
{
foreach (var template in _configuration.Value.ReRoutes)
{
var urlMatch = _urlMatcher.Match(upstreamUrlPath, template.UpstreamTemplate);

View File

@ -0,0 +1,21 @@
using System.Net.Http;
using System.Threading.Tasks;
namespace Ocelot.Library.Infrastructure.Requester
{
public class HttpClientHttpRequester : IHttpRequester
{
public async Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl)
{
var method = new HttpMethod(httpMethod);
var httpRequestMessage = new HttpRequestMessage(method, downstreamUrl);
using (var httpClient = new HttpClient())
{
var response = await httpClient.SendAsync(httpRequestMessage);
return response;
}
}
}
}

View File

@ -0,0 +1,11 @@
using System.Net.Http;
using System.Threading.Tasks;
using Flurl.Http;
namespace Ocelot.Library.Infrastructure.Requester
{
public interface IHttpRequester
{
Task<HttpResponseMessage> GetResponse(string httpMethod, string downstreamUrl);
}
}

View File

@ -0,0 +1,27 @@
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
namespace Ocelot.Library.Infrastructure.Responder
{
public class HttpContextResponder : IHttpResponder
{
public async Task<HttpContext> CreateSuccessResponse(HttpContext context, HttpResponseMessage response)
{
if (!response.IsSuccessStatusCode)
{
context.Response.StatusCode = (int)response.StatusCode;
return context;
}
await context.Response.WriteAsync(await response.Content.ReadAsStringAsync());
return context;
}
public async Task<HttpContext> CreateNotFoundResponse(HttpContext context)
{
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
return context;
}
}
}

View File

@ -0,0 +1,13 @@
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
namespace Ocelot.Library.Infrastructure.Responder
{
public interface IHttpResponder
{
Task<HttpContext> CreateSuccessResponse(HttpContext context, HttpResponseMessage response);
Task<HttpContext> CreateNotFoundResponse(HttpContext context);
}
}

View File

@ -5,7 +5,7 @@ namespace Ocelot.Library.Infrastructure.UrlTemplateReplacer
{
public class DownstreamUrlTemplateVariableReplacer : IDownstreamUrlTemplateVariableReplacer
{
public string ReplaceTemplateVariable(DownstreamRoute downstreamRoute)
public string ReplaceTemplateVariables(DownstreamRoute downstreamRoute)
{
var upstreamUrl = new StringBuilder();

View File

@ -5,6 +5,6 @@ namespace Ocelot.Library.Infrastructure.UrlTemplateReplacer
{
public interface IDownstreamUrlTemplateVariableReplacer
{
string ReplaceTemplateVariable(DownstreamRoute downstreamRoute);
string ReplaceTemplateVariables(DownstreamRoute downstreamRoute);
}
}