Esempio n. 1
0
        public async Task Execute(string site, OutputSettings output)
        {
            // var output = appConfig.GetSection("output").Get<OutputSettings>();
            Directory.CreateDirectory(output.ReportDirectory);

            var logger = Logs.Factory.CreateLogger <CheckLinkJob>();

            logger.LogInformation($"Saving report to {output.ReportFilePath}");

            var links = await LinkChecker.GetLinks(site);

            var checkedLinks = await LinkChecker.Check(links);

            using (var file = File.CreateText(output.ReportFilePath))
                using (var linksDb = new LinksDb())
                {
                    foreach (var link in checkedLinks.OrderBy(l => l.Exists))
                    {
                        var status = link.IsMissing ? "Missing" : "Ok";
                        await file.WriteLineAsync($"{status} - {link.Link}");

                        await linksDb.AddAsync(link);
                    }
                    await linksDb.SaveChangesAsync();
                }
        }
 public CheckLinkJob(ILogger <CheckLinkJob> logger,
                     IOptions <OutputSettings> outputOptions,
                     IOptions <SiteSettings> siteOptions,
                     LinkChecker linkChecker)
 {
     _Logger = logger;
     _Logger.LogInformation($"{Guid.NewGuid()}");
     _Output      = outputOptions.Value;
     _Site        = siteOptions.Value;
     _LinkChecker = linkChecker;
 }
Esempio n. 3
0
 public CheckLinksJob(
     ILogger <CheckLinksJob> logger,
     IOptions <OutputSettings> output,
     IOptions <SiteSettings> siteSettings,
     LinkChecker linkChecker)
 {
     _logger       = logger;
     _output       = output.Value;
     _siteSettings = siteSettings.Value;
     _linkChecker  = linkChecker;
 }
Esempio n. 4
0
        static void Main(string[] args)
        {
            var site = "https://g0t4.github.io/pluralsight-dotnet-core-xplat-apps";

            var client = new HttpClient();
            var body   = client.GetStringAsync(site);

            Console.WriteLine(body.Result);
            var links = LinkChecker.GetLinks(body.Result);

            links.ToList().ForEach(Console.WriteLine);
        }
Esempio n. 5
0
        public static void Main(string[] args)
        {
            var site = "https://lketema.github.io/";
            // site = "https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/";
            var client = new HttpClient();
            // the below dumps content of site
            var bodyReturned = client.GetStringAsync(site);

            var links = LinkChecker.GetLinks(bodyReturned.Result);

            var result = LinkChecker.CheckLinks(links);

            LogToFile(result);
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            var site   = "https://www.google.com";
            var client = new HttpClient();
            var body   = client.GetStringAsync(site);

            Console.WriteLine(body.Result);

            Console.WriteLine();

            Console.WriteLine("Links");
            var links = LinkChecker.GetLinks(body.Result);

            links.ToList().ForEach(Console.WriteLine);
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            var config = new Config(args);

            Logs.Init(config.ConfigurationRoot);
            var logger = Logs.Factory.CreateLogger <Program>();

            Directory.CreateDirectory(config.Output.GetReportDirectory());
            logger.LogInformation(200, $"Saving report to {config.Output.GetReportDirectory()}");
            var client = new HttpClient();
            var body   = client.GetStringAsync(config.Site);

            logger.LogDebug(body.Result);

            logger.LogInformation("Links");
            var links = LinkChecker.GetLinks(config.Site, body.Result);

            links.ToList().ForEach(Console.WriteLine);
            var checkedLinks = LinkChecker.CheckLinks(links);

            using (var file = File.CreateText(config.Output.GetReportFilePath()))
                using (var linksDb = new LinksDb())
                {
                    foreach (var link in checkedLinks.OrderBy(l => l.Exists))
                    {
                        var status = link.IsMissing ? "Missing" : "OK";
                        file.WriteLine($"{status} - {link.Link}");
                        linksDb.Links.Add(link);
                        Console.WriteLine("{0} {1}", link.Id, link.Link);
                    }

                    /**
                     * docker run -d --name sqllinux-netcore -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=1Secure*Password1' -e 'MSSQL_PID=Enterprise' -p 1433:1433 -d microsoft/mssql-server-linux:2017-latest
                     * docker hub: https://hub.docker.com/r/microsoft/mssql-server-linux
                     * docker run -d --name mysql-netcore -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=Links -p 3306:3306 mysql
                     */
                    linksDb.SaveChanges();
                }
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            // it is a convention to pass the applications fully qualified class name
            // as an overload into the logger to aid in more descriptive logging since it includes
            // the namespace and everything
            var config = new Config(args);

            Logs.Init(config.ConfigurationRoot);
            var logger = Logs.Factory.CreateLogger <Program>();

            Directory.CreateDirectory(config.Output.GetReportDirectory()); // could also do configuration.GetSection("output").Get<OutputSettings>(); and this would also skipping creating the new outputsettings object

            logger.LogInformation($"Saving file to {config.Output.GetReportFilePath()}");
            var client = new HttpClient();
            var body   = client.GetStringAsync(config.Site);

            logger.LogDebug(body.Result);

            var links = LinkChecker.GetLinks(config.Site, body.Result);
            // write out links
            // File.WriteAllLines(outputPath, links);
            var checkedLinks = LinkChecker.CheckLinks(links);

            using (var file = File.CreateText(config.Output.GetReportFilePath()))
                using (var linksDb = new LinksDb())
                // using is like a try block, allows the system to drop the connection if something does wrong
                {
                    foreach (var link in checkedLinks.OrderBy(l => l.IsMissing))
                    {
                        var status = link.IsMissing ? "missing" : "ok";
                        file.WriteLine($"{status} - {link.Link}");
                        linksDb.Links.Add(link);
                    }
                    linksDb.SaveChanges();
                }
        }