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); } } }
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(); }
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)); }