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)
325
return syntax is null || syntax.InFact(
UriSyntaxFlags
.AllowIriParsing);
1003
return syntax.InFact(
UriSyntaxFlags
.FileLikeUri);
1560
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1856
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1858
if (!other._syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
2030
if (_syntax.IsAllSet(
UriSyntaxFlags
.AllowEmptyHost |
UriSyntaxFlags
.AllowDOSPath) &&
2046
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) || i - idx <= 3)
2060
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri))
2068
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2085
else if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) &&
2094
else if (!OperatingSystem.IsWindows() && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && str[i - 1] == '/' && i - idx == 3)
2113
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2126
else if (_syntax.InFact(
UriSyntaxFlags
.OptionalAuthority) && (InFact(Flags.AuthorityFound) ||
2134
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2146
else if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2152
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2193
if (hostTerminator == '\\' && NotAny(Flags.ImplicitFile) && _syntax.NotAny(
UriSyntaxFlags
.AllowDOSPath))
3214
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3215
bool iriParsing = (syntaxFlags &
UriSyntaxFlags
.AllowIriParsing) != 0;
3251
if ((cF & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0)
3278
(cF & Flags.ImplicitFile) != 0 || (syntaxFlags & (
UriSyntaxFlags
.MayHaveQuery |
UriSyntaxFlags
.MayHaveFragment)) == 0 ? c_DummyChar :
3279
((syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) != 0) ? '?' : '#';
3294
if (((cF & Flags.AuthorityFound) != 0) && ((syntaxFlags &
UriSyntaxFlags
.PathIsRooted) != 0)
3305
(((syntaxFlags & (
UriSyntaxFlags
.CompressPath |
UriSyntaxFlags
.ConvertPathSlashes)) != 0) ||
3306
(syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)))
3308
if (((result & Check.DotSlashEscaped) != 0) && (syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)
3314
if (((syntaxFlags & (
UriSyntaxFlags
.ConvertPathSlashes)) != 0) && (result & Check.BackslashInPath) != 0)
3320
if (((syntaxFlags & (
UriSyntaxFlags
.CompressPath)) != 0) && ((cF & Flags.E_PathNotCanonical) != 0 ||
3377
Check result = CheckCanonical(inputStr.AsSpan(idx, length - idx), (syntaxFlags & (
UriSyntaxFlags
.MayHaveFragment)) != 0 ? '#' : c_EOL, out int charsChecked);
3443
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3489
int pathLength = (flags & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0
3505
int fragmentOffset = (syntaxFlags &
UriSyntaxFlags
.MayHaveFragment) == 0
3693
private int CheckAuthorityHelper(ReadOnlySpan<char> str, int startOffset, out ParsingError err, ref Flags flags,
UriSyntaxFlags
syntaxFlags, ref string? newHost)
3712
if ((uint)startOffset >= (uint)str.Length || ((ch = str[startOffset]) == '/' || (ch == '\\' && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) != 0) || ch == '#' || ch == '?'))
3714
if ((syntaxFlags &
UriSyntaxFlags
.AllowEmptyHost) != 0)
3731
if ((syntaxFlags &
UriSyntaxFlags
.MayHaveUserInfo) != 0)
3766
if (ch == '[' && (syntaxFlags &
UriSyntaxFlags
.AllowIPv6Host) != 0 && IPv6AddressHelper.IsValid(str.Slice(i), out hostLength))
3787
else if (char.IsAsciiDigit(ch) && (syntaxFlags &
UriSyntaxFlags
.AllowIPv4Host) != 0 &&
3788
IPv4AddressHelper.IsValid(str.Slice(i), out hostLength, allowIPv6: false, StaticNotAny(flags, Flags.ImplicitFile), (syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0))
3797
else if ((syntaxFlags & (
UriSyntaxFlags
.AllowDnsHost |
UriSyntaxFlags
.AllowIriParsing)) ==
UriSyntaxFlags
.AllowDnsHost &&
3811
else if (((syntaxFlags &
UriSyntaxFlags
.AllowDnsHost) != 0) &&
3812
(hasUnicode || (syntaxFlags &
UriSyntaxFlags
.AllowIdn) != 0) &&
3836
else if ((syntaxFlags &
UriSyntaxFlags
.AllowUncHost) != 0)
3857
if (hostDelimiter == '\\' && (flags & Flags.HostTypeMask) != Flags.HostNotParsed && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) == 0)
3859
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3872
if ((syntaxFlags &
UriSyntaxFlags
.MayHavePort) != 0)
3892
if ((syntaxFlags & (
UriSyntaxFlags
.AllowAnyOtherHost |
UriSyntaxFlags
.V1_UnknownUri)) ==
UriSyntaxFlags
.AllowAnyOtherHost)
3908
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3937
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3964
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
4004
else if ((syntaxFlags & (
UriSyntaxFlags
.MustHaveAuthority |
UriSyntaxFlags
.MailToLikeUri)) != 0)
4099
else if (delim == '?' && c == '#' && (_syntax != null && _syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4106
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) && delim != c_EOL))
4119
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4228
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4231
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4260
if (!OperatingSystem.IsWindows() && InFact(Flags.BackslashInPath) && _syntax.NotAny(
UriSyntaxFlags
.ConvertPathSlashes) && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && !IsImplicitFile)
4283
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4286
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4413
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4414
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4421
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4422
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4509
bool convBackSlashes = basePart.Syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes);
4563
c1 = basePart.Syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) ? '?' : c_DummyChar;
4566
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)
746
if (relativeStr[0] == '#' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveFragment))
754
if (relativeStr[0] == '?' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveQuery))
773
else if (baseUri.Syntax!.InFact(
UriSyntaxFlags
.AllowDOSPath))
778
prefix = baseUri.Syntax.InFact(
UriSyntaxFlags
.PathIsRooted) ? ":///" : "://";
780
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;