mscorlib(4.0.0.0) API with additions
GenericUriParser.cs
1 namespace System
2 {
4  public class GenericUriParser : UriParser
5  {
6  private const UriSyntaxFlags DefaultGenericUriParserFlags = UriSyntaxFlags.MustHaveAuthority | UriSyntaxFlags.MayHaveUserInfo | UriSyntaxFlags.MayHavePort | UriSyntaxFlags.MayHavePath | UriSyntaxFlags.MayHaveQuery | UriSyntaxFlags.MayHaveFragment | UriSyntaxFlags.AllowUncHost | UriSyntaxFlags.AllowDnsHost | UriSyntaxFlags.AllowIPv4Host | UriSyntaxFlags.AllowIPv6Host | UriSyntaxFlags.PathIsRooted | UriSyntaxFlags.ConvertPathSlashes | UriSyntaxFlags.CompressPath | UriSyntaxFlags.CanonicalizeAsFilePath | UriSyntaxFlags.UnEscapeDotsAndSlashes;
7 
11  : base(MapGenericParserOptions(options))
12  {
13  }
14 
15  private static UriSyntaxFlags MapGenericParserOptions(GenericUriParserOptions options)
16  {
17  UriSyntaxFlags uriSyntaxFlags = UriSyntaxFlags.MustHaveAuthority | UriSyntaxFlags.MayHaveUserInfo | UriSyntaxFlags.MayHavePort | UriSyntaxFlags.MayHavePath | UriSyntaxFlags.MayHaveQuery | UriSyntaxFlags.MayHaveFragment | UriSyntaxFlags.AllowUncHost | UriSyntaxFlags.AllowDnsHost | UriSyntaxFlags.AllowIPv4Host | UriSyntaxFlags.AllowIPv6Host | UriSyntaxFlags.PathIsRooted | UriSyntaxFlags.ConvertPathSlashes | UriSyntaxFlags.CompressPath | UriSyntaxFlags.CanonicalizeAsFilePath | UriSyntaxFlags.UnEscapeDotsAndSlashes;
18  if ((options & GenericUriParserOptions.GenericAuthority) != 0)
19  {
20  uriSyntaxFlags &= ~(UriSyntaxFlags.MayHaveUserInfo | UriSyntaxFlags.MayHavePort | UriSyntaxFlags.AllowUncHost | UriSyntaxFlags.AllowDnsHost | UriSyntaxFlags.AllowIPv4Host | UriSyntaxFlags.AllowIPv6Host);
21  uriSyntaxFlags |= UriSyntaxFlags.AllowAnyOtherHost;
22  }
23  if ((options & GenericUriParserOptions.AllowEmptyAuthority) != 0)
24  {
25  uriSyntaxFlags |= UriSyntaxFlags.AllowEmptyHost;
26  }
27  if ((options & GenericUriParserOptions.NoUserInfo) != 0)
28  {
29  uriSyntaxFlags &= ~UriSyntaxFlags.MayHaveUserInfo;
30  }
31  if ((options & GenericUriParserOptions.NoPort) != 0)
32  {
33  uriSyntaxFlags &= ~UriSyntaxFlags.MayHavePort;
34  }
35  if ((options & GenericUriParserOptions.NoQuery) != 0)
36  {
37  uriSyntaxFlags &= ~UriSyntaxFlags.MayHaveQuery;
38  }
39  if ((options & GenericUriParserOptions.NoFragment) != 0)
40  {
41  uriSyntaxFlags &= ~UriSyntaxFlags.MayHaveFragment;
42  }
43  if ((options & GenericUriParserOptions.DontConvertPathBackslashes) != 0)
44  {
45  uriSyntaxFlags &= ~UriSyntaxFlags.ConvertPathSlashes;
46  }
47  if ((options & GenericUriParserOptions.DontCompressPath) != 0)
48  {
49  uriSyntaxFlags &= ~(UriSyntaxFlags.CompressPath | UriSyntaxFlags.CanonicalizeAsFilePath);
50  }
51  if ((options & GenericUriParserOptions.DontUnescapePathDotsAndSlashes) != 0)
52  {
53  uriSyntaxFlags &= ~UriSyntaxFlags.UnEscapeDotsAndSlashes;
54  }
55  if ((options & GenericUriParserOptions.Idn) != 0)
56  {
57  uriSyntaxFlags |= UriSyntaxFlags.AllowIdn;
58  }
59  if ((options & GenericUriParserOptions.IriParsing) != 0)
60  {
61  uriSyntaxFlags |= UriSyntaxFlags.AllowIriParsing;
62  }
63  return uriSyntaxFlags;
64  }
65  }
66 }
Definition: __Canon.cs:3
GenericUriParserOptions
Specifies options for a T:System.UriParser.
A customizable parser for a hierarchical URI.
GenericUriParser(GenericUriParserOptions options)
Create a customizable parser for a hierarchical URI.
Parses a new URI scheme. This is an abstract class.
Definition: UriParser.cs:9