From cb1117fdaad40614422db08228b16b3b87242836 Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Sat, 11 Nov 2017 10:09:41 +0100 Subject: [PATCH] IHeadersAndCookiesRequestBuilder --- .../Request/RequestMessageClientIPMatcher.cs | 11 ++------ .../Request/RequestMessageHeaderMatcher.cs | 27 ++++++++++++------- .../Request/RequestMessagePathMatcher.cs | 11 ++------ .../Request/RequestMessageUrlMatcher.cs | 11 ++------ .../IHeadersAndCookiesRequestBuilder.cs | 11 +++++++- src/WireMock.Net/RequestBuilders/Request.cs | 18 ++++++++----- .../Server/FluentMockServer.Admin.cs | 4 +-- .../Util/NamedReaderWriterLocker.cs | 3 +-- 8 files changed, 48 insertions(+), 48 deletions(-) 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