Ejemplo n.º 1
0
        public async Task <ActionResult> Index()
        {
            if (HttpContext.Items.ContainsKey(Constants.Route.GithubImage))
            {
                var pageItem = HttpContext.Items[Constants.Route.GithubImage] as string;
                var image    = await gitHubFileLogic.LoadImageAsync(pageItem.ToLower());

                return(File(image, GetImageMimeType(pageItem)));
            }

            try
            {
                var page          = "Index";
                var isDefaultPage = true;
                if (HttpContext.Items.ContainsKey(Constants.Route.GithubPage))
                {
                    var pageItem = HttpContext.Items[Constants.Route.GithubPage] as string;
                    if (settings.ReloadGitHubPassword.Equals(pageItem, StringComparison.Ordinal))
                    {
                        await gitHubFileLogic.UpdateFilesAsync();
                    }
                    else if (!"README".Equals(pageItem, StringComparison.OrdinalIgnoreCase))
                    {
                        page          = pageItem;
                        isDefaultPage = false;
                    }
                }

                (var title, var pageContent) = await gitHubFileLogic.LoadFileWithTitle($"{page.ToLower()}.md");

                ViewData["Title"] = isDefaultPage || title.IsNullOrEmpty() ? "Docs" : $"Docs - {title}";
                var sidebar = await gitHubFileLogic.LoadFileAsync("_sidebar.md");

                return(View("GitHubFile", new GitHubFileViewModel {
                    PageContent = pageContent, Sidebar = sidebar
                }));
            }
            catch (RequestFailedException ex)
            {
                logger.LogError(ex, $"Unable to load FoxIDs path '{Request.Path}'.");
                return(RedirectToAction());
            }
        }