when offline read from file.

pull/441/head
Alper Ebicoglu 7 years ago
parent f57e5b2ded
commit c7708f32e2

@ -1,7 +1,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Sockets;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Octokit;
@ -15,9 +18,12 @@ namespace Volo.Docs.Documents
{
public const string Type = "Github"; //TODO: Convert to "github"
private const bool IsOffline = true; //use it when you don't want to get from GitHub (eg: I have no internet)
public async Task<Document> FindDocumentByNameAsync(Project project, string documentName, string version)
{
var rootUrl = project.ExtraProperties["GithubRootUrl"].ToString().Replace("_version_/", version + "/").Replace("www.", "");
var rootUrl = project.ExtraProperties["GithubRootUrl"].ToString().Replace("_version_/", version + "/")
.Replace("www.", "");
var token = project.ExtraProperties["GithubAccessToken"]?.ToString();
var rawRootUrl = rootUrl.Replace("github.com", token + "raw.githubusercontent.com").Replace("/tree/", "/");
@ -29,7 +35,8 @@ namespace Volo.Docs.Documents
if (documentName.Contains("/"))
{
localDirectory = documentName.Substring(0, documentName.LastIndexOf('/'));
fileName = documentName.Substring(documentName.LastIndexOf('/') + 1, documentName.Length - documentName.LastIndexOf('/') - 1);
fileName = documentName.Substring(documentName.LastIndexOf('/') + 1,
documentName.Length - documentName.LastIndexOf('/') - 1);
}
var content = DownloadWebContent(documentName, rawUrl);
@ -69,6 +76,17 @@ namespace Volo.Docs.Documents
}
}
}
//todo: remove it when filedocumentstore is implemented
else if (ex.InnerException is HttpRequestException &&
ex.InnerException.InnerException != null &&
ex.InnerException.InnerException is SocketException exception &&
exception.SocketErrorCode == SocketError.HostNotFound)
{
if (IsOffline)
{
return File.ReadAllText(Path.Combine(@"D:\Github\abp\docs\", documentName));
}
}
return "An error occured while getting the document " + documentName;
}
@ -82,18 +100,28 @@ namespace Volo.Docs.Documents
public async Task<List<string>> GetVersions(Project project, string documentName)
{
var gitHubClient = new GitHubClient(new ProductHeaderValue("AbpWebSite"));
var url = project.ExtraProperties["GithubRootUrl"].ToString();
var releases = await gitHubClient.Repository.Release.GetAll(GetGithubOrganizationNameFromUrl(url), GetGithubRepositoryNameFromUrl(url));
try
{
var gitHubClient = new GitHubClient(new ProductHeaderValue("AbpWebSite"));
var url = project.ExtraProperties["GithubRootUrl"].ToString();
var releases = await gitHubClient.Repository.Release.GetAll(GetGithubOrganizationNameFromUrl(url),
GetGithubRepositoryNameFromUrl(url));
return releases.OrderByDescending(r => r.PublishedAt).Select(r => r.TagName).ToList();
return releases.OrderByDescending(r => r.PublishedAt).Select(r => r.TagName).ToList();
}
catch (Exception ex)
{
Logger.LogError(ex.Message, ex);
return new List<string>();
}
}
private static string GetGithubOrganizationNameFromUrl(string url)
{
try
{
var urlStartingAfterFirstSlash = url.Substring(url.IndexOf("github.com/", StringComparison.Ordinal) + "github.com/".Length);
var urlStartingAfterFirstSlash =
url.Substring(url.IndexOf("github.com/", StringComparison.Ordinal) + "github.com/".Length);
return urlStartingAfterFirstSlash.Substring(0, urlStartingAfterFirstSlash.IndexOf('/'));
}
catch (Exception)
@ -106,8 +134,10 @@ namespace Volo.Docs.Documents
{
try
{
var urlStartingAfterFirstSlash = url.Substring(url.IndexOf("github.com/", StringComparison.Ordinal) + "github.com/".Length);
var urlStartingAfterSecondSlash = urlStartingAfterFirstSlash.Substring(urlStartingAfterFirstSlash.IndexOf('/') + 1);
var urlStartingAfterFirstSlash =
url.Substring(url.IndexOf("github.com/", StringComparison.Ordinal) + "github.com/".Length);
var urlStartingAfterSecondSlash =
urlStartingAfterFirstSlash.Substring(urlStartingAfterFirstSlash.IndexOf('/') + 1);
return urlStartingAfterSecondSlash.Substring(0, urlStartingAfterSecondSlash.IndexOf('/'));
}
catch (Exception)
@ -115,6 +145,5 @@ namespace Volo.Docs.Documents
throw new Exception($"Github url is not valid: {url}");
}
}
}
}

@ -70,6 +70,7 @@ namespace Volo.Docs.Pages.Documents.Project
Document = await _documentAppService.GetByNameAsync(ProjectName, DocumentName, Version, true);
var documentFormatting = _documentFormattingFactory.Create(Document.Format ?? "md");
var content = documentFormatting.Format(Document.Content);
content = HtmlNormalizer.NormalizeImages(content, Document.RawRootUrl, Document.LocalDirectory);
content = HtmlNormalizer.NormalizeLinks(content, Document.Project.ShortName, Document.Version);
Document.Content = content;

@ -9,19 +9,19 @@
width: 270px;
top: 0px;
position: fixed; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:visited {
box-shadow: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search {
position: relative;
padding: 0 1rem;
margin: 1rem 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:visited {
box-shadow: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search {
position: absolute;
top: 0px;

File diff suppressed because one or more lines are too long

@ -13,23 +13,26 @@
top: 0px;
position: fixed;
.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0;
&:focus, &:active, &:hover, &:visited {
box-shadow: none;
}
}
.docs-search {
position: relative;
padding: 0 1rem;
margin: 1rem 0;
input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0;
&:focus, &:active, &:hover, &:visited {
box-shadow: none;
}
}
.btn-search {
position: absolute;

@ -9,19 +9,19 @@
width: 270px;
top: 0px;
position: fixed; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .form-control:visited {
box-shadow: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search {
position: relative;
padding: 0 1rem;
margin: 1rem 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:visited {
box-shadow: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search {
position: absolute;
top: 0px;

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save