diff --git a/uhttpsharp/Headers/HttpHeadersExtensions.cs b/uhttpsharp/Headers/HttpHeadersExtensions.cs index ffe4396f479425df4df178a1c96dd2656c75cf83..7bcaa60623887863585f365c7054d3d2ea52da69 100644 --- a/uhttpsharp/Headers/HttpHeadersExtensions.cs +++ b/uhttpsharp/Headers/HttpHeadersExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Text; namespace uhttpsharp.Headers { @@ -30,5 +31,17 @@ namespace uhttpsharp.Headers headers.TryGetByName(name, out value); return value; } + + public static string ToUriData(this IHttpHeaders headers) + { + var builder = new StringBuilder(); + + foreach (var header in headers) + { + builder.AppendFormat("{0}={1}&", Uri.EscapeDataString(header.Key), Uri.EscapeDataString(header.Value)); + } + + return builder.ToString(0, builder.Length - 1); + } } } \ No newline at end of file diff --git a/uhttpsharp/HttpRequest.cs b/uhttpsharp/HttpRequest.cs index ff0ef1232bfa3e3a4b3eb966995bb863a2305904..dd1c8d45189455079bf7925ffba7db8b6af0a29a 100644 --- a/uhttpsharp/HttpRequest.cs +++ b/uhttpsharp/HttpRequest.cs @@ -19,12 +19,14 @@ using System; using System.CodeDom; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Threading.Tasks; using uhttpsharp.Headers; namespace uhttpsharp { + [DebuggerDisplay("{Method} {OriginalUri,nq}")] internal class HttpRequest : IHttpRequest { private readonly IHttpHeaders _headers; @@ -80,6 +82,20 @@ namespace uhttpsharp { get { return _queryString; } } + + internal string OriginalUri + { + get + { + if (QueryString == null) + { + return Uri.OriginalString; + } + + return Uri.OriginalString + "?" + QueryString.ToUriData(); + + } + } } public interface IHttpRequest