using AS1024.CommunityDocumentationPage.Models; using Microsoft.AspNetCore.Mvc; using System.Diagnostics; using AS1024.CommunityDocumentationPage.Interfaces; namespace AS1024.CommunityDocumentationPage.Controllers { public class HomeController : Controller { private readonly ILogger _logger; private readonly IBgpCommunityDocumentation _documentation; private IConfiguration Configuration { get; } public HomeController(ILogger logger, IConfiguration configuration, IBgpCommunityDocumentation documentation) { _logger = logger; Configuration = configuration; _documentation = documentation; } [ResponseCache(Duration = 3600)] public async Task Index() { try { var results = await _documentation.GetBgpCommunities(); var filtered = results.Results.Where(b => b.Name.StartsWith(Configuration["ASN"])) .ToList(); return View(filtered); } catch (Exception ex) { _logger.LogError($"Failed to obtain data\n{ex}"); } return View(); } [NonAction] protected Uri BuildNetBoxURI() { var endUrl = new UriBuilder { Path = "/api/ipam/route-targets", Host = Configuration["NetBoxHost"], Scheme = "https" }; return endUrl.Uri; } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }