Пример #1
0
 public void Succeeded(FileDownloadManagerItem item)
 {
     if ((item.Success ?? false) && item.Url.HasValue() && !DownloadedItems.ContainsKey(item.Url))
     {
         DownloadedItems.Add(item.Url, Path.GetFileName(item.Path));
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
 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;
         }
     }
 }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }