286 references to UriSyntaxFlags
System.Private.Uri (286)
System\GenericUriParser.cs (32)
61
private static
UriSyntaxFlags
MapGenericParserOptions(GenericUriParserOptions options)
67
UriSyntaxFlags
flags = DefaultGenericUriParserFlags;
72
flags &= ~(
UriSyntaxFlags
.MayHaveUserInfo |
UriSyntaxFlags
.MayHavePort |
UriSyntaxFlags
.AllowUncHost |
UriSyntaxFlags
.AllowAnInternetHost);
73
flags |=
UriSyntaxFlags
.AllowAnyOtherHost;
78
flags |=
UriSyntaxFlags
.AllowEmptyHost;
83
flags &= ~
UriSyntaxFlags
.MayHaveUserInfo;
88
flags &= ~
UriSyntaxFlags
.MayHavePort;
93
flags &= ~
UriSyntaxFlags
.MayHaveQuery;
98
flags &= ~
UriSyntaxFlags
.MayHaveFragment;
103
flags &= ~
UriSyntaxFlags
.ConvertPathSlashes;
108
flags &= ~(
UriSyntaxFlags
.CompressPath |
UriSyntaxFlags
.CanonicalizeAsFilePath);
113
flags &= ~
UriSyntaxFlags
.UnEscapeDotsAndSlashes;
118
flags |=
UriSyntaxFlags
.AllowIdn;
123
flags |=
UriSyntaxFlags
.AllowIriParsing;
129
private const
UriSyntaxFlags
DefaultGenericUriParserFlags =
130
UriSyntaxFlags
.MustHaveAuthority |
131
UriSyntaxFlags
.MayHaveUserInfo |
132
UriSyntaxFlags
.MayHavePort |
133
UriSyntaxFlags
.MayHavePath |
134
UriSyntaxFlags
.MayHaveQuery |
135
UriSyntaxFlags
.MayHaveFragment |
136
UriSyntaxFlags
.AllowUncHost |
137
UriSyntaxFlags
.AllowAnInternetHost |
138
UriSyntaxFlags
.PathIsRooted |
139
UriSyntaxFlags
.ConvertPathSlashes |
140
UriSyntaxFlags
.CompressPath |
141
UriSyntaxFlags
.CanonicalizeAsFilePath |
142
UriSyntaxFlags
.UnEscapeDotsAndSlashes;
System\Uri.cs (75)
332
return syntax is null || syntax.InFact(
UriSyntaxFlags
.AllowIriParsing);
989
return syntax.InFact(
UriSyntaxFlags
.FileLikeUri);
1546
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1842
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1844
if (!other._syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
2016
if (_syntax.IsAllSet(
UriSyntaxFlags
.AllowEmptyHost |
UriSyntaxFlags
.AllowDOSPath) &&
2032
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) || i - idx <= 3)
2046
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri))
2054
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2071
else if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) &&
2080
else if (!OperatingSystem.IsWindows() && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && str[i - 1] == '/' && i - idx == 3)
2099
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2112
else if (_syntax.InFact(
UriSyntaxFlags
.OptionalAuthority) && (InFact(Flags.AuthorityFound) ||
2120
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2132
else if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2138
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2179
if (hostTerminator == '\\' && NotAny(Flags.ImplicitFile) && _syntax.NotAny(
UriSyntaxFlags
.AllowDOSPath))
3200
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3201
bool iriParsing = (syntaxFlags &
UriSyntaxFlags
.AllowIriParsing) != 0;
3237
if ((cF & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0)
3264
(cF & Flags.ImplicitFile) != 0 || (syntaxFlags & (
UriSyntaxFlags
.MayHaveQuery |
UriSyntaxFlags
.MayHaveFragment)) == 0 ? c_DummyChar :
3265
((syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) != 0) ? '?' : '#';
3280
if (((cF & Flags.AuthorityFound) != 0) && ((syntaxFlags &
UriSyntaxFlags
.PathIsRooted) != 0)
3291
(((syntaxFlags & (
UriSyntaxFlags
.CompressPath |
UriSyntaxFlags
.ConvertPathSlashes)) != 0) ||
3292
(syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)))
3294
if (((result & Check.DotSlashEscaped) != 0) && (syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)
3300
if (((syntaxFlags & (
UriSyntaxFlags
.ConvertPathSlashes)) != 0) && (result & Check.BackslashInPath) != 0)
3306
if (((syntaxFlags & (
UriSyntaxFlags
.CompressPath)) != 0) && ((cF & Flags.E_PathNotCanonical) != 0 ||
3363
Check result = CheckCanonical(inputStr.AsSpan(idx, length - idx), (syntaxFlags & (
UriSyntaxFlags
.MayHaveFragment)) != 0 ? '#' : c_EOL, out int charsChecked);
3429
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3475
int pathLength = (flags & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0
3491
int fragmentOffset = (syntaxFlags &
UriSyntaxFlags
.MayHaveFragment) == 0
3688
private int CheckAuthorityHelper(ReadOnlySpan<char> str, int startOffset, out ParsingError err, ref Flags flags,
UriSyntaxFlags
syntaxFlags, ref string? newHost)
3707
if ((uint)startOffset >= (uint)str.Length || ((ch = str[startOffset]) == '/' || (ch == '\\' && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) != 0) || ch == '#' || ch == '?'))
3709
if ((syntaxFlags &
UriSyntaxFlags
.AllowEmptyHost) != 0)
3726
if ((syntaxFlags &
UriSyntaxFlags
.MayHaveUserInfo) != 0)
3749
if (ch == '[' && (syntaxFlags &
UriSyntaxFlags
.AllowIPv6Host) != 0 && IPv6AddressHelper.IsValid(str.Slice(i), out hostLength))
3770
else if (char.IsAsciiDigit(ch) && (syntaxFlags &
UriSyntaxFlags
.AllowIPv4Host) != 0 &&
3771
IPv4AddressHelper.IsValid(str.Slice(i), out hostLength, allowIPv6: false, StaticNotAny(flags, Flags.ImplicitFile), (syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0))
3780
else if ((syntaxFlags & (
UriSyntaxFlags
.AllowDnsHost |
UriSyntaxFlags
.AllowIriParsing)) ==
UriSyntaxFlags
.AllowDnsHost &&
3794
else if (((syntaxFlags &
UriSyntaxFlags
.AllowDnsHost) != 0) &&
3795
(hasUnicode || (syntaxFlags &
UriSyntaxFlags
.AllowIdn) != 0) &&
3819
else if ((syntaxFlags &
UriSyntaxFlags
.AllowUncHost) != 0)
3840
if (hostDelimiter == '\\' && (flags & Flags.HostTypeMask) != Flags.HostNotParsed && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) == 0)
3842
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3855
if ((syntaxFlags &
UriSyntaxFlags
.MayHavePort) != 0)
3875
if ((syntaxFlags & (
UriSyntaxFlags
.AllowAnyOtherHost |
UriSyntaxFlags
.V1_UnknownUri)) ==
UriSyntaxFlags
.AllowAnyOtherHost)
3891
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3920
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3942
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3982
else if ((syntaxFlags & (
UriSyntaxFlags
.MustHaveAuthority |
UriSyntaxFlags
.MailToLikeUri)) != 0)
4077
else if (delim == '?' && c == '#' && (_syntax != null && _syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4084
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) && delim != c_EOL))
4097
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4206
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4209
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4238
if (!OperatingSystem.IsWindows() && InFact(Flags.BackslashInPath) && _syntax.NotAny(
UriSyntaxFlags
.ConvertPathSlashes) && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && !IsImplicitFile)
4261
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4264
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4391
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4392
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4399
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4400
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4487
bool convBackSlashes = basePart.Syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes);
4541
c1 = basePart.Syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) ? '?' : c_DummyChar;
4544
char c2 = (!basePart.IsImplicitFile && basePart.Syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)) ? '#' :
System\UriBuilder.cs (3)
352
schemeDelimiter = syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority)
353
|| (host.Length != 0 && syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri) && syntax.InFact(
UriSyntaxFlags
.OptionalAuthority))
System\UriExt.cs (5)
711
if (relativeStr[0] == '#' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveFragment))
719
if (relativeStr[0] == '?' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveQuery))
738
else if (baseUri.Syntax!.InFact(
UriSyntaxFlags
.AllowDOSPath))
743
prefix = baseUri.Syntax.InFact(
UriSyntaxFlags
.PathIsRooted) ? ":///" : "://";
745
prefix = baseUri.Syntax.InFact(
UriSyntaxFlags
.PathIsRooted) ? ":/" : ":";
System\UriScheme.cs (3)
33
private const
UriSyntaxFlags
SchemeOnlyFlags =
UriSyntaxFlags
.MayHavePath;
194
return syntax != null && syntax.NotAny(
UriSyntaxFlags
.V1_UnknownUri);
System\UriSyntax.cs (168)
99
private
UriSyntaxFlags
_flags;
112
internal BuiltInUriParser(string lwrCaseScheme, int defaultPort,
UriSyntaxFlags
syntaxFlags)
113
: base(syntaxFlags |
UriSyntaxFlags
.SimpleUserSyntax)
120
internal
UriSyntaxFlags
Flags
128
internal bool NotAny(
UriSyntaxFlags
flags)
134
internal bool InFact(
UriSyntaxFlags
flags)
140
internal bool IsAllSet(
UriSyntaxFlags
flags)
149
internal UriParser(
UriSyntaxFlags
flags)
162
syntax._flags &= ~
UriSyntaxFlags
.V1_UnknownUri;
221
return InFact(
UriSyntaxFlags
.SimpleUserSyntax);
240
_flags |=
UriSyntaxFlags
.SimpleUserSyntax;
293
private const
UriSyntaxFlags
UnknownV1SyntaxFlags =
294
UriSyntaxFlags
.V1_UnknownUri | // This flag must be always set here
295
UriSyntaxFlags
.OptionalAuthority |
297
UriSyntaxFlags
.MayHaveUserInfo |
298
UriSyntaxFlags
.MayHavePort |
299
UriSyntaxFlags
.MayHavePath |
300
UriSyntaxFlags
.MayHaveQuery |
301
UriSyntaxFlags
.MayHaveFragment |
303
UriSyntaxFlags
.AllowEmptyHost |
304
UriSyntaxFlags
.AllowUncHost | // V1 compat
305
UriSyntaxFlags
.AllowAnInternetHost |
306
UriSyntaxFlags
.PathIsRooted |
307
UriSyntaxFlags
.AllowDOSPath | // V1 compat, actually we should not parse DOS file out of an unknown scheme
308
UriSyntaxFlags
.ConvertPathSlashes | // V1 compat, it will always convert backslashes
309
UriSyntaxFlags
.CompressPath | // V1 compat, it will always compress path even for non hierarchical Uris
310
UriSyntaxFlags
.AllowIdn |
311
UriSyntaxFlags
.AllowIriParsing;
313
private const
UriSyntaxFlags
HttpSyntaxFlags =
314
UriSyntaxFlags
.MustHaveAuthority |
316
UriSyntaxFlags
.MayHaveUserInfo |
317
UriSyntaxFlags
.MayHavePort |
318
UriSyntaxFlags
.MayHavePath |
319
UriSyntaxFlags
.MayHaveQuery |
320
UriSyntaxFlags
.MayHaveFragment |
322
UriSyntaxFlags
.AllowUncHost | // V1 compat
323
UriSyntaxFlags
.AllowAnInternetHost |
325
UriSyntaxFlags
.PathIsRooted |
327
UriSyntaxFlags
.ConvertPathSlashes |
328
UriSyntaxFlags
.CompressPath |
329
UriSyntaxFlags
.CanonicalizeAsFilePath |
330
UriSyntaxFlags
.AllowIdn |
331
UriSyntaxFlags
.AllowIriParsing;
333
private const
UriSyntaxFlags
FtpSyntaxFlags =
334
UriSyntaxFlags
.MustHaveAuthority |
336
UriSyntaxFlags
.MayHaveUserInfo |
337
UriSyntaxFlags
.MayHavePort |
338
UriSyntaxFlags
.MayHavePath |
339
UriSyntaxFlags
.MayHaveFragment |
341
UriSyntaxFlags
.AllowUncHost | // V1 compat
342
UriSyntaxFlags
.AllowAnInternetHost |
344
UriSyntaxFlags
.PathIsRooted |
346
UriSyntaxFlags
.ConvertPathSlashes |
347
UriSyntaxFlags
.CompressPath |
348
UriSyntaxFlags
.CanonicalizeAsFilePath |
349
UriSyntaxFlags
.AllowIdn |
350
UriSyntaxFlags
.AllowIriParsing;
352
private const
UriSyntaxFlags
FileSyntaxFlags =
353
UriSyntaxFlags
.MustHaveAuthority |
355
UriSyntaxFlags
.AllowEmptyHost |
356
UriSyntaxFlags
.AllowUncHost |
357
UriSyntaxFlags
.AllowAnInternetHost |
359
UriSyntaxFlags
.MayHavePath |
360
UriSyntaxFlags
.MayHaveFragment |
361
UriSyntaxFlags
.MayHaveQuery |
363
UriSyntaxFlags
.FileLikeUri |
365
UriSyntaxFlags
.PathIsRooted |
366
UriSyntaxFlags
.AllowDOSPath |
368
UriSyntaxFlags
.ConvertPathSlashes |
369
UriSyntaxFlags
.CompressPath |
370
UriSyntaxFlags
.CanonicalizeAsFilePath |
371
UriSyntaxFlags
.UnEscapeDotsAndSlashes |
372
UriSyntaxFlags
.AllowIdn |
373
UriSyntaxFlags
.AllowIriParsing;
375
private const
UriSyntaxFlags
UnixFileSyntaxFlags =
376
FileSyntaxFlags & ~
UriSyntaxFlags
.ConvertPathSlashes;
378
private const
UriSyntaxFlags
VsmacrosSyntaxFlags =
379
UriSyntaxFlags
.MustHaveAuthority |
381
UriSyntaxFlags
.AllowEmptyHost |
382
UriSyntaxFlags
.AllowUncHost |
383
UriSyntaxFlags
.AllowAnInternetHost |
385
UriSyntaxFlags
.MayHavePath |
386
UriSyntaxFlags
.MayHaveFragment |
388
UriSyntaxFlags
.FileLikeUri |
390
UriSyntaxFlags
.AllowDOSPath |
391
UriSyntaxFlags
.ConvertPathSlashes |
392
UriSyntaxFlags
.CompressPath |
393
UriSyntaxFlags
.CanonicalizeAsFilePath |
394
UriSyntaxFlags
.UnEscapeDotsAndSlashes |
395
UriSyntaxFlags
.AllowIdn |
396
UriSyntaxFlags
.AllowIriParsing;
398
private const
UriSyntaxFlags
GopherSyntaxFlags =
399
UriSyntaxFlags
.MustHaveAuthority |
401
UriSyntaxFlags
.MayHaveUserInfo |
402
UriSyntaxFlags
.MayHavePort |
403
UriSyntaxFlags
.MayHavePath |
404
UriSyntaxFlags
.MayHaveFragment |
406
UriSyntaxFlags
.AllowUncHost | // V1 compat
407
UriSyntaxFlags
.AllowAnInternetHost |
409
UriSyntaxFlags
.PathIsRooted |
410
UriSyntaxFlags
.AllowIdn |
411
UriSyntaxFlags
.AllowIriParsing;
414
private const
UriSyntaxFlags
NewsSyntaxFlags =
415
UriSyntaxFlags
.MayHavePath |
416
UriSyntaxFlags
.MayHaveFragment |
417
UriSyntaxFlags
.AllowIriParsing;
419
private const
UriSyntaxFlags
NntpSyntaxFlags =
420
UriSyntaxFlags
.MustHaveAuthority |
422
UriSyntaxFlags
.MayHaveUserInfo |
423
UriSyntaxFlags
.MayHavePort |
424
UriSyntaxFlags
.MayHavePath |
425
UriSyntaxFlags
.MayHaveFragment |
427
UriSyntaxFlags
.AllowUncHost | // V1 compat
428
UriSyntaxFlags
.AllowAnInternetHost |
430
UriSyntaxFlags
.PathIsRooted |
431
UriSyntaxFlags
.AllowIdn |
432
UriSyntaxFlags
.AllowIriParsing;
435
private const
UriSyntaxFlags
TelnetSyntaxFlags =
436
UriSyntaxFlags
.MustHaveAuthority |
438
UriSyntaxFlags
.MayHaveUserInfo |
439
UriSyntaxFlags
.MayHavePort |
440
UriSyntaxFlags
.MayHavePath |
441
UriSyntaxFlags
.MayHaveFragment |
443
UriSyntaxFlags
.AllowUncHost | // V1 compat
444
UriSyntaxFlags
.AllowAnInternetHost |
446
UriSyntaxFlags
.PathIsRooted |
447
UriSyntaxFlags
.AllowIdn |
448
UriSyntaxFlags
.AllowIriParsing;
451
private const
UriSyntaxFlags
LdapSyntaxFlags =
452
UriSyntaxFlags
.MustHaveAuthority |
454
UriSyntaxFlags
.AllowEmptyHost |
455
UriSyntaxFlags
.AllowUncHost | // V1 compat
456
UriSyntaxFlags
.AllowAnInternetHost |
458
UriSyntaxFlags
.MayHaveUserInfo |
459
UriSyntaxFlags
.MayHavePort |
460
UriSyntaxFlags
.MayHavePath |
461
UriSyntaxFlags
.MayHaveQuery |
462
UriSyntaxFlags
.MayHaveFragment |
464
UriSyntaxFlags
.PathIsRooted |
465
UriSyntaxFlags
.AllowIdn |
466
UriSyntaxFlags
.AllowIriParsing;
469
private const
UriSyntaxFlags
MailtoSyntaxFlags =
471
UriSyntaxFlags
.AllowEmptyHost |
472
UriSyntaxFlags
.AllowUncHost | // V1 compat
473
UriSyntaxFlags
.AllowAnInternetHost |
475
UriSyntaxFlags
.MayHaveUserInfo |
476
UriSyntaxFlags
.MayHavePort |
477
UriSyntaxFlags
.MayHavePath |
478
UriSyntaxFlags
.MayHaveFragment |
479
UriSyntaxFlags
.MayHaveQuery | //to maintain compat
481
UriSyntaxFlags
.MailToLikeUri |
482
UriSyntaxFlags
.AllowIdn |
483
UriSyntaxFlags
.AllowIriParsing;
487
private const
UriSyntaxFlags
NetPipeSyntaxFlags =
488
UriSyntaxFlags
.MustHaveAuthority |
489
UriSyntaxFlags
.MayHavePath |
490
UriSyntaxFlags
.MayHaveQuery |
491
UriSyntaxFlags
.MayHaveFragment |
492
UriSyntaxFlags
.AllowAnInternetHost |
493
UriSyntaxFlags
.PathIsRooted |
494
UriSyntaxFlags
.ConvertPathSlashes |
495
UriSyntaxFlags
.CompressPath |
496
UriSyntaxFlags
.CanonicalizeAsFilePath |
497
UriSyntaxFlags
.UnEscapeDotsAndSlashes |
498
UriSyntaxFlags
.AllowIdn |
499
UriSyntaxFlags
.AllowIriParsing;
502
private const
UriSyntaxFlags
NetTcpSyntaxFlags = NetPipeSyntaxFlags |
UriSyntaxFlags
.MayHavePort;