Browse Source

Refactored doc

pull/570/head
Halil ibrahim Kalkan 8 years ago
parent
commit
4e56cdde07
  1. 16
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/IDocumentAppService.cs
  2. 79
      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. 15
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

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

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

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

@ -25,64 +25,79 @@ namespace Volo.Docs.Documents
_documentStoreFactory = documentStoreFactory; _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); var project = await _projectRepository.GetByShortNameAsync(projectShortName);
return await GetDocumentWithDetailsDto(
return await GetDocument(ObjectMapper.Map<Project, ProjectDto>(project), documentName, version, normalize); 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); var project = await _projectRepository.GetByShortNameAsync(projectShortName);
return await GetDocumentWithDetailsDto(
return ObjectMapper.Map<DocumentWithDetailsDto, NavigationWithDetailsDto>( project,
await GetDocument(ObjectMapper.Map<Project, ProjectDto>(project), project.NavigationDocumentName, project.DefaultDocumentName,
version, normalize)); version,
normalize
);
} }
public async Task<DocumentWithDetailsDto> GetDocument(ProjectDto projectDto, string documentName, string version, bool normalize) public virtual async Task<NavigationWithDetailsDto> GetNavigationDocumentAsync(
{ string projectShortName,
if (projectDto == null) string version,
bool normalize)
{ {
throw new ArgumentNullException(nameof(projectDto)); var project = await _projectRepository.GetByShortNameAsync(projectShortName);
var documentDto = await GetDocumentWithDetailsDto(
project,
project.NavigationDocumentName,
version,
normalize
);
return ObjectMapper.Map<DocumentWithDetailsDto, NavigationWithDetailsDto>(documentDto);
} }
var project = await _projectRepository.GetAsync(projectDto.Id); protected virtual async Task<DocumentWithDetailsDto> GetDocumentWithDetailsDto(
Project project,
if (string.IsNullOrWhiteSpace(documentName)) string documentName,
string version,
bool normalize)
{ {
documentName = projectDto.DefaultDocumentName; var documentStore = _documentStoreFactory.Create(project.DocumentStoreType);
} var document = await documentStore.Find(project, documentName, version);
IDocumentStore documentStore = _documentStoreFactory.Create(projectDto.DocumentStoreType);
Document document = await documentStore.FindDocumentByNameAsync(project.ExtraProperties, projectDto.Format, documentName, version);
var dto = ObjectMapper.Map<Document, DocumentWithDetailsDto>(document); var dto = ObjectMapper.Map<Document, DocumentWithDetailsDto>(document);
dto.Project = ObjectMapper.Map<Project, ProjectDto>(project);
dto.Project = projectDto;
return dto; return dto;
} }
public async Task<List<VersionInfoDto>> GetVersions(string projectShortName, string defaultDocumentName, public async Task<List<VersionInfoDto>> GetVersions(
string documentStoreType, string documentName) string projectShortName
)
{ {
var project = await _projectRepository.GetByShortNameAsync(projectShortName); var project = await _projectRepository.GetByShortNameAsync(projectShortName);
if (string.IsNullOrWhiteSpace(documentName)) var documentStore = _documentStoreFactory.Create(project.DocumentStoreType);
{
documentName = defaultDocumentName;
}
var documentStore = _documentStoreFactory.Create(documentStoreType);
var versions = await GetVersionsFromCache(projectShortName); var versions = await GetVersionsFromCache(projectShortName);
if (versions == null) if (versions == null)
{ {
versions = await documentStore.GetVersions(project.ExtraProperties, documentName); versions = await documentStore.GetVersions(project);
await SetVersionsToCache(projectShortName, versions); 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 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 rawRootUrl = rootUrl.Replace("github.com", "raw.githubusercontent.com").Replace("/tree/", "/");
var rawUrl = rawRootUrl + documentName; var rawUrl = rawRootUrl + documentName;
@ -46,7 +46,7 @@ namespace Volo.Docs.Documents
EditLink = editLink, EditLink = editLink,
RootUrl = rootUrl, RootUrl = rootUrl,
RawRootUrl = rawRootUrl, RawRootUrl = rawRootUrl,
Format = projectFormat, Format = project.Format,
LocalDirectory = localDirectory, LocalDirectory = localDirectory,
FileName = fileName, FileName = fileName,
Version = version, 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 try
{ {
var token = projectExtraProperties["GithubAccessToken"]?.ToString(); var token = project.ExtraProperties["GithubAccessToken"]?.ToString();
var gitHubClient = token.IsNullOrWhiteSpace() var gitHubClient = token.IsNullOrWhiteSpace()
? new GitHubClient(new ProductHeaderValue("AbpWebSite")) ? new GitHubClient(new ProductHeaderValue("AbpWebSite"))
: new GitHubClient(new ProductHeaderValue("AbpWebSite"), new InMemoryCredentialStore(new Credentials(token))); : 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( var releases = await gitHubClient.Repository.Release.GetAll(
GetGithubOrganizationNameFromUrl(url), GetGithubOrganizationNameFromUrl(url),
GetGithubRepositoryNameFromUrl(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.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Volo.Docs.Projects;
namespace Volo.Docs.Documents namespace Volo.Docs.Documents
{ {
public interface IDocumentStore : IDomainService public interface IDocumentStore : IDomainService
{ {
Task<Document> FindDocumentByNameAsync(Dictionary<string, object> projectExtraProperties, string projectFormat, Task<Document> Find(
string documentName, string version); Project project,
string documentName,
string version
);
Task<List<VersionInfoDto>> GetVersions(Dictionary<string, object> projectExtraProperties, string documentName); Task<List<VersionInfoDto>> GetVersions(
Project project
);
} }
} }

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

Loading…
Cancel
Save