private IHostFileFactory CreateHostFileFactoryFor(IHostFile hostFile)
        {
            var factory = Substitute.For <IHostFileFactory>();

            factory.Create(Arg.Any <ITextFileReader>(), Arg.Any <ITextFileWriter>())
            .Returns(hostFile);
            return(factory);
        }
        private void Merge(string url, IHostFile hostFile)
        {
            var cachedHosts = _blocklistCacheManager.GetReaderFor(url);

            if (cachedHosts == null)
            {
                _logger.LogWarning($"Unable to retrieve cached data for {url}");
                return;
            }

            _logger.LogDebug($"Retrieved cached data for {url}");
            hostFile.Merge(cachedHosts);
        }
 private void MergeBlocklistsInto(IHostFile hostFile)
 {
     _settings.Sources.ForEach(url => Merge(url, hostFile));
 }
 private void OverrideRedirectWithUserPreferenceOn(IHostFile hostFile)
 {
     _logger.LogInfo($"Redirecting adserver hosts to {_settings.RedirectIp}");
     hostFile.SetRedirectIp(_settings.RedirectIp);
 }
 private void ApplyBlacklistOn(IHostFile hostFile)
 {
     _logger.LogInfo($"Applying {_settings.Blacklist.Count()} blacklist hosts");
     _settings.Blacklist.ForEach(b => hostFile.Redirect(b, _settings.RedirectIp));
 }
 private void ApplyWhitelistOn(IHostFile hostFile)
 {
     _logger.LogInfo($"Applying {_settings.Whitelist.Count()} whitelist hosts");
     _settings.Whitelist.ForEach(hostFile.Whitelist);
 }