Пример #1
0
        /// <summary>
        /// Build request uri from decoded uri and raw path.
        /// </summary>
        /// <param name="uri">Already decoded uri.</param>
        /// <param name="rawpath">Raw path string.</param>
        /// <returns>Properly encoded request uri.</returns>
        public static XUri FromHttpContextComponents(Uri uri, string rawpath)
        {
            // Note (arnec): RawUrl is only the path portion, lacking SchemeHostPort
            // but Url does path decoding, so we have to construct the url ourselves
            var parsed = new XUri(uri.GetLeftPart(UriPartial.Authority));

            try {
                parsed = parsed.AtAbsolutePath(rawpath);
            } catch {
                // need to try to do an extra pass at encoding the uri, just in case
                rawpath = _encodingFixUpRegex.Replace(rawpath, m => String.Format("%{0}", StringUtil.HexStringFromBytes(Encoding.ASCII.GetBytes((string)m.Value))));
                parsed  = parsed.AtAbsolutePath(rawpath);
            }
            return(parsed);
        }
Пример #2
0
        public void TestSetPath2()
        {
            XUri uri = new XUri("http://www.dummy.com:8081/first/second?query=arg");

            uri = uri.AtAbsolutePath("/foo/bar?q=a");
            Assert.AreEqual("http://www.dummy.com:8081/foo/bar?q=a", uri.ToString());
        }
Пример #3
0
 public void TestSetPath2()
 {
     XUri uri = new XUri("http://www.dummy.com:8081/first/second?query=arg");
     uri = uri.AtAbsolutePath("/foo/bar?q=a");
     Assert.AreEqual("http://www.dummy.com:8081/foo/bar?q=a", uri.ToString());
 }