diff --git a/src/WireMock.Net/RequestMessage.cs b/src/WireMock.Net/RequestMessage.cs
index 990e03ba..875c1974 100644
--- a/src/WireMock.Net/RequestMessage.cs
+++ b/src/WireMock.Net/RequestMessage.cs
@@ -34,6 +34,11 @@ namespace WireMock
///
public string Path { get; }
+ ///
+ /// Gets the path segments.
+ ///
+ public string[] PathSegments { get; }
+
///
/// Gets the method.
///
@@ -120,6 +125,7 @@ namespace WireMock
Port = url.Port;
Origin = $"{url.Scheme}://{url.Host}:{url.Port}";
Path = WebUtility.UrlDecode(url.AbsolutePath);
+ PathSegments = Path.Split('/').Skip(1).ToArray();
Method = method.ToLower();
ClientIP = clientIP;
@@ -157,11 +163,14 @@ namespace WireMock
Port = url.Port;
Origin = $"{url.Scheme}://{url.Host}:{url.Port}";
Path = WebUtility.UrlDecode(url.AbsolutePath);
+ PathSegments = Path.Split('/').Skip(1).ToArray();
Method = method.ToLower();
ClientIP = clientIP;
+
BodyAsBytes = bodyAsBytes;
Body = body;
BodyEncoding = bodyEncoding;
+
Headers = headers?.ToDictionary(header => header.Key, header => new WireMockList(header.Value));
Cookies = cookies;
RawQuery = WebUtility.UrlDecode(url.Query);
diff --git a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
index b8613428..4d4689cf 100644
--- a/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
+++ b/src/WireMock.Net/ResponseBuilders/IBodyResponseBuilder.cs
@@ -18,7 +18,6 @@ namespace WireMock.ResponseBuilders
/// A .
IResponseBuilder WithBody([NotNull] string body, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
-
///
/// WithBody : Create a ... response based on a callback function.
///
@@ -26,8 +25,7 @@ namespace WireMock.ResponseBuilders
/// The Body Destination format (SameAsSource, String or Bytes).
/// The body encoding.
/// A .
- IResponseBuilder WithBody([NotNull] Func bodyFactory, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
-
+ IResponseBuilder WithBody([NotNull] Func bodyFactory, [CanBeNull] string destination = BodyDestinationFormat.SameAsSource, [CanBeNull] Encoding encoding = null);
///
/// WithBody : Create a ... response based on a bytearray.
diff --git a/test/WireMock.Net.Tests/RequestMessageTests.cs b/test/WireMock.Net.Tests/RequestMessageTests.cs
index 14742b44..1db6b44e 100644
--- a/test/WireMock.Net.Tests/RequestMessageTests.cs
+++ b/test/WireMock.Net.Tests/RequestMessageTests.cs
@@ -1,5 +1,6 @@
using System;
using NFluent;
+using WireMock.Util;
using Xunit;
namespace WireMock.Net.Tests
@@ -50,5 +51,25 @@ namespace WireMock.Net.Tests
Check.That(request.GetParameter("key")).Contains("2");
Check.That(request.GetParameter("key")).Contains("3");
}
+
+ [Fact]
+ public void RequestMessage_Constructor1_PathSegments()
+ {
+ // Assign
+ var request = new RequestMessage(new Uri("http://localhost/a/b/c"), "POST", ClientIp);
+
+ // Assert
+ Check.That(request.PathSegments).ContainsExactly("a", "b", "c");
+ }
+
+ [Fact]
+ public void RequestMessage_Constructor2_PathSegments()
+ {
+ // Assign
+ var request = new RequestMessage(new Uri("http://localhost/a/b/c"), "POST", ClientIp, new BodyData());
+
+ // Assert
+ Check.That(request.PathSegments).ContainsExactly("a", "b", "c");
+ }
}
}
\ No newline at end of file