Skip to content

Commit e5609c4

Browse files
committed
optimize demo project
1 parent e1851cb commit e5609c4

File tree

1 file changed

+70
-49
lines changed

1 file changed

+70
-49
lines changed
Lines changed: 70 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,87 @@
1-
// See https://aka.ms/new-console-template for more information
1+
using Microsoft.Extensions.Configuration;
2+
using Microsoft.Extensions.Logging;
23
using Nager.PublicSuffix;
34
using Nager.PublicSuffix.RuleProviders;
45

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();
612

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+
});
3319

34-
#region LocalFileRuleProvider
20+
var ruleProviderLogger = loggerFactory.CreateLogger<CachedHttpRuleProvider>();
3521

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();
3728

38-
#endregion
29+
using var httpClient = new HttpClient();
30+
var cacheProvider = new Nager.PublicSuffix.RuleProviders.CacheProviders.LocalFileSystemCacheProvider();
3931

40-
await ruleProvider.BuildAsync(ignoreCache: true);
32+
var ruleProvider = new CachedHttpRuleProvider(ruleProviderLogger, configuration, cacheProvider, httpClient);
4133

42-
var domainParser = new DomainParser(ruleProvider);
43-
var domainInfo = domainParser.Parse("www.google.com");
34+
await CheckAsync(ruleProvider);
35+
}
4436

45-
if (domainInfo != null)
37+
async Task DemoSimpleHttpRuleProviderAsync()
4638
{
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();
5440

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+
}
5743

58-
foreach (var validDomain in validDomains)
44+
async Task DemoLocalFileRuleProviderAsync()
5945
{
60-
Console.WriteLine($"{validDomain} -> {domainParser.IsValidDomain(validDomain)}");
46+
var ruleProvider = new LocalFileRuleProvider("public_suffix_list.dat");
47+
48+
await CheckAsync(ruleProvider);
6149
}
6250

63-
foreach (var invalidDomain in invalidDomains)
51+
async Task CheckAsync(IRuleProvider ruleProvider)
6452
{
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

Comments
 (0)