private string ExtractHostname(string uriPrefix, bool allowInvalidUriStrings)
{
if (Uri.IsWellFormedUriString(uriPrefix, UriKind.Absolute))
{
Uri hostUri = new Uri(uriPrefix);
return hostUri.Host;
}
else if (allowInvalidUriStrings)
{
int i = uriPrefix.IndexOf("://") + 3;
int j = i;
bool inSquareBrackets = false;
while (j < uriPrefix.Length && uriPrefix[j] != '/' && (uriPrefix[j] != ':' || inSquareBrackets))
{
if (uriPrefix[j] == '[')
{
if (inSquareBrackets)
{
j = i;
break;
}
inSquareBrackets = true;
}
if (inSquareBrackets && uriPrefix[j] == ']')
{
inSquareBrackets = false;
}
j++;
}
return uriPrefix.Substring(i, j - i);
}
return null;
}