示例#1
0
        public static void ParseCompletedRequestId(
            string httpScaleRequestId,
            out string siteName,
            out string originalRequestId,
            out string workerName)
        {
            int firstSeparator = httpScaleRequestId.IndexOf('/');

            siteName = IdnHelper.GetUnicode(httpScaleRequestId.Substring(0, firstSeparator));

            int lastSeparator = httpScaleRequestId.LastIndexOf('/');

            originalRequestId = httpScaleRequestId.Substring(0, lastSeparator);
            workerName        = httpScaleRequestId.Substring(lastSeparator + 1);
        }
        public void PunycodeToUnicodeConversionTest()
        {
            Assert.Equal(punycodeStrings.Length, unicodeStrings.Length);
            Assert.Equal(punycodeUserStrings.Length, unicodeUserStrings.Length);

            // Test straight Punycode to Unicode conversion.
            for (int i = 0; i < punycodeStrings.Length; i++)
            {
                Assert.Equal(IdnHelper.GetUnicode(punycodeStrings[i]), unicodeStrings[i]);
            }

            // Test Punycode to Unicode conversion for user names.
            for (int i = 0; i < punycodeUserStrings.Length; i++)
            {
                Assert.Equal(IdnHelper.GetUnicodeForUserName(punycodeUserStrings[i]), unicodeUserStrings[i]);
            }

            // Test user names that start with the $ sign.
            for (int i = 0; i < punycodeUserStrings.Length; i++)
            {
                Assert.Equal(IdnHelper.GetUnicodeForUserName("$" + punycodeUserStrings[i]), "$" + unicodeUserStrings[i]);
            }

            // Test user names in the email address format that has the @ sign in the middle.
            for (int i = 0; i < punycodeUserStrings.Length; i++)
            {
                // Skip null or empty strings.
                if (string.IsNullOrEmpty(punycodeUserStrings[i]))
                {
                    continue;
                }

                for (int j = 0; j < punycodeStrings.Length; j++)
                {
                    // Skip null or empty strings.
                    if (string.IsNullOrEmpty(punycodeStrings[j]))
                    {
                        continue;
                    }

                    string pstring = punycodeUserStrings[i] + "@" + punycodeStrings[j];
                    string ustring = unicodeUserStrings[i] + "@" + unicodeStrings[j];
                    Assert.Equal(IdnHelper.GetUnicodeForUserName(pstring), ustring);
                }
            }
        }
示例#3
0
        public Repository(Site site)
        {
            string uriString = site.SiteProperties.Properties.Where(p => p.Name.Equals("RepositoryUri", StringComparison.OrdinalIgnoreCase)).Select(p => p.Value).FirstOrDefault();

            if (uriString != null && !uriString.EndsWith("/"))
            {
                uriString += "/";
            }

            // The host name portion of the Uri can contain IDN characters derived from the site name so we need to convert it to Punycode.
            UriBuilder uri = new UriBuilder(uriString);

            uri.Host      = IdnHelper.GetAscii(uri.Host);
            RepositoryUri = uri.ToString();

            PublishingUsername = site.SiteProperties.Properties.Where(p => p.Name.Equals("PublishingUsername", StringComparison.OrdinalIgnoreCase)).Select(p => p.Value).FirstOrDefault();
            PublishingPassword = site.SiteProperties.Properties.Where(p => p.Name.Equals("PublishingPassword", StringComparison.OrdinalIgnoreCase)).Select(p => p.Value).FirstOrDefault();
        }
示例#4
0
        public static string NextHttpScaleRequestId(string runtimeSiteName)
        {
            var nextId = Interlocked.Increment(ref _requestId);

            return(string.Format("{0}/{1:x16}/{2}", IdnHelper.GetAscii(runtimeSiteName), (ulong)nextId, HttpScaleEnvironment.TickCount));
        }