Example #1
0
 /// <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);
 }
Example #2
0
 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()));
 }
Example #3
0
        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 = "&";
            }
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #6
0
 public HttpPostFormEncodedFormatter(WebServiceTarget target) : base(target)
 {
     _encodingFlags = UrlHelper.GetUriStringEncodingFlags(target.EscapeDataNLogLegacy, true, target.EscapeDataRfc3986);
 }
Example #7
0
 public HttpPostFormEncodedFormatter(WebServiceTarget target) : base(target)
 {
     encodingFlags = UrlHelper.GetUriStringEncodingFlags(target.EscapeDataNLogLegacy, true, target.EscapeDataRfc3986);
 }