public void Succeeded(FileDownloadManagerItem item) { if ((item.Success ?? false) && item.Url.HasValue() && !DownloadedItems.ContainsKey(item.Url)) { DownloadedItems.Add(item.Url, Path.GetFileName(item.Path)); } }
public async Task <DownloadedItems> DownloadData(ReleaseData data, bool includeTfsService = false) { //var downloadedData = await _changesetConnector.GetChangesetsAsync(data); var categoryChanges = await _changesetConnector.GetChangesetsAsync(data, "3.1"); var changesByCategory = categoryChanges .Where(x => x.Item2.Any()) .OrderBy(x => x.Item1) .ToDictionary(x => x.Item1, y => y.Item2.Select(z => z.changesetId).ToList()); var changesList = categoryChanges .SelectMany(x => x.Item2) .DistinctBy(x => x.changesetId) .OrderByDescending(x => x.checkedInBy.date) .ToList(); var downloadedData = new DownloadedItems { Categorized = changesByCategory, Changes = changesList }; downloadedData.FilterTfsChanges(includeTfsService); var changesetWorkItemsId = downloadedData.Changes .Where(x => !string.IsNullOrWhiteSpace(x.comment) && _regex.Match(x.comment).Success) .Select(x => _regex.Match(x.comment).Groups[1].Captures[0].Value) .Select(x => x.Split(',')) .SelectMany(x => x) .Select(x => x).ToList(); downloadedData.WorkItems = await _workItemConnector.GetWorkItems(data.Iteration, changesetWorkItemsId); return(downloadedData); }
public string CreateDoc(DownloadedItems downloadedData, Change psRefresh, Settings settings, string templatePath, string releasePath) { var selectedChangesets = downloadedData.Changes .Where(x => x.Selected) .OrderBy(x => x.changesetId) .Select(item => new ChangesetInfo { Id = item.changesetId, Comment = item.comment, CommitedBy = item.checkedInBy.displayName, Created = item.createdDate }).ToList(); var categories = downloadedData.Categorized.ToDictionary( category => category.Key, category => selectedChangesets.Where(x => category.Value.Contains(x.Id)).ToList()) .Where(x => x.Value.Any()).ToList(); var workItems = downloadedData.WorkItems .Where(x => settings.WorkItemStateInclude.Contains(x.State) && x.ClientProject != null) .OrderBy(x => x.ClientProject); var pbi = downloadedData.WorkItems .Where(x => settings.WorkItemStateInclude.Contains(x.State) && x.ClientProject == null) .OrderBy(x => x.Id); var message = new DocumentEditor().ProcessData(psRefresh, settings.Data, categories, workItems, pbi, settings.TestReport, settings.DateFormat, templatePath, releasePath); return(message); }
public FileDownloadManagerItem CreateDownloadImage(ImportExecuteContext context, string urlOrPath, int displayOrder) { try { var item = new FileDownloadManagerItem { Id = displayOrder, DisplayOrder = displayOrder }; if (urlOrPath.IsWebUrl()) { // We append quality to avoid importing of image duplicates. item.Url = context.Services.WebHelper.ModifyQueryString(urlOrPath, "q=100", null); if (DownloadedItems.ContainsKey(urlOrPath)) { // URL has already been downloaded. item.Success = true; item.FileName = DownloadedItems[urlOrPath]; } else { var localPath = string.Empty; try { // Exclude query string parts! localPath = new Uri(urlOrPath).LocalPath; } catch { } item.FileName = Path.GetFileName(localPath).ToValidFileName().NullEmpty() ?? Path.GetRandomFileName(); } item.Path = Path.Combine(ImageDownloadFolder, item.FileName); } else { item.Success = true; item.FileName = Path.GetFileName(urlOrPath).ToValidFileName().NullEmpty() ?? Path.GetRandomFileName(); item.Path = Path.IsPathRooted(urlOrPath) ? urlOrPath : Path.Combine(ImageFolder, urlOrPath); } item.MimeType = MimeTypes.MapNameToMimeType(item.FileName); return(item); } catch { context.Result.AddWarning($"Failed to prepare image download for '{urlOrPath.NaIfEmpty()}'. Skipping file."); return(null); } }
public static void FilterTfsChanges(this DownloadedItems downloadedData, bool include = false) { foreach (var change in downloadedData.Changes) { if (change.checkedInBy.displayName == "TFS Service" || change.checkedInBy.displayName == "Project Collection Build Service (Product)" || change.comment.Contains("Automatic refresh", StringComparison.OrdinalIgnoreCase)) { change.Selected = include; } } }
public FileDownloadManagerItem CreateDownloadImage(string urlOrPath, string seoName, int displayOrder) { var item = new FileDownloadManagerItem { Id = displayOrder, DisplayOrder = displayOrder, MimeType = MimeTypes.MapNameToMimeType(urlOrPath) }; if (item.MimeType.IsEmpty()) { item.MimeType = MediaTypeNames.Image.Jpeg; } var extension = MimeTypes.MapMimeTypeToExtension(item.MimeType); if (extension.HasValue()) { if (urlOrPath.IsWebUrl()) { item.Url = urlOrPath; item.FileName = "{0}-{1}".FormatInvariant(seoName, item.Id).ToValidFileName(); if (DownloadedItems.ContainsKey(urlOrPath)) { item.Path = Path.Combine(ImageDownloadFolder, DownloadedItems[urlOrPath]); item.Success = true; } else { item.Path = Path.Combine(ImageDownloadFolder, item.FileName + extension.EnsureStartsWith(".")); } } else if (Path.IsPathRooted(urlOrPath)) { item.Path = urlOrPath; item.Success = true; } else { item.Path = Path.Combine(ImageFolder, urlOrPath); item.Success = true; } return(item); } return(null); }
public FileDownloadManagerItem CreateDownloadImage(ImportExecuteContext context, string urlOrPath, string seoName, int displayOrder) { var item = new FileDownloadManagerItem { Id = displayOrder, DisplayOrder = displayOrder, MimeType = MimeTypes.MapNameToMimeType(urlOrPath) }; if (item.MimeType.IsEmpty()) { item.MimeType = MediaTypeNames.Image.Jpeg; } if (urlOrPath.IsWebUrl()) { item.Url = context.Services.WebHelper.ModifyQueryString(urlOrPath, "q=100", null); item.FileName = "{0}-{1}".FormatInvariant(seoName, item.Id).ToValidFileName(); if (DownloadedItems.ContainsKey(urlOrPath)) { item.Path = Path.Combine(ImageDownloadFolder, DownloadedItems[urlOrPath]); item.Success = true; } else { var extension = MimeTypes.MapMimeTypeToExtension(item.MimeType).NullEmpty() ?? ".jpg"; item.Path = Path.Combine(ImageDownloadFolder, item.FileName + extension.EnsureStartsWith(".")); } } else if (Path.IsPathRooted(urlOrPath)) { item.Path = urlOrPath; item.Success = true; } else { item.Path = Path.Combine(ImageFolder, urlOrPath); item.Success = true; } return(item); }