diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageClientIPMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageClientIPMatcher.cs
index f498d29d..ddd283cb 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageClientIPMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageClientIPMatcher.cs
@@ -25,7 +25,7 @@ namespace WireMock.Matchers.Request
/// Initializes a new instance of the class.
///
/// The clientIPs.
- public RequestMessageClientIPMatcher([NotNull] params string[] clientIPs) : this(clientIPs.Select(ip => new WildcardMatcher(ip)).ToArray())
+ public RequestMessageClientIPMatcher([NotNull] params string[] clientIPs) : this(clientIPs.Select(ip => new WildcardMatcher(ip)).Cast().ToArray())
{
}
@@ -49,14 +49,7 @@ namespace WireMock.Matchers.Request
Funcs = funcs;
}
- ///
- /// Determines whether the specified RequestMessage is match.
- ///
- /// The RequestMessage.
- /// The RequestMatchResult.
- ///
- /// A value between 0.0 - 1.0 of the similarity.
- ///
+ ///
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
index 22ef6f55..6774168f 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageHeaderMatcher.cs
@@ -10,6 +10,7 @@ namespace WireMock.Matchers.Request
///
/// The request header matcher.
///
+ ///
public class RequestMessageHeaderMatcher : IRequestMatcher
{
///
@@ -32,7 +33,7 @@ namespace WireMock.Matchers.Request
///
/// The name.
/// The pattern.
- /// The ignoreCase.
+ /// if set to true [ignore case].
public RequestMessageHeaderMatcher([NotNull] string name, [NotNull] string pattern, bool ignoreCase = true)
{
Check.NotNull(name, nameof(name));
@@ -42,6 +43,21 @@ namespace WireMock.Matchers.Request
Matchers = new IMatcher[] { new WildcardMatcher(pattern, ignoreCase) };
}
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name.
+ /// The patterns.
+ /// if set to true [ignore case].
+ public RequestMessageHeaderMatcher([NotNull] string name, [NotNull] string[] patterns, bool ignoreCase = true)
+ {
+ Check.NotNull(name, nameof(name));
+ Check.NotNull(patterns, nameof(patterns));
+
+ Name = name;
+ Matchers = patterns.Select(pattern => new WildcardMatcher(pattern, ignoreCase)).Cast().ToArray();
+ }
+
///
/// Initializes a new instance of the class.
///
@@ -67,14 +83,7 @@ namespace WireMock.Matchers.Request
Funcs = funcs;
}
- ///
- /// Determines whether the specified RequestMessage is match.
- ///
- /// The RequestMessage.
- /// The RequestMatchResult.
- ///
- /// A value between 0.0 - 1.0 of the similarity.
- ///
+ ///
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
index d1c028b2..69291654 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessagePathMatcher.cs
@@ -25,7 +25,7 @@ namespace WireMock.Matchers.Request
/// Initializes a new instance of the class.
///
/// The paths.
- public RequestMessagePathMatcher([NotNull] params string[] paths) : this(paths.Select(path => new WildcardMatcher(path)).ToArray())
+ public RequestMessagePathMatcher([NotNull] params string[] paths) : this(paths.Select(path => new WildcardMatcher(path)).Cast().ToArray())
{
}
@@ -49,14 +49,7 @@ namespace WireMock.Matchers.Request
Funcs = funcs;
}
- ///
- /// Determines whether the specified RequestMessage is match.
- ///
- /// The RequestMessage.
- /// The RequestMatchResult.
- ///
- /// A value between 0.0 - 1.0 of the similarity.
- ///
+ ///
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
diff --git a/src/WireMock.Net/Matchers/Request/RequestMessageUrlMatcher.cs b/src/WireMock.Net/Matchers/Request/RequestMessageUrlMatcher.cs
index 728a8acd..46f73cb2 100644
--- a/src/WireMock.Net/Matchers/Request/RequestMessageUrlMatcher.cs
+++ b/src/WireMock.Net/Matchers/Request/RequestMessageUrlMatcher.cs
@@ -25,7 +25,7 @@ namespace WireMock.Matchers.Request
/// Initializes a new instance of the class.
///
/// The urls.
- public RequestMessageUrlMatcher([NotNull] params string[] urls) : this(urls.Select(url => new WildcardMatcher(url)).ToArray())
+ public RequestMessageUrlMatcher([NotNull] params string[] urls) : this(urls.Select(url => new WildcardMatcher(url)).Cast().ToArray())
{
}
@@ -49,14 +49,7 @@ namespace WireMock.Matchers.Request
Funcs = funcs;
}
- ///
- /// Determines whether the specified RequestMessage is match.
- ///
- /// The RequestMessage.
- /// The RequestMatchResult.
- ///
- /// A value between 0.0 - 1.0 of the similarity.
- ///
+ ///
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
diff --git a/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs b/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
index 5a416755..55657aed 100644
--- a/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
+++ b/src/WireMock.Net/RequestBuilders/IHeadersAndCookiesRequestBuilder.cs
@@ -12,7 +12,7 @@ namespace WireMock.RequestBuilders
public interface IHeadersAndCookiesRequestBuilder : IBodyRequestBuilder, IRequestMatcher, IParamsRequestBuilder
{
///
- /// The with header.
+ /// Add Header matching based on name, pattern and ignoreCase.
///
/// The name.
/// The pattern.
@@ -20,6 +20,15 @@ namespace WireMock.RequestBuilders
/// The .
IRequestBuilder WithHeader([NotNull] string name, string pattern, bool ignoreCase = true);
+ ///
+ /// Add Header matching based on name, patterns and ignoreCase.
+ ///
+ /// The name.
+ /// The patterns.
+ /// ignore Case
+ /// The .
+ IRequestBuilder WithHeader([NotNull] string name, string[] patterns, bool ignoreCase = true);
+
///
/// The with header.
///
diff --git a/src/WireMock.Net/RequestBuilders/Request.cs b/src/WireMock.Net/RequestBuilders/Request.cs
index 8d300ce6..d748c266 100644
--- a/src/WireMock.Net/RequestBuilders/Request.cs
+++ b/src/WireMock.Net/RequestBuilders/Request.cs
@@ -359,13 +359,7 @@ namespace WireMock.RequestBuilders
return this;
}
- ///
- /// With header.
- ///
- /// The name.
- /// The pattern.
- /// if set to true [ignore case].
- /// The .
+ ///
public IRequestBuilder WithHeader(string name, string pattern, bool ignoreCase = true)
{
Check.NotNull(name, nameof(name));
@@ -375,6 +369,16 @@ namespace WireMock.RequestBuilders
return this;
}
+ ///
+ public IRequestBuilder WithHeader(string name, string[] patterns, bool ignoreCase = true)
+ {
+ Check.NotNull(name, nameof(name));
+ Check.NotNull(patterns, nameof(patterns));
+
+ _requestMatchers.Add(new RequestMessageHeaderMatcher(name, patterns, ignoreCase));
+ return this;
+ }
+
///
/// With header.
///
diff --git a/src/WireMock.Net/Server/FluentMockServer.Admin.cs b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
index f89120b8..3ee8f64b 100644
--- a/src/WireMock.Net/Server/FluentMockServer.Admin.cs
+++ b/src/WireMock.Net/Server/FluentMockServer.Admin.cs
@@ -167,8 +167,8 @@ namespace WireMock.Server
request.UsingVerb(requestMessage.Method);
requestMessage.Query.Loop((key, value) => request.WithParam(key, value.ToArray()));
- requestMessage.Headers.Loop((key, value) => request.WithHeader(key, new ExactMatcher(value.ToArray())));
- requestMessage.Cookies.Loop((key, value) => request.WithCookie(key, new ExactMatcher(value)));
+ requestMessage.Headers.Loop((key, value) => request.WithHeader(key, value.ToArray()));
+ requestMessage.Cookies.Loop((key, value) => request.WithCookie(key, value));
if (requestMessage.Body != null)
{
diff --git a/src/WireMock.Net/Util/NamedReaderWriterLocker.cs b/src/WireMock.Net/Util/NamedReaderWriterLocker.cs
index 82e73fd1..6194cf19 100644
--- a/src/WireMock.Net/Util/NamedReaderWriterLocker.cs
+++ b/src/WireMock.Net/Util/NamedReaderWriterLocker.cs
@@ -74,8 +74,7 @@ namespace WireMock.Util
public void RemoveLock(string name)
{
- ReaderWriterLockSlim o;
- _lockDict.TryRemove(name, out o);
+ _lockDict.TryRemove(name, out _);
}
}
}
\ No newline at end of file