Adds the posibility of use final paths in the reroutes of configuration.json file.

Adds a unit test method to test the functionality.
This commit is contained in:
Juan Carlos Santana Herrera
2017-04-20 11:05:46 +01:00
parent 8d31b40c21
commit b8ee43c737
2 changed files with 20 additions and 5 deletions

View File

@ -18,8 +18,8 @@ namespace Ocelot.DownstreamRouteFinder.UrlMatcher
if (IsPlaceholder(upstreamUrlPathTemplate[counterForTemplate]))
{
var variableName = GetPlaceholderVariableName(upstreamUrlPathTemplate, counterForTemplate);
var variableValue = GetPlaceholderVariableValue(upstreamUrlPath, counterForUrl);
var variableValue = GetPlaceholderVariableValue(upstreamUrlPathTemplate, variableName, upstreamUrlPath, counterForUrl);
var templateVariableNameAndValue = new UrlPathPlaceholderNameAndValue(variableName, variableValue);
@ -40,15 +40,15 @@ namespace Ocelot.DownstreamRouteFinder.UrlMatcher
return new OkResponse<List<UrlPathPlaceholderNameAndValue>>(templateKeysAndValues);
}
private string GetPlaceholderVariableValue(string urlPath, int counterForUrl)
private string GetPlaceholderVariableValue(string urlPathTemplate, string variableName, string urlPath, int counterForUrl)
{
var positionOfNextSlash = urlPath.IndexOf('/', counterForUrl);
if(positionOfNextSlash == -1)
if (positionOfNextSlash == -1 || urlPathTemplate.Trim('/').EndsWith(variableName))
{
positionOfNextSlash = urlPath.Length;
}
var variableValue = urlPath.Substring(counterForUrl, positionOfNextSlash - counterForUrl);
return variableValue;