internal WebIOController(WebIOConfig configuration) { WebConfig = configuration; Enabled = WebConfig.Enabled; MaxConcurrency = WebConfig.MaximumRequestConcurrency; if (!Enabled) { return; } var clientHandler = new HttpClientHandler() { AllowAutoRedirect = false, UseCookies = false, AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip }; if (WebConfig.Proxy != null) { clientHandler.Proxy = WebConfig.Proxy; clientHandler.UseProxy = true; } HttpClient = new HttpClient(clientHandler); HttpClient.DefaultRequestHeaders.Add( "User-Agent", "MihaZupan.MarkdownValidator-" + Config.Version.ToString()); HttpClient.DefaultRequestHeaders.Add( "Accept", "*/*"); HttpClient.DefaultRequestHeaders.Add( "Accept-Encoding", "gzip, deflate"); HttpClient.DefaultRequestHeaders.Add( "Accept-Language", "en-GB,en;q=0.9"); HttpClient.Timeout = TimeSpan.FromMilliseconds(WebConfig.RequestTimeout); DnsUnresolvableHostNames = new HashSet <string>(StringComparer.OrdinalIgnoreCase); KnownGoodHostNames = new HashSet <string>(StringComparer.OrdinalIgnoreCase); PendingRequestsByHostname = new Dictionary <string, HostnameRequests>(StringComparer.OrdinalIgnoreCase); PendingRequests = new Dictionary <string, PendingRequest>(StringComparer.OrdinalIgnoreCase); RequestsInProgress = new Dictionary <string, PendingRequest>(StringComparer.OrdinalIgnoreCase); CachedSites = new Dictionary <string, SiteInfo>(StringComparer.OrdinalIgnoreCase); DownloadableContentByHostname = new Dictionary <string, List <(string ContentType, bool IsText, Func <CleanUrl, bool> UrlSelector)> >(StringComparer.OrdinalIgnoreCase); UrlRewriters = new Dictionary <string, Func <Uri, Uri> >(StringComparer.OrdinalIgnoreCase); SchedulerMRE = new ManualResetEvent(false); Task.Run(() => SchedulerWorkInternal()); }
internal ParserRegistrationContext(ParsingController parsingController, Config configuration) { ParsingController = parsingController; Configuration = configuration; WebIOConfig = Configuration.WebIO; }