1
- // See https://aka.ms/new-console-template for more information
1
+ using Microsoft . Extensions . Configuration ;
2
+ using Microsoft . Extensions . Logging ;
2
3
using Nager . PublicSuffix ;
3
4
using Nager . PublicSuffix . RuleProviders ;
4
5
5
- #region CachedHttpRuleProvider
6
+ Console . WriteLine ( "Run - DemoCachedHttpRuleProviderAsync" ) ;
7
+ await DemoCachedHttpRuleProviderAsync ( ) ;
8
+ Console . WriteLine ( "Run - DemoSimpleHttpRuleProviderAsync" ) ;
9
+ await DemoSimpleHttpRuleProviderAsync ( ) ;
10
+ Console . WriteLine ( "Run - DemoLocalFileRuleProviderAsync" ) ;
11
+ await DemoLocalFileRuleProviderAsync ( ) ;
6
12
7
- //using var loggerFactory = LoggerFactory.Create(builder =>
8
- //{
9
- // builder.AddConsole();
10
- //});
11
-
12
- //var ruleProviderLogger = loggerFactory.CreateLogger<CachedHttpRuleProvider>();
13
-
14
- //IConfiguration configuration = new ConfigurationBuilder()
15
- // .AddInMemoryCollection(new List<KeyValuePair<string, string?>>
16
- // {
17
- // new("Nager:PublicSuffix:DataUrl", "https://publicsuffix.org/list/public_suffix_list1.dat")
18
- // })
19
- // .Build();
20
-
21
- //var httpClient = new HttpClient();
22
- //var cacheProvider = new Nager.PublicSuffix.RuleProviders.CacheProviders.LocalFileSystemCacheProvider();
23
-
24
- //var ruleProvider = new CachedHttpRuleProvider(ruleProviderLogger, configuration, cacheProvider, httpClient);
25
-
26
- #endregion
27
-
28
- #region SimpleHttpRuleProvider
29
-
30
- var ruleProvider = new SimpleHttpRuleProvider ( ) ;
31
-
32
- #endregion
13
+ async Task DemoCachedHttpRuleProviderAsync ( )
14
+ {
15
+ using var loggerFactory = LoggerFactory . Create ( builder =>
16
+ {
17
+ builder . AddConsole ( ) ;
18
+ } ) ;
33
19
34
- #region LocalFileRuleProvider
20
+ var ruleProviderLogger = loggerFactory . CreateLogger < CachedHttpRuleProvider > ( ) ;
35
21
36
- //var ruleProvider = new LocalFileRuleProvider("public_suffix_list.dat");
22
+ IConfiguration configuration = new ConfigurationBuilder ( )
23
+ . AddInMemoryCollection ( new List < KeyValuePair < string , string ? > >
24
+ {
25
+ new ( "Nager:PublicSuffix:DataUrl" , "https://publicsuffix.org/list/public_suffix_list.dat" )
26
+ } )
27
+ . Build ( ) ;
37
28
38
- #endregion
29
+ using var httpClient = new HttpClient ( ) ;
30
+ var cacheProvider = new Nager . PublicSuffix . RuleProviders . CacheProviders . LocalFileSystemCacheProvider ( ) ;
39
31
40
- await ruleProvider . BuildAsync ( ignoreCache : true ) ;
32
+ var ruleProvider = new CachedHttpRuleProvider ( ruleProviderLogger , configuration , cacheProvider , httpClient ) ;
41
33
42
- var domainParser = new DomainParser ( ruleProvider ) ;
43
- var domainInfo = domainParser . Parse ( "www.google.com" ) ;
34
+ await CheckAsync ( ruleProvider ) ;
35
+ }
44
36
45
- if ( domainInfo != null )
37
+ async Task DemoSimpleHttpRuleProviderAsync ( )
46
38
{
47
- Console . WriteLine ( "------------------------------------------------" ) ;
48
- Console . WriteLine ( $ "{ "TLD:" , 20 } { domainInfo . TopLevelDomain } ") ;
49
- Console . WriteLine ( $ "{ "FQDN:" , 20 } { domainInfo . FullyQualifiedDomainName } ") ;
50
- Console . WriteLine ( $ "{ "RegistrableDomain:" , 20 } { domainInfo . RegistrableDomain } ") ;
51
- Console . WriteLine ( $ "{ "Subdomain:" , 20 } { domainInfo . Subdomain } ") ;
52
- Console . WriteLine ( "------------------------------------------------" ) ;
53
- }
39
+ using var ruleProvider = new SimpleHttpRuleProvider ( ) ;
54
40
55
- var validDomains = new [ ] { "www.google.com" , "amazon.com" , "microsoft.de" , "mail.google.com" , "microsoft.de." } ;
56
- var invalidDomains = new [ ] { "www" , "uk" , "co.uk" , "." , "test@test.com" } ;
41
+ await CheckAsync ( ruleProvider ) ;
42
+ }
57
43
58
- foreach ( var validDomain in validDomains )
44
+ async Task DemoLocalFileRuleProviderAsync ( )
59
45
{
60
- Console . WriteLine ( $ "{ validDomain } -> { domainParser . IsValidDomain ( validDomain ) } ") ;
46
+ var ruleProvider = new LocalFileRuleProvider ( "public_suffix_list.dat" ) ;
47
+
48
+ await CheckAsync ( ruleProvider ) ;
61
49
}
62
50
63
- foreach ( var invalidDomain in invalidDomains )
51
+ async Task CheckAsync ( IRuleProvider ruleProvider )
64
52
{
65
- Console . WriteLine ( $ "{ invalidDomain } -> { domainParser . IsValidDomain ( invalidDomain ) } ") ;
66
- }
53
+ if ( ! await ruleProvider . BuildAsync ( ignoreCache : true ) )
54
+ {
55
+ Console . BackgroundColor = ConsoleColor . Red ;
56
+ Console . ForegroundColor = ConsoleColor . White ;
57
+ Console . WriteLine ( "Build error" ) ;
58
+ Console . ResetColor ( ) ;
59
+ return ;
60
+ }
61
+
62
+ var domainParser = new DomainParser ( ruleProvider ) ;
63
+ var domainInfo = domainParser . Parse ( "www.google.com" ) ;
64
+
65
+ if ( domainInfo != null )
66
+ {
67
+ Console . WriteLine ( "------------------------------------------------" ) ;
68
+ Console . WriteLine ( $ "{ "TLD:" , 20 } { domainInfo . TopLevelDomain } ") ;
69
+ Console . WriteLine ( $ "{ "FQDN:" , 20 } { domainInfo . FullyQualifiedDomainName } ") ;
70
+ Console . WriteLine ( $ "{ "RegistrableDomain:" , 20 } { domainInfo . RegistrableDomain } ") ;
71
+ Console . WriteLine ( $ "{ "Subdomain:" , 20 } { domainInfo . Subdomain } ") ;
72
+ Console . WriteLine ( "------------------------------------------------" ) ;
73
+ }
74
+
75
+ var validDomains = new [ ] { "www.google.com" , "amazon.com" , "microsoft.de" , "mail.google.com" , "microsoft.de." } ;
76
+ var invalidDomains = new [ ] { "www" , "uk" , "co.uk" , "." , "test@test.com" } ;
77
+
78
+ foreach ( var validDomain in validDomains )
79
+ {
80
+ Console . WriteLine ( $ "{ validDomain } -> { domainParser . IsValidDomain ( validDomain ) } ") ;
81
+ }
82
+
83
+ foreach ( var invalidDomain in invalidDomains )
84
+ {
85
+ Console . WriteLine ( $ "{ invalidDomain } -> { domainParser . IsValidDomain ( invalidDomain ) } ") ;
86
+ }
87
+ }
0 commit comments