/// <summary> /// Transforms the output of another layout. /// </summary> /// <param name="text">Output to be transform.</param> /// <returns>Transformed text.</returns> protected override string Transform(string text) { if (!string.IsNullOrEmpty(text)) { UrlHelper.EscapeEncodingFlag encodingFlags = UrlHelper.GetUriStringEncodingFlags(EscapeDataNLogLegacy, SpaceAsPlus, EscapeDataRfc3986); System.Text.StringBuilder sb = new System.Text.StringBuilder(text.Length + 20); UrlHelper.EscapeDataEncode(text, sb, encodingFlags); return(sb.ToString()); } return(string.Empty); }
public void EscapeDataEncodeTestRfc3986(string input, bool spaceAsPlus, string result) { System.Text.StringBuilder builder = new System.Text.StringBuilder(input.Length + 20); UrlHelper.EscapeEncodingFlag encodingFlags = UrlHelper.EscapeEncodingFlag.None; if (spaceAsPlus) { encodingFlags |= UrlHelper.EscapeEncodingFlag.SpaceAsPlus; } UrlHelper.EscapeDataEncode(input, builder, encodingFlags); Assert.Equal(result, builder.ToString()); Assert.Equal(input.Replace('+', ' '), DecodeUrlString(builder.ToString())); }
private void BuildWebServiceQueryParameters(object[] parameterValues, StringBuilder sb) { UrlHelper.EscapeEncodingFlag encodingFlags = UrlHelper.GetUriStringEncodingFlags(EscapeDataNLogLegacy, false, EscapeDataRfc3986); string separator = string.Empty; for (int i = 0; i < this.Parameters.Count; i++) { sb.Append(separator); sb.Append(this.Parameters[i].Name); sb.Append("="); string parameterValue = XmlHelper.XmlConvertToString(parameterValues[i]); if (!string.IsNullOrEmpty(parameterValue)) { UrlHelper.EscapeDataEncode(parameterValue, sb, encodingFlags); } separator = "&"; } }
/// <summary> /// Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. /// </summary> /// <param name="parameterValues"></param> /// <returns></returns> private Uri BuildWebServiceUrl(object[] parameterValues) { if (this.Protocol != WebServiceProtocol.HttpGet) { return(this.Url); } UrlHelper.EscapeEncodingFlag encodingFlags = UrlHelper.GetUriStringEncodingFlags(EscapeDataNLogLegacy, false, EscapeDataRfc3986); //if the protocol is HttpGet, we need to add the parameters to the query string of the url var queryParameters = new StringBuilder(); string separator = string.Empty; for (int i = 0; i < this.Parameters.Count; i++) { queryParameters.Append(separator); queryParameters.Append(this.Parameters[i].Name); queryParameters.Append("="); string parameterValue = XmlHelper.XmlConvertToString(parameterValues[i]); if (!string.IsNullOrEmpty(parameterValue)) { UrlHelper.EscapeDataEncode(parameterValue, queryParameters, encodingFlags); } separator = "&"; } var builder = new UriBuilder(this.Url); //append our query string to the URL following //the recommendations at https://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx if (builder.Query != null && builder.Query.Length > 1) { builder.Query = string.Concat(builder.Query.Substring(1), "&", queryParameters.ToString()); } else { builder.Query = queryParameters.ToString(); } return(builder.Uri); }
private MemoryStream PrepareHttpRequest(HttpWebRequest request, object[] parameterValues) { request.ContentType = "application/x-www-form-urlencoded; charset=" + this.Encoding.WebName; UrlHelper.EscapeEncodingFlag encodingFlags = UrlHelper.GetUriStringEncodingFlags(EscapeDataNLogLegacy, true, EscapeDataRfc3986); var ms = new MemoryStream(); string separator = string.Empty; var sw = new StreamWriter(ms, this.Encoding); sw.Write(string.Empty); StringBuilder sb = null; for (int i = 0; i < this.Parameters.Count; i++) { sw.Write(separator); sw.Write(this.Parameters[i].Name); sw.Write("="); string parameterValue = Convert.ToString(parameterValues[i], CultureInfo.InvariantCulture); if (!string.IsNullOrEmpty(parameterValue)) { if (sb == null) { sb = new StringBuilder(Math.Max(parameterValue.Length + 20, this.Parameters.Count > 1 ? 256 : 0)); } else { StringBuilderExt.ClearBuilder(sb); } UrlHelper.EscapeDataEncode(parameterValue, sb, encodingFlags); sw.Write(sb.ToString()); } separator = "&"; } sw.Flush(); return(ms); }
public HttpPostFormEncodedFormatter(WebServiceTarget target) : base(target) { _encodingFlags = UrlHelper.GetUriStringEncodingFlags(target.EscapeDataNLogLegacy, true, target.EscapeDataRfc3986); }
public HttpPostFormEncodedFormatter(WebServiceTarget target) : base(target) { encodingFlags = UrlHelper.GetUriStringEncodingFlags(target.EscapeDataNLogLegacy, true, target.EscapeDataRfc3986); }