public DiffInfo UncommittedDiff(String filePath) { var targetFileInfo = fileInfoProvider.GetFileInfo(filePath, HttpContext.Request.PathBase); var diff = commitRepository.UncommittedDiff(targetFileInfo); diff.FilePath = filePath; return(diff); }
public MergeInfo MergeInfo(String file) { var targetFileInfo = fileInfoProvider.GetFileInfo(file, pathBase); var repoPath = Path.Combine(repo.Info.WorkingDirectory, targetFileInfo.DerivedFileName); using (var stream = new StreamReader(fileFinder.ReadFile(fileFinder.GetProjectRelativePath(repoPath)))) { return(new MergeInfo(stream, file)); } }
public IActionResult Index(String file) { try { targetFileInfo = fileInfoProvider.GetFileInfo(file, HttpContext.Request.PathBase); PageDefinition pageSettings; switch (targetFileInfo.Extension) { case ".html": if (targetFileInfo.IsProjectFile) { return(new FileStreamResult(fileFinder.ReadFile(targetFileInfo.HtmlFile), "text/html")); } return(Redirect(targetFileInfo.NoHtmlRedirect)); case "": var pageStack = CreatePageStack(); pageSettings = fileFinder.GetProjectPageDefinition(targetFileInfo); return(buildAsEditor(pageStack, pageSettings.Layout)); default: pageSettings = fileFinder.GetProjectPageDefinition(targetFileInfo); var altExt = targetFileInfo.Extension.TrimStart('.') + ".html"; var layout = Path.ChangeExtension(pageSettings.Layout, altExt); bool seenBefore = seenExtensions.Contains(layout); if (seenBefore) { //Don't combine these if statements if (altLayoutExtensions.Contains(layout)) { return(BuildAsAltPage(layout)); } } else { seenExtensions.Add(layout); if (fileFinder.DoesLayoutExist(layout)) { altLayoutExtensions.Add(layout); return(BuildAsAltPage(layout)); } } return(returnFile(file)); } } catch (FileNotFoundException ex) { var sb = new StringBuilder($"Could not find file '{ex.FileName}' building page for '{file}'. Message:{ex.Message}"); WriteSearchLocations(sb, ex as PageStackFileNotFoundException); logger.LogInformation(sb.ToString()); throw; } }
public async Task Upload([FromForm] UploadInput input, [FromServices] IFileVerifier fileVerifier) { var fileInfo = fileInfoProvider.GetFileInfo(input.File, HttpContext.Request.PathBase); using (var uploadStream = input.Content.OpenReadStream()) { fileVerifier.Validate(uploadStream, fileInfo.DerivedFileName, input.Content.ContentType); using (Stream stream = fileFinder.WriteFile(fileInfo.DerivedFileName)) { await uploadStream.CopyToAsync(stream); } } }
/// <summary> /// Get the current page settings. /// </summary> /// <param name="page">The name of the file to lookup.</param> /// <returns>The PageSettings for the file.</returns> public PageSettings GetSettings(String page) { var targetFile = fileInfoProvider.GetFileInfo(page, pathBase); var definition = fileFinder.GetProjectPageDefinition(targetFile); String title; if (!definition.Vars.TryGetValue("title", out title)) { title = "Untitled"; } return(new PageSettings() { Title = title, Visible = !definition.Hidden, FilePath = page, Layout = definition.Layout }); }
/// <summary> /// Get the list of pages in draft. /// </summary> /// <returns>The list of drafted files.</returns> public async Task <DraftCollection> List(DraftQuery query) { DraftCollection collection; if (query.File != null) //If file is not null, looking for specific file. { collection = new DraftCollection(query, 1, new Draft[] { await GetInfo(query.File) }); } else { IEnumerable <DraftInfo> draftQuery; int total = 0; if (query.ShowChangedOnly) { draftQuery = fileFinder.GetAllDraftables() .Select(i => fileFinder.GetDraftStatus(i)) .Where(i => i.Status != DraftStatus.UpToDate) .ToList(); //Cache this in a list, it is slow total = draftQuery.Count(); draftQuery = draftQuery .Skip(query.SkipTo(total)) .Take(query.Limit); } else { var draftables = fileFinder.GetAllDraftables(); total = draftables.Count(); draftQuery = draftables .Skip(query.SkipTo(total)) .Take(query.Limit) .Select(i => fileFinder.GetDraftStatus(i)); } var convert = draftQuery.Select(i => { var fileInfo = fileInfoProvider.GetFileInfo(i.File, pathBase); var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo); return(new Draft(i, pageSettings.Title)); }); collection = new DraftCollection(query, total, convert); } return(collection); }
public void buildPage(string relativeFile) { relativeFile = relativeFile.TrimStartingPathChars(); var outFile = Path.Combine(this.outDir, relativeFile); var extension = "json"; if (OutputExtension != null) { extension = OutputExtension; } outFile = Path.ChangeExtension(outFile, extension); var fileInfo = fileInfoProvider.GetFileInfo(relativeFile, null); TemplateEnvironment environment = new TemplateEnvironment(fileInfo.FileNoExtension, fileFinder, overrideValuesProvider.OverrideVars, null, true); PageStack pageStack = new PageStack(environment, fileFinder); pageStack.ContentFile = fileInfo.HtmlFile; if (pageStack.Visible) { pageStack.ContentTransformer = (content) => { //This removes all html elements and formatting and cleans up the whitespace HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(content); var escaped = HtmlEntity.DeEntitize(htmlDoc.DocumentNode.InnerText); escaped = escaped.SingleSpaceWhitespace(); return(escaped.JsonEscape()); }; var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo); var layout = pageSettings.Layout; if (OutputExtension != null) { layout = Path.ChangeExtension(layout, OutputExtension); } pageStack.pushLayout(layout); var dr = new PlainTextRenderer(environment, StringExtensions.JsonEscape); var document = dr.getDocument(pageStack.Pages); var outDir = Path.GetDirectoryName(outFile); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } using (var writer = new StreamWriter(File.Open(outFile, FileMode.Create, FileAccess.Write, FileShare.None), Encoding.UTF8)) { writer.Write(document); } } }
public void buildPage(String relativeFile) { relativeFile = relativeFile.TrimStartingPathChars(); var outFile = Path.Combine(this.outDir, relativeFile); if (OutputExtension != null) { outFile = Path.ChangeExtension(outFile, OutputExtension); } ITargetFileInfo fileInfo = fileInfoProvider.GetFileInfo(relativeFile, null); TemplateEnvironment environment = new TemplateEnvironment(fileInfo.FileNoExtension, fileFinder, overrideValuesProvider.OverrideVars, version, true); PageStack pageStack = new PageStack(environment, fileFinder); pageStack.ContentFile = fileInfo.HtmlFile; if (pageStack.Visible) { var pageSettings = fileFinder.GetProjectPageDefinition(fileInfo); var layout = pageSettings.Layout; if (OutputExtension != null) { layout = Path.ChangeExtension(layout, OutputExtension); } pageStack.pushLayout(layout); var pathBase = environment.PathBase; HtmlDocumentRenderer dr = new HtmlDocumentRenderer(environment); dr.addTransform(new HashTreeMenus(fileFinder)); dr.addTransform(new ExpandRootedPaths(pathBase)); if (!String.IsNullOrEmpty(pathBase)) { //Safe to fix relative urls last since it wont replace any that already start with the path base. dr.addTransform(new FixRelativeUrls(pathBase)); } var document = dr.getDocument(pageStack.Pages); var outDir = Path.GetDirectoryName(outFile); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } using (var writer = new StreamWriter(File.Open(outFile, FileMode.Create, FileAccess.Write, FileShare.None))) { writer.Write(document.DocumentNode.OuterHtml); } fileFinder.CopyLinkedFiles(this.outDir, pageStack); } }