Removed unused usings, removed empty spaces, removed tons os warnings (#903)

This commit is contained in:
Thiago Loureiro 2019-05-28 11:00:54 +08:00 committed by GitHub
parent 4476f8273e
commit 5d82e68534
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
486 changed files with 3049 additions and 3143 deletions

View File

@ -4,10 +4,10 @@ namespace Ocelot.Administration
public interface IIdentityServerConfiguration public interface IIdentityServerConfiguration
{ {
string ApiName { get; } string ApiName { get; }
string ApiSecret { get; } string ApiSecret { get; }
bool RequireHttps { get; } bool RequireHttps { get; }
List<string> AllowedScopes { get; } List<string> AllowedScopes { get; }
string CredentialsSigningCertificateLocation { get; } string CredentialsSigningCertificateLocation { get; }
string CredentialsSigningCertificatePassword { get; } string CredentialsSigningCertificatePassword { get; }
} }

View File

@ -1,11 +1,10 @@
namespace Ocelot.Administration namespace Ocelot.Administration
{ {
using System.Threading.Tasks;
using Configuration;
using Configuration.Repository; using Configuration.Repository;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Ocelot.Middleware; using Ocelot.Middleware;
using System.Threading.Tasks;
public static class IdentityServerMiddlewareConfigurationProvider public static class IdentityServerMiddlewareConfigurationProvider
{ {

View File

@ -1,14 +1,6 @@
namespace Ocelot.Administration namespace Ocelot.Administration
{ {
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using Configuration;
using Configuration.Creator;
using DependencyInjection; using DependencyInjection;
using IdentityModel;
using IdentityServer4.AccessTokenValidation; using IdentityServer4.AccessTokenValidation;
using IdentityServer4.Models; using IdentityServer4.Models;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
@ -16,6 +8,10 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using Ocelot.Middleware; using Ocelot.Middleware;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Cryptography.X509Certificates;
public static class OcelotBuilderExtensions public static class OcelotBuilderExtensions
{ {
@ -61,7 +57,8 @@
{ {
builder.Services.TryAddSingleton<IIdentityServerConfiguration>(identityServerConfiguration); builder.Services.TryAddSingleton<IIdentityServerConfiguration>(identityServerConfiguration);
var identityServerBuilder = builder.Services var identityServerBuilder = builder.Services
.AddIdentityServer(o => { .AddIdentityServer(o =>
{
o.IssuerUri = "Ocelot"; o.IssuerUri = "Ocelot";
}) })
.AddInMemoryApiResources(Resources(identityServerConfiguration)) .AddInMemoryApiResources(Resources(identityServerConfiguration))

View File

@ -1,12 +1,12 @@
namespace Ocelot.Cache.CacheManager namespace Ocelot.Cache.CacheManager
{ {
using System;
using Configuration; using Configuration;
using Configuration.File; using Configuration.File;
using DependencyInjection; using DependencyInjection;
using global::CacheManager.Core; using global::CacheManager.Core;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using System;
public static class OcelotBuilderExtensions public static class OcelotBuilderExtensions
{ {

View File

@ -1,7 +1,7 @@
namespace Ocelot.Cache.CacheManager namespace Ocelot.Cache.CacheManager
{ {
using System;
using global::CacheManager.Core; using global::CacheManager.Core;
using System;
public class OcelotCacheManagerCache<T> : IOcelotCache<T> public class OcelotCacheManagerCache<T> : IOcelotCache<T>
{ {

View File

@ -1,16 +1,15 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using global::Consul; using global::Consul;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using Logging; using Logging;
using ServiceDiscovery.Providers; using ServiceDiscovery.Providers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Values; using Values;
public class Consul : IServiceDiscoveryProvider public class Consul : IServiceDiscoveryProvider
{ {
private readonly ConsulRegistryConfiguration _config; private readonly ConsulRegistryConfiguration _config;

View File

@ -1,7 +1,7 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using System;
using global::Consul; using global::Consul;
using System;
public class ConsulClientFactory : IConsulClientFactory public class ConsulClientFactory : IConsulClientFactory
{ {

View File

@ -1,14 +1,14 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using System;
using System.Text;
using System.Threading.Tasks;
using Configuration.File; using Configuration.File;
using Configuration.Repository; using Configuration.Repository;
using global::Consul; using global::Consul;
using Logging; using Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using Responses; using Responses;
using System;
using System.Text;
using System.Threading.Tasks;
public class ConsulFileConfigurationRepository : IFileConfigurationRepository public class ConsulFileConfigurationRepository : IFileConfigurationRepository
{ {

View File

@ -1,8 +1,5 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using System;
using System.Linq;
using System.Threading.Tasks;
using Configuration.Creator; using Configuration.Creator;
using Configuration.File; using Configuration.File;
using Configuration.Repository; using Configuration.Repository;
@ -11,6 +8,9 @@
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Middleware; using Middleware;
using Responses; using Responses;
using System;
using System.Linq;
using System.Threading.Tasks;
public static class ConsulMiddlewareConfigurationProvider public static class ConsulMiddlewareConfigurationProvider
{ {

View File

@ -1,8 +1,6 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using System.Threading.Tasks;
using Logging; using Logging;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using ServiceDiscovery; using ServiceDiscovery;

View File

@ -1,10 +1,10 @@
namespace Ocelot.Provider.Consul namespace Ocelot.Provider.Consul
{ {
using Logging;
using ServiceDiscovery.Providers;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Logging;
using ServiceDiscovery.Providers;
using Values; using Values;
public class PollConsul : IServiceDiscoveryProvider public class PollConsul : IServiceDiscoveryProvider

View File

@ -4,7 +4,7 @@
public class UnableToSetConfigInConsulError : Error public class UnableToSetConfigInConsulError : Error
{ {
public UnableToSetConfigInConsulError(string s) public UnableToSetConfigInConsulError(string s)
: base(s, OcelotErrorCode.UnknownError) : base(s, OcelotErrorCode.UnknownError)
{ {
} }

View File

@ -1,10 +1,10 @@
namespace Ocelot.Provider.Eureka namespace Ocelot.Provider.Eureka
{ {
using ServiceDiscovery.Providers;
using Steeltoe.Common.Discovery;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using ServiceDiscovery.Providers;
using Steeltoe.Common.Discovery;
using Values; using Values;
public class Eureka : IServiceDiscoveryProvider public class Eureka : IServiceDiscoveryProvider

View File

@ -1,11 +1,11 @@
namespace Ocelot.Provider.Eureka namespace Ocelot.Provider.Eureka
{ {
using System.Threading.Tasks;
using Configuration; using Configuration;
using Configuration.Repository; using Configuration.Repository;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Middleware; using Middleware;
using Steeltoe.Discovery.Client; using Steeltoe.Discovery.Client;
using System.Threading.Tasks;
public class EurekaMiddlewareConfigurationProvider public class EurekaMiddlewareConfigurationProvider
{ {

View File

@ -2,7 +2,6 @@
{ {
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using ServiceDiscovery; using ServiceDiscovery;
using ServiceDiscovery.Providers;
using Steeltoe.Common.Discovery; using Steeltoe.Common.Discovery;
public static class EurekaProviderFactory public static class EurekaProviderFactory

View File

@ -1,12 +1,12 @@
namespace Ocelot.Provider.Eureka namespace Ocelot.Provider.Eureka
{ {
using System.Linq;
using DependencyInjection; using DependencyInjection;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Middleware; using Middleware;
using Steeltoe.Discovery.Client;
using ServiceDiscovery; using ServiceDiscovery;
using Steeltoe.Discovery.Client;
using System.Linq;
public static class OcelotBuilderExtensions public static class OcelotBuilderExtensions
{ {

View File

@ -22,7 +22,6 @@ namespace Ocelot.Provider.Kubernetes
this.kubeApi = kubeApi; this.kubeApi = kubeApi;
} }
public async Task<List<Service>> Get() public async Task<List<Service>> Get()
{ {
var service = await kubeApi.ServicesV1() var service = await kubeApi.ServicesV1()

View File

@ -1,7 +1,4 @@
using KubeClient; namespace Ocelot.Provider.Kubernetes
using System;
namespace Ocelot.Provider.Kubernetes
{ {
public class KubeRegistryConfiguration public class KubeRegistryConfiguration
{ {

View File

@ -1,15 +1,13 @@
using Polly;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Polly;
using Polly.CircuitBreaker;
using Polly.Timeout;
namespace Ocelot.Provider.Polly namespace Ocelot.Provider.Polly
{ {
public class CircuitBreaker public class CircuitBreaker
{ {
private readonly List<IAsyncPolicy> _policies = new List<IAsyncPolicy>(); private readonly List<IAsyncPolicy> _policies = new List<IAsyncPolicy>();
public CircuitBreaker(params IAsyncPolicy[] policies) public CircuitBreaker(params IAsyncPolicy[] policies)
{ {
foreach (var policy in policies.Where(p => p != null)) foreach (var policy in policies.Where(p => p != null))
@ -17,7 +15,7 @@ namespace Ocelot.Provider.Polly
this._policies.Add(policy); this._policies.Add(policy);
} }
} }
public IAsyncPolicy[] Policies => this._policies.ToArray(); public IAsyncPolicy[] Policies => this._policies.ToArray();
} }
} }

View File

@ -1,9 +1,5 @@
namespace Ocelot.Provider.Polly namespace Ocelot.Provider.Polly
{ {
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Configuration; using Configuration;
using DependencyInjection; using DependencyInjection;
using Errors; using Errors;
@ -12,6 +8,10 @@
using Logging; using Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Requester; using Requester;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
public static class OcelotBuilderExtensions public static class OcelotBuilderExtensions
{ {
@ -31,7 +31,7 @@
return new PollyCircuitBreakingDelegatingHandler(new PollyQoSProvider(reRoute, logger), logger); return new PollyCircuitBreakingDelegatingHandler(new PollyQoSProvider(reRoute, logger), logger);
} }
builder.Services.AddSingleton((QosDelegatingHandlerDelegate) QosDelegatingHandlerDelegate); builder.Services.AddSingleton((QosDelegatingHandlerDelegate)QosDelegatingHandlerDelegate);
return builder; return builder;
} }
} }

View File

@ -1,9 +1,9 @@
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Ocelot.Logging; using Ocelot.Logging;
using Polly; using Polly;
using Polly.CircuitBreaker; using Polly.CircuitBreaker;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace Ocelot.Provider.Polly namespace Ocelot.Provider.Polly
{ {
@ -26,11 +26,11 @@ namespace Ocelot.Provider.Polly
{ {
return await Policy return await Policy
.WrapAsync(_qoSProvider.CircuitBreaker.Policies) .WrapAsync(_qoSProvider.CircuitBreaker.Policies)
.ExecuteAsync(() => base.SendAsync(request,cancellationToken)); .ExecuteAsync(() => base.SendAsync(request, cancellationToken));
} }
catch (BrokenCircuitException ex) catch (BrokenCircuitException ex)
{ {
_logger.LogError($"Reached to allowed number of exceptions. Circuit is open",ex); _logger.LogError($"Reached to allowed number of exceptions. Circuit is open", ex);
throw; throw;
} }
catch (HttpRequestException ex) catch (HttpRequestException ex)

View File

@ -1,12 +1,12 @@
namespace Ocelot.Provider.Polly namespace Ocelot.Provider.Polly
{ {
using System;
using System.Net.Http;
using global::Polly; using global::Polly;
using global::Polly.CircuitBreaker; using global::Polly.CircuitBreaker;
using global::Polly.Timeout; using global::Polly.Timeout;
using Ocelot.Configuration; using Ocelot.Configuration;
using Ocelot.Logging; using Ocelot.Logging;
using System;
using System.Net.Http;
public class PollyQoSProvider public class PollyQoSProvider
{ {

View File

@ -1,7 +1,7 @@
namespace Ocelot.Provider.Polly namespace Ocelot.Provider.Polly
{ {
using System;
using Errors; using Errors;
using System;
public class RequestTimedOutError : Error public class RequestTimedOutError : Error
{ {

View File

@ -1,14 +1,13 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System.Net.Http; using Administration;
using Configuration;
using Configuration.Repository; using Configuration.Repository;
using global::Rafty.Concensus.Peers; using global::Rafty.Concensus.Peers;
using global::Rafty.Infrastructure; using global::Rafty.Infrastructure;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Middleware; using Middleware;
using System.Collections.Generic; using System.Collections.Generic;
using Administration; using System.Net.Http;
public class FilePeersProvider : IPeersProvider public class FilePeersProvider : IPeersProvider
{ {

View File

@ -1,7 +1,6 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System.Net.Http; using Administration;
using System.Threading.Tasks;
using Configuration; using Configuration;
using global::Rafty.Concensus.Messages; using global::Rafty.Concensus.Messages;
using global::Rafty.Concensus.Peers; using global::Rafty.Concensus.Peers;
@ -11,7 +10,8 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Administration; using System.Net.Http;
using System.Threading.Tasks;
public class HttpPeer : IPeer public class HttpPeer : IPeer
{ {

View File

@ -1,9 +1,9 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System.Threading.Tasks;
using Configuration.Setter; using Configuration.Setter;
using global::Rafty.FiniteStateMachine; using global::Rafty.FiniteStateMachine;
using global::Rafty.Log; using global::Rafty.Log;
using System.Threading.Tasks;
public class OcelotFiniteStateMachine : IFiniteStateMachine public class OcelotFiniteStateMachine : IFiniteStateMachine
{ {

View File

@ -1,8 +1,5 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System;
using System.IO;
using System.Threading.Tasks;
using global::Rafty.Concensus.Messages; using global::Rafty.Concensus.Messages;
using global::Rafty.Concensus.Node; using global::Rafty.Concensus.Node;
using global::Rafty.FiniteStateMachine; using global::Rafty.FiniteStateMachine;
@ -11,6 +8,9 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Middleware; using Middleware;
using Newtonsoft.Json; using Newtonsoft.Json;
using System;
using System.IO;
using System.Threading.Tasks;
[Authorize] [Authorize]
[Route("raft")] [Route("raft")]

View File

@ -1,10 +1,10 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System.Threading.Tasks;
using Configuration.File; using Configuration.File;
using Configuration.Setter; using Configuration.Setter;
using global::Rafty.Concensus.Node; using global::Rafty.Concensus.Node;
using global::Rafty.Infrastructure; using global::Rafty.Infrastructure;
using System.Threading.Tasks;
public class RaftyFileConfigurationSetter : IFileConfigurationSetter public class RaftyFileConfigurationSetter : IFileConfigurationSetter
{ {

View File

@ -1,12 +1,12 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System.Threading.Tasks;
using global::Rafty.Concensus.Node; using global::Rafty.Concensus.Node;
using global::Rafty.Infrastructure; using global::Rafty.Infrastructure;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Middleware; using Middleware;
using Microsoft.AspNetCore.Hosting; using System.Threading.Tasks;
public static class RaftyMiddlewareConfigurationProvider public static class RaftyMiddlewareConfigurationProvider
{ {

View File

@ -1,15 +1,15 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using global::Rafty.Infrastructure; using global::Rafty.Infrastructure;
using global::Rafty.Log; using global::Rafty.Log;
using Microsoft.Data.Sqlite; using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
public class SqlLiteLog : ILog public class SqlLiteLog : ILog
{ {

View File

@ -1,9 +1,10 @@
namespace Ocelot.Provider.Rafty namespace Ocelot.Provider.Rafty
{ {
using Errors; using Errors;
public class UnableToSaveAcceptCommand : Error public class UnableToSaveAcceptCommand : Error
{ {
public UnableToSaveAcceptCommand(string message) public UnableToSaveAcceptCommand(string message)
: base(message, OcelotErrorCode.UnknownError) : base(message, OcelotErrorCode.UnknownError)
{ {
} }

View File

@ -1,17 +1,17 @@
namespace Ocelot.Tracing.Butterfly namespace Ocelot.Tracing.Butterfly
{ {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using global::Butterfly.Client.AspNetCore; using global::Butterfly.Client.AspNetCore;
using global::Butterfly.Client.Tracing; using global::Butterfly.Client.Tracing;
using global::Butterfly.OpenTracing; using global::Butterfly.OpenTracing;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
public class ButterflyTracer : DelegatingHandler, Logging.ITracer public class ButterflyTracer : DelegatingHandler, Logging.ITracer
{ {
@ -25,7 +25,7 @@
public void Event(HttpContext httpContext, string @event) public void Event(HttpContext httpContext, string @event)
{ {
// todo - if the user isnt using tracing the code gets here and will blow up on // todo - if the user isnt using tracing the code gets here and will blow up on
// _tracer.Tracer.TryExtract.. // _tracer.Tracer.TryExtract..
if (_tracer == null) if (_tracer == null)
{ {
@ -52,8 +52,8 @@
public Task<HttpResponseMessage> SendAsync( public Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, HttpRequestMessage request,
CancellationToken cancellationToken, CancellationToken cancellationToken,
Action<string> addTraceIdToRepo, Action<string> addTraceIdToRepo,
Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> baseSendAsync) Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> baseSendAsync)
{ {
return _tracer.ChildTraceAsync($"httpclient {request.Method}", DateTimeOffset.UtcNow, span => TracingSendAsync(span, request, cancellationToken, addTraceIdToRepo, baseSendAsync)); return _tracer.ChildTraceAsync($"httpclient {request.Method}", DateTimeOffset.UtcNow, span => TracingSendAsync(span, request, cancellationToken, addTraceIdToRepo, baseSendAsync));
@ -62,8 +62,8 @@
protected virtual async Task<HttpResponseMessage> TracingSendAsync( protected virtual async Task<HttpResponseMessage> TracingSendAsync(
ISpan span, ISpan span,
HttpRequestMessage request, HttpRequestMessage request,
CancellationToken cancellationToken, CancellationToken cancellationToken,
Action<string> addTraceIdToRepo, Action<string> addTraceIdToRepo,
Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> baseSendAsync) Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> baseSendAsync)
{ {
if (request.Headers.Contains(PrefixSpanId)) if (request.Headers.Contains(PrefixSpanId))

View File

@ -1,10 +1,10 @@
namespace Ocelot.Tracing.Butterfly namespace Ocelot.Tracing.Butterfly
{ {
using System;
using DependencyInjection; using DependencyInjection;
using global::Butterfly.Client.AspNetCore; using global::Butterfly.Client.AspNetCore;
using Logging; using Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System;
public static class OcelotBuilderExtensions public static class OcelotBuilderExtensions
{ {

View File

@ -1,11 +1,8 @@
using System.Collections.Generic; using Microsoft.AspNetCore.Authentication;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
using Ocelot.Configuration; using Ocelot.Configuration;
using Ocelot.Errors;
using Ocelot.Infrastructure.Extensions;
using Ocelot.Logging; using Ocelot.Logging;
using Ocelot.Middleware; using Ocelot.Middleware;
using System.Threading.Tasks;
namespace Ocelot.Authentication.Middleware namespace Ocelot.Authentication.Middleware
{ {

View File

@ -9,4 +9,4 @@ namespace Ocelot.Authentication.Middleware
return builder.UseMiddleware<AuthenticationMiddleware>(); return builder.UseMiddleware<AuthenticationMiddleware>();
} }
} }
} }

View File

@ -4,9 +4,9 @@ namespace Ocelot.Authorisation
{ {
public class ClaimValueNotAuthorisedError : Error public class ClaimValueNotAuthorisedError : Error
{ {
public ClaimValueNotAuthorisedError(string message) public ClaimValueNotAuthorisedError(string message)
: base(message, OcelotErrorCode.ClaimValueNotAuthorisedError) : base(message, OcelotErrorCode.ClaimValueNotAuthorisedError)
{ {
} }
} }
} }

View File

@ -1,14 +1,10 @@
using System; using Ocelot.DownstreamRouteFinder.UrlMatcher;
using Ocelot.Responses;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Claims; using System.Security.Claims;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Ocelot.DownstreamRouteFinder.UrlMatcher;
using Ocelot.Middleware;
using Ocelot.Responses;
using Ocelot.Values;
namespace Ocelot.Authorisation namespace Ocelot.Authorisation
{ {
using Infrastructure.Claims.Parser; using Infrastructure.Claims.Parser;
@ -26,7 +22,8 @@ namespace Ocelot.Authorisation
ClaimsPrincipal claimsPrincipal, ClaimsPrincipal claimsPrincipal,
Dictionary<string, string> routeClaimsRequirement, Dictionary<string, string> routeClaimsRequirement,
List<PlaceholderNameAndValue> urlPathPlaceholderNameAndValues List<PlaceholderNameAndValue> urlPathPlaceholderNameAndValues
){ )
{
foreach (var required in routeClaimsRequirement) foreach (var required in routeClaimsRequirement)
{ {
var values = _claimsParser.GetValuesByClaimType(claimsPrincipal.Claims, required.Key); var values = _claimsParser.GetValuesByClaimType(claimsPrincipal.Claims, required.Key);
@ -62,15 +59,14 @@ namespace Ocelot.Authorisation
if (matchingPlaceholders.Length == 0) if (matchingPlaceholders.Length == 0)
{ {
return new ErrorResponse<bool>(new ClaimValueNotAuthorisedError( return new ErrorResponse<bool>(new ClaimValueNotAuthorisedError(
$"config error: requires variable claim value: {variableName} placeholders does not contain that variable: {string.Join(", ", urlPathPlaceholderNameAndValues.Select(p=>p.Name))}")); $"config error: requires variable claim value: {variableName} placeholders does not contain that variable: {string.Join(", ", urlPathPlaceholderNameAndValues.Select(p => p.Name))}"));
} }
else else
{ {
return new ErrorResponse<bool>(new ClaimValueNotAuthorisedError( return new ErrorResponse<bool>(new ClaimValueNotAuthorisedError(
$"config error: requires variable claim value: {required.Value} but placeholders are ambiguous: {string.Join(", ", urlPathPlaceholderNameAndValues.Where(p=>p.Name.Equals(variableName)).Select(p => p.Value))}")); $"config error: requires variable claim value: {required.Value} but placeholders are ambiguous: {string.Join(", ", urlPathPlaceholderNameAndValues.Where(p => p.Name.Equals(variableName)).Select(p => p.Value))}"));
} }
} }
} }
else else
{ {
@ -92,4 +88,4 @@ namespace Ocelot.Authorisation
return new OkResponse<bool>(true); return new OkResponse<bool>(true);
} }
} }
} }

View File

@ -1,9 +1,6 @@
using System.Security.Claims; using Ocelot.DownstreamRouteFinder.UrlMatcher;
using Ocelot.Configuration;
using Ocelot.DownstreamRouteFinder.UrlMatcher;
using Ocelot.Responses; using Ocelot.Responses;
using Ocelot.Values; using System.Security.Claims;
namespace Ocelot.Authorisation namespace Ocelot.Authorisation
{ {
@ -17,4 +14,4 @@ namespace Ocelot.Authorisation
List<PlaceholderNameAndValue> urlPathPlaceholderNameAndValues List<PlaceholderNameAndValue> urlPathPlaceholderNameAndValues
); );
} }
} }

View File

@ -1,5 +1,5 @@
using System.Security.Claims; using Ocelot.Responses;
using Ocelot.Responses; using System.Security.Claims;
namespace Ocelot.Authorisation namespace Ocelot.Authorisation
{ {
@ -9,4 +9,4 @@ namespace Ocelot.Authorisation
{ {
Response<bool> Authorise(ClaimsPrincipal claimsPrincipal, List<string> routeAllowedScopes); Response<bool> Authorise(ClaimsPrincipal claimsPrincipal, List<string> routeAllowedScopes);
} }
} }

View File

@ -1,12 +1,10 @@
namespace Ocelot.Authorisation.Middleware namespace Ocelot.Authorisation.Middleware
{ {
using System.Collections.Generic;
using System.Threading.Tasks;
using Errors;
using Ocelot.Middleware;
using Logging;
using Responses;
using Configuration; using Configuration;
using Logging;
using Ocelot.Middleware;
using Responses;
using System.Threading.Tasks;
public class AuthorisationMiddleware : OcelotMiddleware public class AuthorisationMiddleware : OcelotMiddleware
{ {
@ -18,7 +16,7 @@
IClaimsAuthoriser claimsAuthoriser, IClaimsAuthoriser claimsAuthoriser,
IScopesAuthoriser scopesAuthoriser, IScopesAuthoriser scopesAuthoriser,
IOcelotLoggerFactory loggerFactory) IOcelotLoggerFactory loggerFactory)
:base(loggerFactory.CreateLogger<AuthorisationMiddleware>()) : base(loggerFactory.CreateLogger<AuthorisationMiddleware>())
{ {
_next = next; _next = next;
_claimsAuthoriser = claimsAuthoriser; _claimsAuthoriser = claimsAuthoriser;
@ -102,4 +100,4 @@
return reRoute.IsAuthorised; return reRoute.IsAuthorised;
} }
} }
} }

View File

@ -9,4 +9,4 @@ namespace Ocelot.Authorisation.Middleware
return builder.UseMiddleware<AuthorisationMiddleware>(); return builder.UseMiddleware<AuthorisationMiddleware>();
} }
} }
} }

View File

@ -4,9 +4,9 @@ namespace Ocelot.Authorisation
{ {
public class ScopeNotAuthorisedError : Error public class ScopeNotAuthorisedError : Error
{ {
public ScopeNotAuthorisedError(string message) public ScopeNotAuthorisedError(string message)
: base(message, OcelotErrorCode.ScopeNotAuthorisedError) : base(message, OcelotErrorCode.ScopeNotAuthorisedError)
{ {
} }
} }
} }

View File

@ -1,7 +1,7 @@
using Ocelot.Responses; using Ocelot.Responses;
using System.Collections.Generic; using System.Collections.Generic;
using System.Security.Claims;
using System.Linq; using System.Linq;
using System.Security.Claims;
namespace Ocelot.Authorisation namespace Ocelot.Authorisation
{ {

View File

@ -4,9 +4,9 @@ namespace Ocelot.Authorisation
{ {
public class UnauthorisedError : Error public class UnauthorisedError : Error
{ {
public UnauthorisedError(string message) public UnauthorisedError(string message)
: base(message, OcelotErrorCode.UnauthorizedError) : base(message, OcelotErrorCode.UnauthorizedError)
{ {
} }
} }
} }

View File

@ -4,9 +4,9 @@ namespace Ocelot.Authorisation
{ {
public class UserDoesNotHaveClaimError : Error public class UserDoesNotHaveClaimError : Error
{ {
public UserDoesNotHaveClaimError(string message) public UserDoesNotHaveClaimError(string message)
: base(message, OcelotErrorCode.UserDoesNotHaveClaimError) : base(message, OcelotErrorCode.UserDoesNotHaveClaimError)
{ {
} }
} }
} }

View File

@ -1,13 +1,17 @@
using System.Text; using Ocelot.Middleware;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Ocelot.Middleware;
namespace Ocelot.Cache { namespace Ocelot.Cache
public class CacheKeyGenerator : ICacheKeyGenerator { {
public string GenerateRequestCacheKey(DownstreamContext context) { public class CacheKeyGenerator : ICacheKeyGenerator
{
public string GenerateRequestCacheKey(DownstreamContext context)
{
string hashedContent = null; string hashedContent = null;
StringBuilder downStreamUrlKeyBuilder = new StringBuilder($"{context.DownstreamRequest.Method}-{context.DownstreamRequest.OriginalString}"); StringBuilder downStreamUrlKeyBuilder = new StringBuilder($"{context.DownstreamRequest.Method}-{context.DownstreamRequest.OriginalString}");
if (context.DownstreamRequest.Content != null) { if (context.DownstreamRequest.Content != null)
{
string requestContentString = Task.Run(async () => await context.DownstreamRequest.Content.ReadAsStringAsync()).Result; string requestContentString = Task.Run(async () => await context.DownstreamRequest.Content.ReadAsStringAsync()).Result;
downStreamUrlKeyBuilder.Append(requestContentString); downStreamUrlKeyBuilder.Append(requestContentString);
} }

View File

@ -2,7 +2,7 @@
{ {
using System; using System;
class CacheObject<T> internal class CacheObject<T>
{ {
public CacheObject(T value, DateTime expires) public CacheObject(T value, DateTime expires)
{ {

View File

@ -27,7 +27,7 @@ namespace Ocelot.Cache
public Dictionary<string, IEnumerable<string>> ContentHeaders { get; private set; } public Dictionary<string, IEnumerable<string>> ContentHeaders { get; private set; }
public string Body { get; private set; } public string Body { get; private set; }
public string ReasonPhrase { get; private set; } public string ReasonPhrase { get; private set; }
} }
} }

View File

@ -1,7 +1,9 @@
using Ocelot.Middleware; using Ocelot.Middleware;
namespace Ocelot.Cache { namespace Ocelot.Cache
public interface ICacheKeyGenerator { {
public interface ICacheKeyGenerator
{
string GenerateRequestCacheKey(DownstreamContext context); string GenerateRequestCacheKey(DownstreamContext context);
} }
} }

View File

@ -5,8 +5,11 @@ namespace Ocelot.Cache
public interface IOcelotCache<T> public interface IOcelotCache<T>
{ {
void Add(string key, T value, TimeSpan ttl, string region); void Add(string key, T value, TimeSpan ttl, string region);
T Get(string key, string region); T Get(string key, string region);
void ClearRegion(string region); void ClearRegion(string region);
void AddAndDelete(string key, T value, TimeSpan ttl, string region); void AddAndDelete(string key, T value, TimeSpan ttl, string region);
} }
} }

View File

@ -35,7 +35,7 @@
} }
else else
{ {
_regions.Add(region, new List<string>{ key }); _regions.Add(region, new List<string> { key });
} }
} }

View File

@ -1,20 +1,25 @@
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
namespace Ocelot.Cache { namespace Ocelot.Cache
public static class MD5Helper { {
public static string GenerateMd5(byte[] contentBytes) { public static class MD5Helper
{
public static string GenerateMd5(byte[] contentBytes)
{
MD5 md5 = MD5.Create(); MD5 md5 = MD5.Create();
byte[] hash = md5.ComputeHash(contentBytes); byte[] hash = md5.ComputeHash(contentBytes);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++) { for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2")); sb.Append(hash[i].ToString("X2"));
} }
return sb.ToString(); return sb.ToString();
} }
public static string GenerateMd5(string contentString) { public static string GenerateMd5(string contentString)
{
byte[] contentBytes = Encoding.Unicode.GetBytes(contentString); byte[] contentBytes = Encoding.Unicode.GetBytes(contentString);
return GenerateMd5(contentBytes); return GenerateMd5(contentBytes);
} }

View File

@ -1,13 +1,13 @@
namespace Ocelot.Cache.Middleware namespace Ocelot.Cache.Middleware
{ {
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Ocelot.Logging; using Ocelot.Logging;
using Ocelot.Middleware; using Ocelot.Middleware;
using System;
using System.IO; using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text; using System.Text;
using System.Threading.Tasks;
public class OutputCacheMiddleware : OcelotMiddleware public class OutputCacheMiddleware : OcelotMiddleware
{ {
@ -19,7 +19,7 @@
IOcelotLoggerFactory loggerFactory, IOcelotLoggerFactory loggerFactory,
IOcelotCache<CachedResponse> outputCache, IOcelotCache<CachedResponse> outputCache,
ICacheKeyGenerator cacheGeneratot) ICacheKeyGenerator cacheGeneratot)
:base(loggerFactory.CreateLogger<OutputCacheMiddleware>()) : base(loggerFactory.CreateLogger<OutputCacheMiddleware>())
{ {
_next = next; _next = next;
_outputCache = outputCache; _outputCache = outputCache;
@ -71,16 +71,18 @@
Logger.LogDebug($"finished response added to cache for {downstreamUrlKey}"); Logger.LogDebug($"finished response added to cache for {downstreamUrlKey}");
} }
private void SetHttpResponseMessageThisRequest(DownstreamContext context, private void SetHttpResponseMessageThisRequest(DownstreamContext context,
DownstreamResponse response) DownstreamResponse response)
{ {
context.DownstreamResponse = response; context.DownstreamResponse = response;
} }
private string GenerateRequestCacheKey(DownstreamContext context) { private string GenerateRequestCacheKey(DownstreamContext context)
{
string hashedContent = null; string hashedContent = null;
StringBuilder downStreamUrlKeyBuilder = new StringBuilder($"{context.DownstreamRequest.Method}-{context.DownstreamRequest.OriginalString}"); StringBuilder downStreamUrlKeyBuilder = new StringBuilder($"{context.DownstreamRequest.Method}-{context.DownstreamRequest.OriginalString}");
if(context.DownstreamRequest.Content != null) { if (context.DownstreamRequest.Content != null)
{
string requestContentString = Task.Run(async () => await context.DownstreamRequest.Content?.ReadAsStringAsync()).Result; string requestContentString = Task.Run(async () => await context.DownstreamRequest.Content?.ReadAsStringAsync()).Result;
downStreamUrlKeyBuilder.Append(requestContentString); downStreamUrlKeyBuilder.Append(requestContentString);
} }

View File

@ -10,4 +10,4 @@ namespace Ocelot.Cache.Middleware
return builder.UseMiddleware<OutputCacheMiddleware>(); return builder.UseMiddleware<OutputCacheMiddleware>();
} }
} }
} }

View File

@ -22,4 +22,4 @@ namespace Ocelot.Cache
return new NoContentResult(); return new NoContentResult();
} }
} }
} }

View File

@ -1,6 +1,5 @@
using System.Linq;
using Ocelot.Configuration;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Linq;
namespace Ocelot.Cache namespace Ocelot.Cache
{ {
@ -8,16 +7,16 @@ namespace Ocelot.Cache
{ {
public string Create(FileReRoute reRoute) public string Create(FileReRoute reRoute)
{ {
if(!string.IsNullOrEmpty(reRoute?.FileCacheOptions?.Region)) if (!string.IsNullOrEmpty(reRoute?.FileCacheOptions?.Region))
{ {
return reRoute?.FileCacheOptions?.Region; return reRoute?.FileCacheOptions?.Region;
} }
var methods = string.Join("", reRoute.UpstreamHttpMethod.Select(m => m)); var methods = string.Join("", reRoute.UpstreamHttpMethod.Select(m => m));
var region = $"{methods}{reRoute.UpstreamPathTemplate.Replace("/", "")}"; var region = $"{methods}{reRoute.UpstreamPathTemplate.Replace("/", "")}";
return region; return region;
} }
} }
} }

View File

@ -11,4 +11,4 @@ namespace Ocelot.Cache
public List<string> Value { get; } public List<string> Value { get; }
} }
} }

View File

@ -1,10 +1,10 @@
using System.Collections.Generic; using Microsoft.AspNetCore.Http;
using System.Linq;
using System.Security.Claims;
using Microsoft.AspNetCore.Http;
using Ocelot.Configuration; using Ocelot.Configuration;
using Ocelot.Infrastructure.Claims.Parser; using Ocelot.Infrastructure.Claims.Parser;
using Ocelot.Responses; using Ocelot.Responses;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
namespace Ocelot.Claims namespace Ocelot.Claims
{ {

View File

@ -1,7 +1,7 @@
using System.Collections.Generic; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http;
using Ocelot.Configuration; using Ocelot.Configuration;
using Ocelot.Responses; using Ocelot.Responses;
using System.Collections.Generic;
namespace Ocelot.Claims namespace Ocelot.Claims
{ {
@ -10,4 +10,4 @@ namespace Ocelot.Claims
Response SetClaimsOnContext(List<ClaimToThing> claimsToThings, Response SetClaimsOnContext(List<ClaimToThing> claimsToThings,
HttpContext context); HttpContext context);
} }
} }

View File

@ -1,10 +1,7 @@
using System.Linq; using Ocelot.Logging;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Ocelot.DownstreamRouteFinder.Middleware;
using Ocelot.Infrastructure.RequestData;
using Ocelot.Logging;
using Ocelot.Middleware; using Ocelot.Middleware;
using System.Linq;
using System.Threading.Tasks;
namespace Ocelot.Claims.Middleware namespace Ocelot.Claims.Middleware
{ {
@ -13,10 +10,10 @@ namespace Ocelot.Claims.Middleware
private readonly OcelotRequestDelegate _next; private readonly OcelotRequestDelegate _next;
private readonly IAddClaimsToRequest _addClaimsToRequest; private readonly IAddClaimsToRequest _addClaimsToRequest;
public ClaimsToClaimsMiddleware(OcelotRequestDelegate next, public ClaimsToClaimsMiddleware(OcelotRequestDelegate next,
IOcelotLoggerFactory loggerFactory, IOcelotLoggerFactory loggerFactory,
IAddClaimsToRequest addClaimsToRequest) IAddClaimsToRequest addClaimsToRequest)
:base(loggerFactory.CreateLogger<ClaimsToClaimsMiddleware>()) : base(loggerFactory.CreateLogger<ClaimsToClaimsMiddleware>())
{ {
_next = next; _next = next;
_addClaimsToRequest = addClaimsToRequest; _addClaimsToRequest = addClaimsToRequest;

View File

@ -13,4 +13,4 @@ namespace Ocelot.Configuration
public List<string> AllowedScopes { get; private set; } public List<string> AllowedScopes { get; private set; }
public string AuthenticationProviderKey { get; private set; } public string AuthenticationProviderKey { get; private set; }
} }
} }

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Net.Http;
using Ocelot.Values;
using System.Linq;
using Ocelot.Configuration.Creator; using Ocelot.Configuration.Creator;
using Ocelot.Values;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
namespace Ocelot.Configuration.Builder namespace Ocelot.Configuration.Builder
{ {
@ -39,6 +39,7 @@ namespace Ocelot.Configuration.Builder
private List<AddHeader> _addHeadersToUpstream; private List<AddHeader> _addHeadersToUpstream;
private bool _dangerousAcceptAnyServerCertificateValidator; private bool _dangerousAcceptAnyServerCertificateValidator;
private SecurityOptions _securityOptions; private SecurityOptions _securityOptions;
public DownstreamReRouteBuilder() public DownstreamReRouteBuilder()
{ {
_downstreamAddresses = new List<DownstreamHostAndPort>(); _downstreamAddresses = new List<DownstreamHostAndPort>();
@ -55,7 +56,7 @@ namespace Ocelot.Configuration.Builder
public DownstreamReRouteBuilder WithLoadBalancerOptions(LoadBalancerOptions loadBalancerOptions) public DownstreamReRouteBuilder WithLoadBalancerOptions(LoadBalancerOptions loadBalancerOptions)
{ {
_loadBalancerOptions = loadBalancerOptions; _loadBalancerOptions = loadBalancerOptions;
return this; return this;
} }
@ -142,7 +143,7 @@ namespace Ocelot.Configuration.Builder
_qosOptions = input; _qosOptions = input;
return this; return this;
} }
public DownstreamReRouteBuilder WithLoadBalancerKey(string loadBalancerKey) public DownstreamReRouteBuilder WithLoadBalancerKey(string loadBalancerKey)
{ {
_loadBalancerKey = loadBalancerKey; _loadBalancerKey = loadBalancerKey;
@ -239,26 +240,26 @@ namespace Ocelot.Configuration.Builder
_key, _key,
_upstreamTemplatePattern, _upstreamTemplatePattern,
_upstreamHeaderFindAndReplace, _upstreamHeaderFindAndReplace,
_downstreamHeaderFindAndReplace, _downstreamHeaderFindAndReplace,
_downstreamAddresses, _downstreamAddresses,
_serviceName, _serviceName,
_httpHandlerOptions, _httpHandlerOptions,
_useServiceDiscovery, _useServiceDiscovery,
_enableRateLimiting, _enableRateLimiting,
_qosOptions, _qosOptions,
_downstreamScheme, _downstreamScheme,
_requestIdHeaderKey, _requestIdHeaderKey,
_isCached, _isCached,
_fileCacheOptions, _fileCacheOptions,
_loadBalancerOptions, _loadBalancerOptions,
_rateLimitOptions, _rateLimitOptions,
_routeClaimRequirement, _routeClaimRequirement,
_claimToQueries, _claimToQueries,
_claimsToHeaders, _claimsToHeaders,
_claimToClaims, _claimToClaims,
_isAuthenticated, _isAuthenticated,
_isAuthorised, _isAuthorised,
_authenticationOptions, _authenticationOptions,
new DownstreamPathTemplate(_downstreamPathTemplate), new DownstreamPathTemplate(_downstreamPathTemplate),
_loadBalancerKey, _loadBalancerKey,
_delegatingHandlers, _delegatingHandlers,

View File

@ -39,4 +39,4 @@
return new QoSOptions(_exceptionsAllowedBeforeBreaking, _durationOfBreak, _timeoutValue, _key); return new QoSOptions(_exceptionsAllowedBeforeBreaking, _durationOfBreak, _timeoutValue, _key);
} }
} }
} }

View File

@ -63,9 +63,9 @@ namespace Ocelot.Configuration.Builder
public RateLimitOptions Build() public RateLimitOptions Build()
{ {
return new RateLimitOptions(_enableRateLimiting, _clientIdHeader, _clientWhitelist, return new RateLimitOptions(_enableRateLimiting, _clientIdHeader, _clientWhitelist,
_disableRateLimitHeaders, _quotaExceededMessage, _rateLimitCounterPrefix, _disableRateLimitHeaders, _quotaExceededMessage, _rateLimitCounterPrefix,
_rateLimitRule, _httpStatusCode); _rateLimitRule, _httpStatusCode);
} }
} }
} }

View File

@ -1,10 +1,10 @@
namespace Ocelot.Configuration.Builder namespace Ocelot.Configuration.Builder
{ {
using System.Collections.Generic;
using System.Net.Http;
using Ocelot.Values;
using System.Linq;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using Ocelot.Values;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
public class ReRouteBuilder public class ReRouteBuilder
{ {
@ -68,11 +68,11 @@
return new ReRoute( return new ReRoute(
_downstreamReRoutes, _downstreamReRoutes,
_downstreamReRoutesConfig, _downstreamReRoutesConfig,
_upstreamHttpMethod, _upstreamHttpMethod,
_upstreamTemplatePattern, _upstreamTemplatePattern,
_upstreamHost, _upstreamHost,
_aggregator _aggregator
); );
} }
} }
} }

View File

@ -12,4 +12,4 @@
public string Region { get; private set; } public string Region { get; private set; }
} }
} }

View File

@ -15,4 +15,4 @@
public string Delimiter { get; private set; } public string Delimiter { get; private set; }
public int Index { get; private set; } public int Index { get; private set; }
} }
} }

View File

@ -1,9 +1,9 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using System.Collections.Generic;
using System.Linq;
using Builder; using Builder;
using File; using File;
using System.Collections.Generic;
using System.Linq;
public class AggregatesCreator : IAggregatesCreator public class AggregatesCreator : IAggregatesCreator
{ {

View File

@ -7,6 +7,6 @@ namespace Ocelot.Configuration.Creator
public AuthenticationOptions Create(FileReRoute reRoute) public AuthenticationOptions Create(FileReRoute reRoute)
{ {
return new AuthenticationOptions(reRoute.AuthenticationOptions.AllowedScopes, reRoute.AuthenticationOptions.AuthenticationProviderKey); return new AuthenticationOptions(reRoute.AuthenticationOptions.AllowedScopes, reRoute.AuthenticationOptions.AuthenticationProviderKey);
} }
} }
} }

View File

@ -1,6 +1,6 @@
using System.Collections.Generic;
using Ocelot.Configuration.Parser; using Ocelot.Configuration.Parser;
using Ocelot.Logging; using Ocelot.Logging;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -14,9 +14,9 @@ namespace Ocelot.Configuration.Creator
{ {
_logger = loggerFactory.CreateLogger<ClaimsToThingCreator>(); _logger = loggerFactory.CreateLogger<ClaimsToThingCreator>();
_claimToThingConfigParser = claimToThingConfigurationParser; _claimToThingConfigParser = claimToThingConfigurationParser;
} }
public List<ClaimToThing> Create(Dictionary<string,string> inputToBeParsed) public List<ClaimToThing> Create(Dictionary<string, string> inputToBeParsed)
{ {
var claimsToThings = new List<ClaimToThing>(); var claimsToThings = new List<ClaimToThing>();
@ -37,4 +37,4 @@ namespace Ocelot.Configuration.Creator
return claimsToThings; return claimsToThings;
} }
} }
} }

View File

@ -1,10 +1,10 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using DependencyInjection;
using File;
using Microsoft.Extensions.DependencyInjection;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using File;
using DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
public class ConfigurationCreator : IConfigurationCreator public class ConfigurationCreator : IConfigurationCreator
{ {

View File

@ -1,6 +1,6 @@
using Ocelot.Configuration.File;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Ocelot.Configuration.File;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -11,4 +11,4 @@ namespace Ocelot.Configuration.Creator
return reRoute.DownstreamHostAndPorts.Select(hostAndPort => new DownstreamHostAndPort(hostAndPort.Host, hostAndPort.Port)).ToList(); return reRoute.DownstreamHostAndPorts.Select(hostAndPort => new DownstreamHostAndPort(hostAndPort.Host, hostAndPort.Port)).ToList();
} }
} }
} }

View File

@ -1,9 +1,9 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using System.Collections.Generic;
using System.Linq;
using Builder; using Builder;
using File; using File;
using System.Collections.Generic;
using System.Linq;
public class DynamicsCreator : IDynamicsCreator public class DynamicsCreator : IDynamicsCreator
{ {

View File

@ -1,10 +1,10 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using File;
using Responses;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using File;
using Validator; using Validator;
using Responses;
public class FileInternalConfigurationCreator : IInternalConfigurationCreator public class FileInternalConfigurationCreator : IInternalConfigurationCreator
{ {

View File

@ -1,11 +1,9 @@
using System;
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using Ocelot.Infrastructure; using Ocelot.Infrastructure;
using Ocelot.Infrastructure.Extensions; using Ocelot.Infrastructure.Extensions;
using Ocelot.Logging; using Ocelot.Logging;
using Ocelot.Middleware;
using Ocelot.Responses; using Ocelot.Responses;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -25,7 +23,7 @@ namespace Ocelot.Configuration.Creator
var upstream = new List<HeaderFindAndReplace>(); var upstream = new List<HeaderFindAndReplace>();
var addHeadersToUpstream = new List<AddHeader>(); var addHeadersToUpstream = new List<AddHeader>();
foreach(var input in fileReRoute.UpstreamHeaderTransform) foreach (var input in fileReRoute.UpstreamHeaderTransform)
{ {
if (input.Value.Contains(",")) if (input.Value.Contains(","))
{ {
@ -46,14 +44,14 @@ namespace Ocelot.Configuration.Creator
} }
var downstream = new List<HeaderFindAndReplace>(); var downstream = new List<HeaderFindAndReplace>();
var addHeadersToDownstream = new List<AddHeader>(); var addHeadersToDownstream = new List<AddHeader>();
foreach(var input in fileReRoute.DownstreamHeaderTransform) foreach (var input in fileReRoute.DownstreamHeaderTransform)
{ {
if(input.Value.Contains(",")) if (input.Value.Contains(","))
{ {
var hAndr = Map(input); var hAndr = Map(input);
if(!hAndr.IsError) if (!hAndr.IsError)
{ {
downstream.Add(hAndr.Data); downstream.Add(hAndr.Data);
} }
@ -66,27 +64,27 @@ namespace Ocelot.Configuration.Creator
{ {
addHeadersToDownstream.Add(new AddHeader(input.Key, input.Value)); addHeadersToDownstream.Add(new AddHeader(input.Key, input.Value));
} }
} }
return new HeaderTransformations(upstream, downstream, addHeadersToDownstream, addHeadersToUpstream); return new HeaderTransformations(upstream, downstream, addHeadersToDownstream, addHeadersToUpstream);
} }
private Response<HeaderFindAndReplace> Map(KeyValuePair<string,string> input) private Response<HeaderFindAndReplace> Map(KeyValuePair<string, string> input)
{ {
var findAndReplace = input.Value.Split(","); var findAndReplace = input.Value.Split(",");
var replace = findAndReplace[1].TrimStart(); var replace = findAndReplace[1].TrimStart();
var startOfPlaceholder = replace.IndexOf("{"); var startOfPlaceholder = replace.IndexOf("{");
if(startOfPlaceholder > -1) if (startOfPlaceholder > -1)
{ {
var endOfPlaceholder = replace.IndexOf("}", startOfPlaceholder); var endOfPlaceholder = replace.IndexOf("}", startOfPlaceholder);
var placeholder = replace.Substring(startOfPlaceholder, startOfPlaceholder + (endOfPlaceholder + 1)); var placeholder = replace.Substring(startOfPlaceholder, startOfPlaceholder + (endOfPlaceholder + 1));
var value = _placeholders.Get(placeholder); var value = _placeholders.Get(placeholder);
if(value.IsError) if (value.IsError)
{ {
return new ErrorResponse<HeaderFindAndReplace>(value.Errors); return new ErrorResponse<HeaderFindAndReplace>(value.Errors);
} }
@ -94,9 +92,9 @@ namespace Ocelot.Configuration.Creator
replace = replace.Replace(placeholder, value.Data); replace = replace.Replace(placeholder, value.Data);
} }
var hAndr = new HeaderFindAndReplace(input.Key, findAndReplace[0], replace, 0); var hAndr = new HeaderFindAndReplace(input.Key, findAndReplace[0], replace, 0);
return new OkResponse<HeaderFindAndReplace>(hAndr); return new OkResponse<HeaderFindAndReplace>(hAndr);
} }
} }
} }

View File

@ -5,7 +5,7 @@ namespace Ocelot.Configuration.Creator
public class HeaderTransformations public class HeaderTransformations
{ {
public HeaderTransformations( public HeaderTransformations(
List<HeaderFindAndReplace> upstream, List<HeaderFindAndReplace> upstream,
List<HeaderFindAndReplace> downstream, List<HeaderFindAndReplace> downstream,
List<AddHeader> addHeaderToDownstream, List<AddHeader> addHeaderToDownstream,
List<AddHeader> addHeaderToUpstream) List<AddHeader> addHeaderToUpstream)
@ -23,4 +23,4 @@ namespace Ocelot.Configuration.Creator
public List<AddHeader> AddHeadersToDownstream { get; } public List<AddHeader> AddHeadersToDownstream { get; }
public List<AddHeader> AddHeadersToUpstream { get; } public List<AddHeader> AddHeadersToUpstream { get; }
} }
} }

View File

@ -1,9 +1,9 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using System;
using Logging; using Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System;
public class HttpHandlerOptionsCreator : IHttpHandlerOptionsCreator public class HttpHandlerOptionsCreator : IHttpHandlerOptionsCreator
{ {
@ -16,7 +16,7 @@
public HttpHandlerOptions Create(FileHttpHandlerOptions options) public HttpHandlerOptions Create(FileHttpHandlerOptions options)
{ {
var useTracing = _tracer!= null && options.UseTracing; var useTracing = _tracer != null && options.UseTracing;
return new HttpHandlerOptions(options.AllowAutoRedirect, return new HttpHandlerOptions(options.AllowAutoRedirect,
options.UseCookieContainer, useTracing, options.UseProxy); options.UseCookieContainer, useTracing, options.UseProxy);

View File

@ -1,5 +1,5 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -1,4 +1,3 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
@ -7,4 +6,4 @@ namespace Ocelot.Configuration.Creator
{ {
AuthenticationOptions Create(FileReRoute reRoute); AuthenticationOptions Create(FileReRoute reRoute);
} }
} }

View File

@ -4,6 +4,6 @@ namespace Ocelot.Configuration.Creator
{ {
public interface IClaimsToThingCreator public interface IClaimsToThingCreator
{ {
List<ClaimToThing> Create(Dictionary<string,string> thingsBeingAdded); List<ClaimToThing> Create(Dictionary<string, string> thingsBeingAdded);
} }
} }

View File

@ -1,5 +1,5 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -1,5 +1,5 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -7,4 +7,4 @@ namespace Ocelot.Configuration.Creator
{ {
List<DownstreamHostAndPort> Create(FileReRoute reRoute); List<DownstreamHostAndPort> Create(FileReRoute reRoute);
} }
} }

View File

@ -1,5 +1,5 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -1,4 +1,3 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
@ -7,4 +6,4 @@ namespace Ocelot.Configuration.Creator
{ {
HeaderTransformations Create(FileReRoute fileReRoute); HeaderTransformations Create(FileReRoute fileReRoute);
} }
} }

View File

@ -9,4 +9,4 @@ namespace Ocelot.Configuration.Creator
{ {
HttpHandlerOptions Create(FileHttpHandlerOptions fileReRoute); HttpHandlerOptions Create(FileHttpHandlerOptions fileReRoute);
} }
} }

View File

@ -1,6 +1,6 @@
using System.Threading.Tasks;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using Ocelot.Responses; using Ocelot.Responses;
using System.Threading.Tasks;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -1,12 +1,14 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
public interface IQoSOptionsCreator public interface IQoSOptionsCreator
{ {
QoSOptions Create(FileQoSOptions options); QoSOptions Create(FileQoSOptions options);
QoSOptions Create(FileQoSOptions options, string pathTemplate, List<string> httpMethods); QoSOptions Create(FileQoSOptions options, string pathTemplate, List<string> httpMethods);
QoSOptions Create(QoSOptions options, string pathTemplate, List<string> httpMethods); QoSOptions Create(QoSOptions options, string pathTemplate, List<string> httpMethods);
} }
} }

View File

@ -6,4 +6,4 @@ namespace Ocelot.Configuration.Creator
{ {
ReRouteOptions Create(FileReRoute fileReRoute); ReRouteOptions Create(FileReRoute fileReRoute);
} }
} }

View File

@ -1,5 +1,5 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -1,7 +1,4 @@
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using System;
using System.Collections.Generic;
using System.Text;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -7,4 +7,4 @@ namespace Ocelot.Configuration.Creator
{ {
UpstreamPathTemplate Create(IReRoute reRoute); UpstreamPathTemplate Create(IReRoute reRoute);
} }
} }

View File

@ -1,6 +1,6 @@
using System.Linq;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using Ocelot.LoadBalancer.LoadBalancers; using Ocelot.LoadBalancer.LoadBalancers;
using System.Linq;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -12,14 +12,14 @@ namespace Ocelot.Configuration.Creator
{ {
return $"{nameof(CookieStickySessions)}:{fileReRoute.LoadBalancerOptions.Key}"; return $"{nameof(CookieStickySessions)}:{fileReRoute.LoadBalancerOptions.Key}";
} }
return $"{fileReRoute.UpstreamPathTemplate}|{string.Join(",", fileReRoute.UpstreamHttpMethod)}|{string.Join(",", fileReRoute.DownstreamHostAndPorts.Select(x => $"{x.Host}:{x.Port}"))}"; return $"{fileReRoute.UpstreamPathTemplate}|{string.Join(",", fileReRoute.UpstreamHttpMethod)}|{string.Join(",", fileReRoute.DownstreamHostAndPorts.Select(x => $"{x.Host}:{x.Port}"))}";
} }
private bool IsStickySession(FileReRoute fileReRoute) private bool IsStickySession(FileReRoute fileReRoute)
{ {
if (!string.IsNullOrEmpty(fileReRoute.LoadBalancerOptions.Type) if (!string.IsNullOrEmpty(fileReRoute.LoadBalancerOptions.Type)
&& !string.IsNullOrEmpty(fileReRoute.LoadBalancerOptions.Key) && !string.IsNullOrEmpty(fileReRoute.LoadBalancerOptions.Key)
&& fileReRoute.LoadBalancerOptions.Type == nameof(CookieStickySessions)) && fileReRoute.LoadBalancerOptions.Type == nameof(CookieStickySessions))
{ {
return true; return true;

View File

@ -20,7 +20,7 @@ namespace Ocelot.Configuration.Creator
.WithRateLimiting(enableRateLimiting) .WithRateLimiting(enableRateLimiting)
.WithUseServiceDiscovery(useServiceDiscovery) .WithUseServiceDiscovery(useServiceDiscovery)
.Build(); .Build();
return options; return options;
} }

View File

@ -1,10 +1,10 @@
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
using Builder;
using Cache;
using File;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Cache;
using Builder;
using File;
public class ReRoutesCreator : IReRoutesCreator public class ReRoutesCreator : IReRoutesCreator
{ {

View File

@ -6,13 +6,13 @@ namespace Ocelot.Configuration.Creator
{ {
public string Create(FileReRoute fileReRoute, FileGlobalConfiguration globalConfiguration) public string Create(FileReRoute fileReRoute, FileGlobalConfiguration globalConfiguration)
{ {
var reRouteId = !string.IsNullOrEmpty(fileReRoute.RequestIdKey); var reRouteId = !string.IsNullOrEmpty(fileReRoute.RequestIdKey);
var requestIdKey = reRouteId var requestIdKey = reRouteId
? fileReRoute.RequestIdKey ? fileReRoute.RequestIdKey
: globalConfiguration.RequestIdKey; : globalConfiguration.RequestIdKey;
return requestIdKey; return requestIdKey;
} }
} }
} }

View File

@ -1,7 +1,4 @@
using System; using Ocelot.Configuration.File;
using System.Collections.Generic;
using System.Text;
using Ocelot.Configuration.File;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {

View File

@ -9,8 +9,8 @@ namespace Ocelot.Configuration.Creator
{ {
var port = globalConfiguration?.ServiceDiscoveryProvider?.Port ?? 0; var port = globalConfiguration?.ServiceDiscoveryProvider?.Port ?? 0;
var host = globalConfiguration?.ServiceDiscoveryProvider?.Host ?? "localhost"; var host = globalConfiguration?.ServiceDiscoveryProvider?.Host ?? "localhost";
var type = !string.IsNullOrEmpty(globalConfiguration?.ServiceDiscoveryProvider?.Type) var type = !string.IsNullOrEmpty(globalConfiguration?.ServiceDiscoveryProvider?.Type)
? globalConfiguration?.ServiceDiscoveryProvider?.Type ? globalConfiguration?.ServiceDiscoveryProvider?.Type
: "consul"; : "consul";
var pollingInterval = globalConfiguration?.ServiceDiscoveryProvider?.PollingInterval ?? 0; var pollingInterval = globalConfiguration?.ServiceDiscoveryProvider?.PollingInterval ?? 0;
var k8snamespace = globalConfiguration?.ServiceDiscoveryProvider?.Namespace ?? string.Empty; var k8snamespace = globalConfiguration?.ServiceDiscoveryProvider?.Namespace ?? string.Empty;

View File

@ -1,6 +1,6 @@
using System.Collections.Generic;
using Ocelot.Configuration.File; using Ocelot.Configuration.File;
using Ocelot.Values; using Ocelot.Values;
using System.Collections.Generic;
namespace Ocelot.Configuration.Creator namespace Ocelot.Configuration.Creator
{ {
@ -29,7 +29,7 @@ namespace Ocelot.Configuration.Creator
placeholders.Add(placeHolderName); placeholders.Add(placeHolderName);
//hack to handle /{url} case //hack to handle /{url} case
if(ForwardSlashAndOnePlaceHolder(upstreamTemplate, placeholders, postitionOfPlaceHolderClosingBracket)) if (ForwardSlashAndOnePlaceHolder(upstreamTemplate, placeholders, postitionOfPlaceHolderClosingBracket))
{ {
return new UpstreamPathTemplate(RegExForwardSlashAndOnePlaceHolder, 0, false, reRoute.UpstreamPathTemplate); return new UpstreamPathTemplate(RegExForwardSlashAndOnePlaceHolder, 0, false, reRoute.UpstreamPathTemplate);
} }
@ -48,11 +48,11 @@ namespace Ocelot.Configuration.Creator
{ {
var indexOfPlaceholder = upstreamTemplate.IndexOf(placeholders[i]); var indexOfPlaceholder = upstreamTemplate.IndexOf(placeholders[i]);
var indexOfNextForwardSlash = upstreamTemplate.IndexOf("/", indexOfPlaceholder); var indexOfNextForwardSlash = upstreamTemplate.IndexOf("/", indexOfPlaceholder);
if(indexOfNextForwardSlash < indexOfPlaceholder || (containsQueryString && upstreamTemplate.IndexOf("?") < upstreamTemplate.IndexOf(placeholders[i]))) if (indexOfNextForwardSlash < indexOfPlaceholder || (containsQueryString && upstreamTemplate.IndexOf("?") < upstreamTemplate.IndexOf(placeholders[i])))
{ {
upstreamTemplate = upstreamTemplate.Replace(placeholders[i], RegExMatchOneOrMoreOfEverything); upstreamTemplate = upstreamTemplate.Replace(placeholders[i], RegExMatchOneOrMoreOfEverything);
} }
else else
{ {
upstreamTemplate = upstreamTemplate.Replace(placeholders[i], RegExMatchOneOrMoreOfEverythingUntilNextForwardSlash); upstreamTemplate = upstreamTemplate.Replace(placeholders[i], RegExMatchOneOrMoreOfEverythingUntilNextForwardSlash);
} }
@ -63,13 +63,13 @@ namespace Ocelot.Configuration.Creator
return new UpstreamPathTemplate(RegExForwardSlashOnly, reRoute.Priority, containsQueryString, reRoute.UpstreamPathTemplate); return new UpstreamPathTemplate(RegExForwardSlashOnly, reRoute.Priority, containsQueryString, reRoute.UpstreamPathTemplate);
} }
if(upstreamTemplate.EndsWith("/")) if (upstreamTemplate.EndsWith("/"))
{ {
upstreamTemplate = upstreamTemplate.Remove(upstreamTemplate.Length -1, 1) + "(/|)"; upstreamTemplate = upstreamTemplate.Remove(upstreamTemplate.Length - 1, 1) + "(/|)";
} }
var route = reRoute.ReRouteIsCaseSensitive var route = reRoute.ReRouteIsCaseSensitive
? $"^{upstreamTemplate}{RegExMatchEndString}" ? $"^{upstreamTemplate}{RegExMatchEndString}"
: $"^{RegExIgnoreCase}{upstreamTemplate}{RegExMatchEndString}"; : $"^{RegExIgnoreCase}{upstreamTemplate}{RegExMatchEndString}";
return new UpstreamPathTemplate(route, reRoute.Priority, containsQueryString, reRoute.UpstreamPathTemplate); return new UpstreamPathTemplate(route, reRoute.Priority, containsQueryString, reRoute.UpstreamPathTemplate);
@ -77,8 +77,8 @@ namespace Ocelot.Configuration.Creator
private bool ForwardSlashAndOnePlaceHolder(string upstreamTemplate, List<string> placeholders, int postitionOfPlaceHolderClosingBracket) private bool ForwardSlashAndOnePlaceHolder(string upstreamTemplate, List<string> placeholders, int postitionOfPlaceHolderClosingBracket)
{ {
if(upstreamTemplate.Substring(0, 2) == "/{" && placeholders.Count == 1 && upstreamTemplate.Length == postitionOfPlaceHolderClosingBracket + 1) if (upstreamTemplate.Substring(0, 2) == "/{" && placeholders.Count == 1 && upstreamTemplate.Length == postitionOfPlaceHolderClosingBracket + 1)
{ {
return true; return true;
} }

View File

@ -11,4 +11,4 @@
public string Host { get; private set; } public string Host { get; private set; }
public int Port { get; private set; } public int Port { get; private set; }
} }
} }

View File

@ -1,7 +1,7 @@
namespace Ocelot.Configuration namespace Ocelot.Configuration
{ {
using System.Collections.Generic;
using Creator; using Creator;
using System.Collections.Generic;
using Values; using Values;
public class DownstreamReRoute public class DownstreamReRoute

Some files were not shown because too many files have changed in this diff Show More