This commit is contained in:
Stef Heyenrath
2018-03-24 18:40:59 +01:00
parent a3c853b4ad
commit 8662638622
5 changed files with 126 additions and 20 deletions

View File

@@ -3,7 +3,7 @@
<PropertyGroup>
<Description>Lightweight StandAlone Http Mocking Server for .Net.</Description>
<AssemblyTitle>WireMock.Net.StandAlone</AssemblyTitle>
<Version>1.0.3.11</Version>
<Version>1.0.3.12</Version>
<Authors>Stef Heyenrath</Authors>
<TargetFrameworks>net452;net46;netstandard1.3;netstandard2.0</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>

View File

@@ -7,12 +7,11 @@ using WireMock.Validation;
namespace WireMock.Matchers
{
/// <summary>
/// JSONPathMatcher
/// JsonPathMatcher
/// </summary>
/// <seealso cref="IMatcher" />
public class JsonPathMatcher : IStringMatcher, IObjectMatcher
{
// private readonly object _jsonPattern;
private readonly string[] _patterns;
/// <summary>
@@ -26,13 +25,6 @@ namespace WireMock.Matchers
_patterns = patterns;
}
//public JsonPathMatcher([NotNull] object jsonPattern)
//{
// Check.NotNull(jsonPattern, nameof(jsonPattern));
// _jsonPattern = jsonPattern;
//}
/// <inheritdoc cref="IStringMatcher.IsMatch"/>
public double IsMatch(string input)
{
@@ -43,9 +35,8 @@ namespace WireMock.Matchers
try
{
JObject o = JObject.Parse(input);
return MatchScores.ToScore(_patterns.Select(p => o.SelectToken(p) != null));
var jtoken = JToken.Parse(input);
return IsMatch(jtoken);
}
catch (Exception)
{
@@ -63,9 +54,9 @@ namespace WireMock.Matchers
try
{
var o = input as JObject ?? JObject.FromObject(input);
return MatchScores.ToScore(_patterns.Select(p => o.SelectToken(p) != null));
// Check if JToken or object
JToken jtoken = input is JToken token ? token : JObject.FromObject(input);
return IsMatch(jtoken);
}
catch (Exception)
{
@@ -84,5 +75,13 @@ namespace WireMock.Matchers
{
return "JsonPathMatcher";
}
private double IsMatch(JToken jtoken)
{
// Wrap in array if needed
JToken jarray = jtoken is JArray ? jtoken : new JArray(jtoken);
return MatchScores.ToScore(_patterns.Select(pattern => jarray.SelectToken(pattern) != null));
}
}
}