Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetUriPartsFromUserString()

string System.Uri.GetUriPartsFromUserString ( UriComponents uriParts)
inlineprivate

Definition at line 2069 of file Uri.cs.

2070 {
2071 switch (uriParts & ~UriComponents.KeepDelimiter)
2072 {
2073 case UriComponents.SchemeAndServer:
2074 if (!InFact(Flags.HasUserInfo))
2075 {
2077 }
2079 case UriComponents.HostAndPort:
2080 if (InFact(Flags.HasUserInfo))
2081 {
2082 if (InFact(Flags.NotDefaultPort) || _syntax.DefaultPort == -1)
2083 {
2084 return _string.Substring(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host);
2085 }
2086 return string.Concat(_string.AsSpan(_info.Offset.Host, _info.Offset.Path - _info.Offset.Host), ":", _info.Offset.PortValue.ToString(CultureInfo.InvariantCulture));
2087 }
2088 goto case UriComponents.StrongAuthority;
2089 case UriComponents.AbsoluteUri:
2090 if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
2091 {
2092 return _string;
2093 }
2094 return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
2095 case UriComponents.HttpRequestUrl:
2096 if (InFact(Flags.HasUserInfo))
2097 {
2099 }
2100 if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
2101 {
2102 return _string;
2103 }
2108 if (_info.Offset.Scheme == 0 && _info.Offset.Fragment == _string.Length)
2109 {
2110 return _string;
2111 }
2113 case UriComponents.Scheme:
2114 if (uriParts != UriComponents.Scheme)
2115 {
2117 }
2118 return _syntax.SchemeName;
2119 case UriComponents.Host:
2120 {
2121 int num2 = _info.Offset.Path;
2122 if (InFact(Flags.PortNotCanonical | Flags.NotDefaultPort))
2123 {
2124 while (_string[--num2] != ':')
2125 {
2126 }
2127 }
2128 if (num2 - _info.Offset.Host != 0)
2129 {
2130 return _string.Substring(_info.Offset.Host, num2 - _info.Offset.Host);
2131 }
2132 return string.Empty;
2133 }
2134 case UriComponents.Path:
2135 {
2136 int num = ((uriParts != UriComponents.Path || !InFact(Flags.AuthorityFound) || _info.Offset.End <= _info.Offset.Path || _string[_info.Offset.Path] != '/') ? _info.Offset.Path : (_info.Offset.Path + 1));
2137 if (num >= _info.Offset.Query)
2138 {
2139 return string.Empty;
2140 }
2141 return _string.Substring(num, _info.Offset.Query - num);
2142 }
2143 case UriComponents.Query:
2144 {
2145 int num = ((uriParts != UriComponents.Query) ? _info.Offset.Query : (_info.Offset.Query + 1));
2146 if (num >= _info.Offset.Fragment)
2147 {
2148 return string.Empty;
2149 }
2150 return _string.Substring(num, _info.Offset.Fragment - num);
2151 }
2152 case UriComponents.Fragment:
2153 {
2154 int num = ((uriParts != UriComponents.Fragment) ? _info.Offset.Fragment : (_info.Offset.Fragment + 1));
2155 if (num >= _info.Offset.End)
2156 {
2157 return string.Empty;
2158 }
2159 return _string.Substring(num, _info.Offset.End - num);
2160 }
2162 if (_info.Offset.Path - _info.Offset.User != 0)
2163 {
2164 return _string.Substring(_info.Offset.User, _info.Offset.Path - _info.Offset.User);
2165 }
2166 return string.Empty;
2167 case UriComponents.StrongAuthority:
2168 if (!InFact(Flags.NotDefaultPort) && _syntax.DefaultPort != -1)
2169 {
2170 return string.Concat(_string.AsSpan(_info.Offset.User, _info.Offset.Path - _info.Offset.User), ":", _info.Offset.PortValue.ToString(CultureInfo.InvariantCulture));
2171 }
2173 case UriComponents.PathAndQuery:
2176 if (InFact(Flags.HasUserInfo))
2177 {
2179 }
2180 if (_info.Offset.Scheme == 0 && _info.Offset.End == _string.Length)
2181 {
2182 return _string;
2183 }
2184 return _string.Substring(_info.Offset.Scheme, _info.Offset.End - _info.Offset.Scheme);
2186 return _string.Substring(_info.Offset.Path, _info.Offset.End - _info.Offset.Path);
2187 case UriComponents.UserInfo:
2188 {
2189 if (NotAny(Flags.HasUserInfo))
2190 {
2191 return string.Empty;
2192 }
2193 int num = ((uriParts != UriComponents.UserInfo) ? _info.Offset.Host : (_info.Offset.Host - 1));
2194 if (_info.Offset.User >= num)
2195 {
2196 return string.Empty;
2197 }
2198 return _string.Substring(_info.Offset.User, num - _info.Offset.User);
2199 }
2200 default:
2201 return null;
2202 }
2203 }
static CultureInfo InvariantCulture
string SchemeName
Definition UriParser.cs:81
Offset Offset
Definition Uri.cs:81
UriParser _syntax
Definition Uri.cs:193
string Host
Definition Uri.cs:441
string Query
Definition Uri.cs:477
bool NotAny(Flags flags)
Definition Uri.cs:606
bool InFact(Flags flags)
Definition Uri.cs:611
string Fragment
Definition Uri.cs:491
string _string
Definition Uri.cs:189
UriInfo _info
Definition Uri.cs:197
ushort PortValue
Definition Uri.cs:117
ushort Path
Definition Uri.cs:119
ushort User
Definition Uri.cs:113
ushort Query
Definition Uri.cs:121
ushort End
Definition Uri.cs:125
ushort Host
Definition Uri.cs:115
ushort Scheme
Definition Uri.cs:111
ushort Fragment
Definition Uri.cs:123

References System.Uri._info, System.Uri._string, System.Uri._syntax, System.UriParser.DefaultPort, System.Runtime.Serialization.Dictionary, System.Uri.Offset.End, System.Uri.Offset.Fragment, System.Uri.Offset.Host, System.Uri.InFact(), System.Globalization.CultureInfo.InvariantCulture, System.Uri.NotAny(), System.Uri.UriInfo.Offset, System.Uri.Offset.Path, System.Uri.Offset.PortValue, System.Uri.Offset.Query, System.Uri.Offset.Scheme, System.UriParser.SchemeName, and System.Uri.Offset.User.

Referenced by System.Uri.GetEscapedParts(), and System.Uri.GetUnescapedParts().