private async Task BuildToc() { string tocJson = null; switch (RepositoryType) { case RepositoryTypes.GitHubRaw: tocJson = await TableOfContentsHelper.GetTocJsonFromGitHubRaw(GitHubMasterUrlRaw); break; case RepositoryTypes.VstsGit: tocJson = await VstsHelper.GetTocJson(VstsInstance, VstsProjectName, VstsDocsFolder, VstsPat, VstsApiVersion); break; } if (string.IsNullOrEmpty(tocJson)) { return; } var dynamicToc = TableOfContentsHelper.GetDynamicTocFromJson(tocJson); Topics = TableOfContentsHelper.BuildTocFromDynamicToc(dynamicToc, null, string.Empty, out List <TableOfContentsItem> flatTopicsList); }
private async Task BuildToc() { string tocJson = null; var repositoryType = RepositoryTypeHelper.GetTypeFromTypeName(GetSetting <string>(SettingsEnum.RepositoryType)); var logoUrl = GetSetting <string>(SettingsEnum.LogoPath); var logoUrlLower = logoUrl.ToLowerInvariant(); var logoUrlIsAbsolute = true; if (!logoUrl.StartsWith("http://") && !logoUrl.StartsWith("https://")) { logoUrlIsAbsolute = false; } LogoUrl = logoUrl; if (UseSqlServer) // SQL server *may* provide a local tabe of contents that would override all others { tocJson = await SqlDataAccess.GetRepositoryLocalTableOfContents(CurrentPrefix); } if (string.IsNullOrEmpty(tocJson)) { switch (repositoryType) { case RepositoryTypes.GitHubRaw: tocJson = await TableOfContentsHelper.GetTocJsonFromGitHubRaw(GitHubMasterUrlRaw); if (!logoUrlIsAbsolute) { LogoUrl = GitHubMasterUrlRaw + logoUrl; } break; case RepositoryTypes.GitHubApi: tocJson = await TableOfContentsHelper.GetTocJsonFromGitHubApi(GitHubOwner, GitHubRepository, GitHubPat); // TODO: if (!logoUrlIsAbsolute) // LogoUrl = GitHubMasterUrlRaw + logoUrl; break; case RepositoryTypes.VstsGit: tocJson = await VstsHelper.GetTocJson(GetSetting <string>(SettingsEnum.VstsInstance), GetSetting <string>(SettingsEnum.VstsProjectName), GetSetting <string>(SettingsEnum.VstsDocsFolder), GetSetting <string>(SettingsEnum.VstsPat), GetSetting <string>(SettingsEnum.VstsApiVersion)); if (!logoUrlIsAbsolute) { LogoUrl = $"/___FileProxy___?mode=vstsgit&path={logoUrl}"; } break; } } if (string.IsNullOrEmpty(tocJson)) { return; } var dynamicToc = TableOfContentsHelper.GetDynamicTocFromJson(tocJson); if (dynamicToc.title != null) { RepositoryTitle = dynamicToc.title; } if (dynamicToc.owner != null) { Owner = dynamicToc.owner; } Topics = TableOfContentsHelper.BuildTocFromDynamicToc(dynamicToc, this, CurrentSlug, out List <TableOfContentsItem> flatTopicList); FlatTopics = flatTopicList; MainMenu = TableOfContentsHelper.BuildMainMenuStructureFromDynamicToc(dynamicToc); var matchingTopic = FlatTopics.FirstOrDefault(t => TopicHelper.SlugMatchesTopic(CurrentSlug, t)); if (matchingTopic == null) { matchingTopic = FlatTopics.FirstOrDefault(t => TopicHelper.SlugMatchesTopic(CurrentSlug, t, true)); } if (matchingTopic == null) { matchingTopic = FlatTopics.FirstOrDefault(t => TopicHelper.LinkMatchesTopic(CurrentSlug, t)); } if (matchingTopic == null) { matchingTopic = Topics.FirstOrDefault(); } SelectedTopic = matchingTopic; TableOfContentsHelper.EnsureExpanded(SelectedTopic); TocSettings = dynamicToc.settings; CurrentTopicSettings = SelectedTopic?.SettingsDynamic; }