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)
327
return syntax is null || syntax.InFact(
UriSyntaxFlags
.AllowIriParsing);
984
return syntax.InFact(
UriSyntaxFlags
.FileLikeUri);
1541
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1837
if (_syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
1839
if (!other._syntax.InFact(
UriSyntaxFlags
.MailToLikeUri))
2011
if (_syntax.IsAllSet(
UriSyntaxFlags
.AllowEmptyHost |
UriSyntaxFlags
.AllowDOSPath) &&
2027
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) || i - idx <= 3)
2041
if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri))
2049
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2066
else if (_syntax.InFact(
UriSyntaxFlags
.FileLikeUri) &&
2075
else if (!OperatingSystem.IsWindows() && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && str[i - 1] == '/' && i - idx == 3)
2094
if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2107
else if (_syntax.InFact(
UriSyntaxFlags
.OptionalAuthority) && (InFact(Flags.AuthorityFound) ||
2115
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2127
else if (_syntax.InFact(
UriSyntaxFlags
.MustHaveAuthority))
2133
else if (_syntax.NotAny(
UriSyntaxFlags
.MailToLikeUri))
2174
if (hostTerminator == '\\' && NotAny(Flags.ImplicitFile) && _syntax.NotAny(
UriSyntaxFlags
.AllowDOSPath))
3195
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3196
bool iriParsing = (syntaxFlags &
UriSyntaxFlags
.AllowIriParsing) != 0;
3232
if ((cF & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0)
3259
(cF & Flags.ImplicitFile) != 0 || (syntaxFlags & (
UriSyntaxFlags
.MayHaveQuery |
UriSyntaxFlags
.MayHaveFragment)) == 0 ? c_DummyChar :
3260
((syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) != 0) ? '?' : '#';
3275
if (((cF & Flags.AuthorityFound) != 0) && ((syntaxFlags &
UriSyntaxFlags
.PathIsRooted) != 0)
3286
(((syntaxFlags & (
UriSyntaxFlags
.CompressPath |
UriSyntaxFlags
.ConvertPathSlashes)) != 0) ||
3287
(syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)))
3289
if (((result & Check.DotSlashEscaped) != 0) && (syntaxFlags &
UriSyntaxFlags
.UnEscapeDotsAndSlashes) != 0)
3295
if (((syntaxFlags & (
UriSyntaxFlags
.ConvertPathSlashes)) != 0) && (result & Check.BackslashInPath) != 0)
3301
if (((syntaxFlags & (
UriSyntaxFlags
.CompressPath)) != 0) && ((cF & Flags.E_PathNotCanonical) != 0 ||
3358
Check result = CheckCanonical(inputStr.AsSpan(idx, length - idx), (syntaxFlags & (
UriSyntaxFlags
.MayHaveFragment)) != 0 ? '#' : c_EOL, out int charsChecked);
3424
UriSyntaxFlags
syntaxFlags = _syntax.Flags;
3470
int pathLength = (flags & Flags.ImplicitFile) != 0 || (syntaxFlags &
UriSyntaxFlags
.MayHaveQuery) == 0
3486
int fragmentOffset = (syntaxFlags &
UriSyntaxFlags
.MayHaveFragment) == 0
3682
private int CheckAuthorityHelper(ReadOnlySpan<char> str, int startOffset, out ParsingError err, ref Flags flags,
UriSyntaxFlags
syntaxFlags, ref string? newHost)
3701
if ((uint)startOffset >= (uint)str.Length || ((ch = str[startOffset]) == '/' || (ch == '\\' && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) != 0) || ch == '#' || ch == '?'))
3703
if ((syntaxFlags &
UriSyntaxFlags
.AllowEmptyHost) != 0)
3720
if ((syntaxFlags &
UriSyntaxFlags
.MayHaveUserInfo) != 0)
3743
if (ch == '[' && (syntaxFlags &
UriSyntaxFlags
.AllowIPv6Host) != 0 && IPv6AddressHelper.IsValid(str.Slice(i), out hostLength))
3764
else if (char.IsAsciiDigit(ch) && (syntaxFlags &
UriSyntaxFlags
.AllowIPv4Host) != 0 &&
3765
IPv4AddressHelper.IsValid(str.Slice(i), out hostLength, allowIPv6: false, StaticNotAny(flags, Flags.ImplicitFile), (syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0))
3774
else if ((syntaxFlags & (
UriSyntaxFlags
.AllowDnsHost |
UriSyntaxFlags
.AllowIriParsing)) ==
UriSyntaxFlags
.AllowDnsHost &&
3788
else if (((syntaxFlags &
UriSyntaxFlags
.AllowDnsHost) != 0) &&
3789
(hasUnicode || (syntaxFlags &
UriSyntaxFlags
.AllowIdn) != 0) &&
3813
else if ((syntaxFlags &
UriSyntaxFlags
.AllowUncHost) != 0)
3834
if (hostDelimiter == '\\' && (flags & Flags.HostTypeMask) != Flags.HostNotParsed && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) == 0)
3836
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3849
if ((syntaxFlags &
UriSyntaxFlags
.MayHavePort) != 0)
3869
if ((syntaxFlags & (
UriSyntaxFlags
.AllowAnyOtherHost |
UriSyntaxFlags
.V1_UnknownUri)) ==
UriSyntaxFlags
.AllowAnyOtherHost)
3885
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3914
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3936
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3976
else if ((syntaxFlags & (
UriSyntaxFlags
.MustHaveAuthority |
UriSyntaxFlags
.MailToLikeUri)) != 0)
4071
else if (delim == '?' && c == '#' && (_syntax != null && _syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4078
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) && delim != c_EOL))
4091
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4200
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4203
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4232
if (!OperatingSystem.IsWindows() && InFact(Flags.BackslashInPath) && _syntax.NotAny(
UriSyntaxFlags
.ConvertPathSlashes) && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && !IsImplicitFile)
4255
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4258
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4385
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4386
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4393
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4394
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4481
bool convBackSlashes = basePart.Syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes);
4535
c1 = basePart.Syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) ? '?' : c_DummyChar;
4538
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)
695
if (relativeStr[0] == '#' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveFragment))
703
if (relativeStr[0] == '?' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveQuery))
722
else if (baseUri.Syntax!.InFact(
UriSyntaxFlags
.AllowDOSPath))
727
prefix = baseUri.Syntax.InFact(
UriSyntaxFlags
.PathIsRooted) ? ":///" : "://";
729
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;