Browse Source

Refactored doc

pull/570/head
Halil ibrahim Kalkan 7 years ago
parent
commit
4e56cdde07
  1. 18
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs
  2. 83
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  3. 14
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs
  4. 12
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/IDocumentStore.cs
  5. 17
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

18
modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs

@ -1,7 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Docs.Projects;
namespace Volo.Docs.Documents
{
@ -13,21 +12,18 @@ namespace Volo.Docs.Documents
string version,
bool normalize);
Task<DocumentWithDetailsDto> GetDefaultAsync(
string projectShortName,
string version,
bool normalize);
Task<NavigationWithDetailsDto> GetNavigationDocumentAsync(
string projectShortName,
string version,
bool normalize);
Task<List<VersionInfoDto>> GetVersions(
string projectShortName,
string defaultDocumentName,
string documentStoreType,
string documentName);
Task<DocumentWithDetailsDto> GetDocument(
ProjectDto projectDto,
string documentName,
string version,
bool normalize);
string projectShortName
);
}
}

83
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs

@ -25,64 +25,79 @@ namespace Volo.Docs.Documents
_documentStoreFactory = documentStoreFactory;
}
public async Task<DocumentWithDetailsDto> GetByNameAsync(string projectShortName, string documentName, string version, bool normalize)
public async Task<DocumentWithDetailsDto> GetByNameAsync(
string projectShortName,
string documentName,
string version,
bool normalize)
{
var project = await _projectRepository.GetByShortNameAsync(projectShortName);
return await GetDocument(ObjectMapper.Map<Project, ProjectDto>(project), documentName, version, normalize);
return await GetDocumentWithDetailsDto(
project,
documentName,
version,
normalize
);
}
public async Task<NavigationWithDetailsDto> GetNavigationDocumentAsync(string projectShortName, string version, bool normalize)
public async Task<DocumentWithDetailsDto> GetDefaultAsync(
string projectShortName,
string version,
bool normalize)
{
var project = await _projectRepository.GetByShortNameAsync(projectShortName);
return ObjectMapper.Map<DocumentWithDetailsDto, NavigationWithDetailsDto>(
await GetDocument(ObjectMapper.Map<Project, ProjectDto>(project), project.NavigationDocumentName,
version, normalize));
return await GetDocumentWithDetailsDto(
project,
project.DefaultDocumentName,
version,
normalize
);
}
public async Task<DocumentWithDetailsDto> GetDocument(ProjectDto projectDto, string documentName, string version, bool normalize)
public virtual async Task<NavigationWithDetailsDto> GetNavigationDocumentAsync(
string projectShortName,
string version,
bool normalize)
{
if (projectDto == null)
{
throw new ArgumentNullException(nameof(projectDto));
}
var project = await _projectRepository.GetAsync(projectDto.Id);
if (string.IsNullOrWhiteSpace(documentName))
{
documentName = projectDto.DefaultDocumentName;
}
IDocumentStore documentStore = _documentStoreFactory.Create(projectDto.DocumentStoreType);
var project = await _projectRepository.GetByShortNameAsync(projectShortName);
var documentDto = await GetDocumentWithDetailsDto(
project,
project.NavigationDocumentName,
version,
normalize
);
return ObjectMapper.Map<DocumentWithDetailsDto, NavigationWithDetailsDto>(documentDto);
}
Document document = await documentStore.FindDocumentByNameAsync(project.ExtraProperties, projectDto.Format, documentName, version);
protected virtual async Task<DocumentWithDetailsDto> GetDocumentWithDetailsDto(
Project project,
string documentName,
string version,
bool normalize)
{
var documentStore = _documentStoreFactory.Create(project.DocumentStoreType);
var document = await documentStore.Find(project, documentName, version);
var dto = ObjectMapper.Map<Document, DocumentWithDetailsDto>(document);
dto.Project = projectDto;
dto.Project = ObjectMapper.Map<Project, ProjectDto>(project);
return dto;
}
public async Task<List<VersionInfoDto>> GetVersions(string projectShortName, string defaultDocumentName,
string documentStoreType, string documentName)
public async Task<List<VersionInfoDto>> GetVersions(
string projectShortName
)
{
var project = await _projectRepository.GetByShortNameAsync(projectShortName);
if (string.IsNullOrWhiteSpace(documentName))
{
documentName = defaultDocumentName;
}
var documentStore = _documentStoreFactory.Create(documentStoreType);
var documentStore = _documentStoreFactory.Create(project.DocumentStoreType);
var versions = await GetVersionsFromCache(projectShortName);
if (versions == null)
{
versions = await documentStore.GetVersions(project.ExtraProperties, documentName);
versions = await documentStore.GetVersions(project);
await SetVersionsToCache(projectShortName, versions);
}

14
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs

@ -21,11 +21,11 @@ namespace Volo.Docs.Documents
public const int DocumentNotFoundExceptionCode = 20181001;
public async Task<Document> FindDocumentByNameAsync(Dictionary<string, object> projectExtraProperties, string projectFormat, string documentName, string version)
public async Task<Document> Find(Volo.Docs.Projects.Project project, string documentName, string version)
{
var rootUrl = projectExtraProperties["GithubRootUrl"].ToString().Replace("_version_/", version + "/").Replace("www.", "");
var rootUrl = project.ExtraProperties["GithubRootUrl"].ToString().Replace("_version_/", version + "/").Replace("www.", "");
var token = projectExtraProperties["GithubAccessToken"]?.ToString();
var token = project.ExtraProperties["GithubAccessToken"]?.ToString();
var rawRootUrl = rootUrl.Replace("github.com", "raw.githubusercontent.com").Replace("/tree/", "/");
var rawUrl = rawRootUrl + documentName;
@ -46,7 +46,7 @@ namespace Volo.Docs.Documents
EditLink = editLink,
RootUrl = rootUrl,
RawRootUrl = rawRootUrl,
Format = projectFormat,
Format = project.Format,
LocalDirectory = localDirectory,
FileName = fileName,
Version = version,
@ -80,17 +80,17 @@ namespace Volo.Docs.Documents
}
}
public async Task<List<VersionInfoDto>> GetVersions(Dictionary<string, object> projectExtraProperties, string documentName)
public async Task<List<VersionInfoDto>> GetVersions(Volo.Docs.Projects.Project project)
{
try
{
var token = projectExtraProperties["GithubAccessToken"]?.ToString();
var token = project.ExtraProperties["GithubAccessToken"]?.ToString();
var gitHubClient = token.IsNullOrWhiteSpace()
? new GitHubClient(new ProductHeaderValue("AbpWebSite"))
: new GitHubClient(new ProductHeaderValue("AbpWebSite"), new InMemoryCredentialStore(new Credentials(token)));
var url = projectExtraProperties["GithubRootUrl"].ToString();
var url = project.ExtraProperties["GithubRootUrl"].ToString();
var releases = await gitHubClient.Repository.Release.GetAll(
GetGithubOrganizationNameFromUrl(url),
GetGithubRepositoryNameFromUrl(url)

12
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/IDocumentStore.cs

@ -1,14 +1,20 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
using Volo.Docs.Projects;
namespace Volo.Docs.Documents
{
public interface IDocumentStore : IDomainService
{
Task<Document> FindDocumentByNameAsync(Dictionary<string, object> projectExtraProperties, string projectFormat,
string documentName, string version);
Task<Document> Find(
Project project,
string documentName,
string version
);
Task<List<VersionInfoDto>> GetVersions(Dictionary<string, object> projectExtraProperties, string documentName);
Task<List<VersionInfoDto>> GetVersions(
Project project
);
}
}

17
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -87,10 +87,9 @@ namespace Volo.Docs.Pages.Documents.Project
private async Task SetVersionAsync(ProjectDto project)
{
Versions = (await _documentAppService
.GetVersions(project.ShortName, project.DefaultDocumentName,
project.DocumentStoreType, DocumentNameWithExtension))
.Select(v => new VersionInfo(v.DisplayName, v.Name)).ToList();
var versionInfoDtos = await _documentAppService.GetVersions(project.ShortName);
Versions = versionInfoDtos.Select(v => new VersionInfo(v.DisplayName, v.Name)).ToList();
LatestVersionInfo = GetLatestVersion();
@ -153,7 +152,15 @@ namespace Volo.Docs.Pages.Documents.Project
private async Task SetDocumentAsync()
{
Document = await _documentAppService.GetByNameAsync(ProjectName, DocumentNameWithExtension, Version, true);
if (DocumentNameWithExtension.IsNullOrWhiteSpace())
{
Document = await _documentAppService.GetDefaultAsync(ProjectName, Version, true);
}
else
{
Document = await _documentAppService.GetByNameAsync(ProjectName, DocumentNameWithExtension, Version, true);
}
var converter = _documentConverterFactory.Create(Document.Format ?? ProjectFormat);
var content = converter.NormalizeLinks(Document.Content, Document.Project.ShortName, GetSpecificVersionOrLatest(), Document.LocalDirectory);

Loading…
Cancel
Save