Fix for url encoded path + params (1.0.2.10) - #72

Fix for url encoded path + params (1.0.2.10)
This commit is contained in:
Stef Heyenrath
2017-12-12 18:18:04 +01:00
parent fd5bc203c3
commit d0fc889f42
5 changed files with 30 additions and 22 deletions

View File

@@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using JetBrains.Annotations;
using WireMock.Util;
using WireMock.Validation;
using System.Text;
namespace WireMock
{
@@ -53,6 +54,11 @@ namespace WireMock
/// </summary>
public IDictionary<string, WireMockList<string>> Query { get; }
/// <summary>
/// Gets the raw query.
/// </summary>
public string RawQuery { get; }
/// <summary>
/// Gets the bodyAsBytes.
/// </summary>
@@ -110,7 +116,7 @@ namespace WireMock
Host = url.Host;
Port = url.Port;
Origin = $"{url.Scheme}://{url.Host}:{url.Port}";
Path = url.AbsolutePath;
Path = WebUtility.UrlDecode(url.AbsolutePath);
Method = method.ToLower();
ClientIP = clientIP;
BodyAsBytes = bodyAsBytes;
@@ -118,10 +124,11 @@ namespace WireMock
BodyEncoding = bodyEncoding;
Headers = headers?.ToDictionary(header => header.Key, header => new WireMockList<string>(header.Value));
Cookies = cookies;
Query = ParseQuery(url.Query);
RawQuery = WebUtility.UrlDecode(url.Query);
Query = ParseQuery(RawQuery);
}
private IDictionary<string, WireMockList<string>> ParseQuery(string queryString)
private static IDictionary<string, WireMockList<string>> ParseQuery(string queryString)
{
if (string.IsNullOrEmpty(queryString))
{
@@ -153,7 +160,7 @@ namespace WireMock
}
/// <summary>
/// The get a query parameter.
/// Get a query parameter.
/// </summary>
/// <param name="key">The key.</param>
/// <returns>The query parameter.</returns>