public void GetUrl_preserves_dash_separated_values_that_arent_timestamps() { var fmPermalink = new FrontMatterPermalink(":title") { FilePath = @"/temp/foo-bar-baz-qak-foobar_baz.md", }; var url = fmPermalink.ToUrl(); Assert.Equal("foo-bar-baz-qak-foobar_baz", url); }
public void GetUrl_returns_strips_timestamp() { var fmPermalink = new FrontMatterPermalink(":title") { FilePath = @"/temp/2012-01-03-foobar_baz.md", }; var url = fmPermalink.ToUrl(); Assert.Equal("foobar_baz", url); }
public void GetUrl_returns_file_name_when_no_folder() { var fmPermalink = new FrontMatterPermalink(":title") { FilePath = @"/foobar_baz.en-us.md", }; var url = fmPermalink.ToUrl(); Assert.Equal("foobar_baz", url); }
public void GetUrl_returns_folder_and_original_value_when_no_timestamp() { var fmPermalink = new FrontMatterPermalink(":folder/:title") { FilePath = @"/temp/foobar_baz.md", }; var url = fmPermalink.ToUrl(); Assert.Equal("temp/foobar_baz", url); }
public void EvaluatePermalink_url_is_well_formatted(string permalink, string expectedUrl, string categories) { var fmPermalink = new FrontMatterPermalink(permalink) { Categories = categories == null ? new List <string>() : categories.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), Date = new DateTime(2015, 03, 09), FilePath = @"/temp/2015-03-09-foobar-baz.md", }; var url = fmPermalink.ToUrl(); Assert.Equal(expectedUrl, url); }
public virtual async Task LoadSitemapItemRecordsAsync(Store store, Sitemap sitemap, string baseUrl, Action <ExportImportProgressInfo> progressCallback = null) { var progressInfo = new ExportImportProgressInfo(); var contentBasePath = $"Pages/{sitemap.StoreId}"; var storageProvider = _blobStorageProviderFactory.CreateProvider(contentBasePath); var options = new SitemapItemOptions(); var staticContentSitemapItems = sitemap.Items.Where(si => !string.IsNullOrEmpty(si.ObjectType) && (si.ObjectType.EqualsInvariant(SitemapItemTypes.ContentItem) || si.ObjectType.EqualsInvariant(SitemapItemTypes.Folder))) .ToList(); var totalCount = staticContentSitemapItems.Count; if (totalCount > 0) { var processedCount = 0; var acceptedFilenameExtensions = SettingsManager.GetValue(ModuleConstants.Settings.General.AcceptedFilenameExtensions.Name, ".md,.html") .Split(',') .Select(i => i.Trim()) .Where(i => !string.IsNullOrEmpty(i)) .ToList(); progressInfo.Description = $"Content: Starting records generation for {totalCount} pages"; progressCallback?.Invoke(progressInfo); foreach (var sitemapItem in staticContentSitemapItems) { var urls = new List <string>(); if (sitemapItem.ObjectType.EqualsInvariant(SitemapItemTypes.Folder)) { var searchResult = await storageProvider.SearchAsync(sitemapItem.UrlTemplate, null); var itemUrls = await GetItemUrls(storageProvider, searchResult); foreach (var itemUrl in itemUrls) { var itemExtension = Path.GetExtension(itemUrl); if (!acceptedFilenameExtensions.Any() || string.IsNullOrEmpty(itemExtension) || acceptedFilenameExtensions.Contains(itemExtension, StringComparer.OrdinalIgnoreCase)) { urls.Add(itemUrl); } } } else if (sitemapItem.ObjectType.EqualsInvariant(SitemapItemTypes.ContentItem)) { var item = await storageProvider.GetBlobInfoAsync(sitemapItem.UrlTemplate); if (item != null) { urls.Add(item.RelativeUrl); } } totalCount = urls.Count; foreach (var url in urls) { using (var stream = storageProvider.OpenRead(url)) { var content = stream.ReadToString(); var yamlHeader = ReadYamlHeader(content); yamlHeader.TryGetValue("permalink", out var permalinks); var frontMatterPermalink = new FrontMatterPermalink(url.Replace(".md", "")); if (permalinks != null) { frontMatterPermalink = new FrontMatterPermalink(permalinks.FirstOrDefault()); } sitemapItem.ItemsRecords.AddRange(GetSitemapItemRecords(store, options, frontMatterPermalink.ToUrl().TrimStart('/'), baseUrl)); processedCount++; progressInfo.Description = $"Content: Have been generated records for {processedCount} of {totalCount} pages"; progressCallback?.Invoke(progressInfo); } } } } }