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
3673
private int CheckAuthorityHelper(ReadOnlySpan<char> str, int startOffset, out ParsingError err, ref Flags flags,
UriSyntaxFlags
syntaxFlags, ref string? newHost)
3692
if ((uint)startOffset >= (uint)str.Length || ((ch = str[startOffset]) == '/' || (ch == '\\' && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) != 0) || ch == '#' || ch == '?'))
3694
if ((syntaxFlags &
UriSyntaxFlags
.AllowEmptyHost) != 0)
3711
if ((syntaxFlags &
UriSyntaxFlags
.MayHaveUserInfo) != 0)
3737
if (ch == '[' && (syntaxFlags &
UriSyntaxFlags
.AllowIPv6Host) != 0 && IPv6AddressHelper.IsValid(str.Slice(i), out hostLength))
3758
else if (char.IsAsciiDigit(ch) && (syntaxFlags &
UriSyntaxFlags
.AllowIPv4Host) != 0 &&
3759
IPv4AddressHelper.IsValid(str.Slice(i), out hostLength, allowIPv6: false, StaticNotAny(flags, Flags.ImplicitFile), (syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0))
3768
else if ((syntaxFlags & (
UriSyntaxFlags
.AllowDnsHost |
UriSyntaxFlags
.AllowIriParsing)) ==
UriSyntaxFlags
.AllowDnsHost &&
3782
else if (((syntaxFlags &
UriSyntaxFlags
.AllowDnsHost) != 0) &&
3783
(hasUnicode || (syntaxFlags &
UriSyntaxFlags
.AllowIdn) != 0) &&
3807
else if ((syntaxFlags &
UriSyntaxFlags
.AllowUncHost) != 0)
3828
if (hostDelimiter == '\\' && (flags & Flags.HostTypeMask) != Flags.HostNotParsed && (syntaxFlags &
UriSyntaxFlags
.FileLikeUri) == 0)
3830
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3843
if ((syntaxFlags &
UriSyntaxFlags
.MayHavePort) != 0)
3863
if ((syntaxFlags & (
UriSyntaxFlags
.AllowAnyOtherHost |
UriSyntaxFlags
.V1_UnknownUri)) ==
UriSyntaxFlags
.AllowAnyOtherHost)
3879
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3908
if ((syntaxFlags &
UriSyntaxFlags
.AllowAnyOtherHost) != 0)
3930
if ((syntaxFlags &
UriSyntaxFlags
.V1_UnknownUri) != 0)
3970
else if ((syntaxFlags & (
UriSyntaxFlags
.MustHaveAuthority |
UriSyntaxFlags
.MailToLikeUri)) != 0)
4065
else if (delim == '?' && c == '#' && (_syntax != null && _syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4072
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) && delim != c_EOL))
4085
if (IsImplicitFile || (_syntax != null && !_syntax.InFact(
UriSyntaxFlags
.MayHaveFragment)))
4194
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4197
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4226
if (!OperatingSystem.IsWindows() && InFact(Flags.BackslashInPath) && _syntax.NotAny(
UriSyntaxFlags
.ConvertPathSlashes) && _syntax.InFact(
UriSyntaxFlags
.FileLikeUri) && !IsImplicitFile)
4249
if (_syntax.InFact(
UriSyntaxFlags
.UnEscapeDotsAndSlashes) && InFact(Flags.PathNotCanonical)
4252
UnescapePathSlashesAndDots(ref dest, start, _syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes));
4379
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4380
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4387
syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes),
4388
syntax.InFact(
UriSyntaxFlags
.CanonicalizeAsFilePath));
4475
bool convBackSlashes = basePart.Syntax.InFact(
UriSyntaxFlags
.ConvertPathSlashes);
4529
c1 = basePart.Syntax.InFact(
UriSyntaxFlags
.MayHaveQuery) ? '?' : c_DummyChar;
4532
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)
691
if (relativeStr[0] == '#' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveFragment))
699
if (relativeStr[0] == '?' && !baseUri.IsImplicitFile && baseUri.Syntax!.InFact(
UriSyntaxFlags
.MayHaveQuery))
718
else if (baseUri.Syntax!.InFact(
UriSyntaxFlags
.AllowDOSPath))
723
prefix = baseUri.Syntax.InFact(
UriSyntaxFlags
.PathIsRooted) ? ":///" : "://";
725
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;