예제 #1
0
        /// <summary>
        /// Get downloads information about packages for selected period.
        /// </summary>
        /// <param name="period">Requested period - year, month</param>
        /// <param name="filter">Specify packages type</param>
        /// <returns>Information about package downloads.</returns>
        public async Task <PackageDownloads[]> GetDownloadsAsync(DateTimeOffset period, PackageFilter filter = PackageFilter.All)
        {
            AssertIsLoggedIn();

            CheckYear(period);

            var publisherInfo = await GetPublisherInfoAsync();

            var date       = period.ToString(ClientConsts.PERIOD_DT_FORMAT);
            var parameters = new Dictionary <string, string>()
            {
                { "package_filter", filter.ToString().ToLowerInvariant() }
            };

            var response = await FetchDataAsync <DownloadsResponse>($"/api/publisher-info/downloads/{publisherInfo.Id}/{date}.json" + ToQueryString(parameters));

            var downloads = new PackageDownloads[response.Payload.Length];

            for (int i = 0; i < response.Payload.Length; i++)
            {
                downloads[i] = new PackageDownloads(response.Payload[i], response.Links[i].ShortUrl);
            }

            return(downloads);
        }
예제 #2
0
        public override bool Execute()
        {
            var log = new MSBuildLogger(Log);

            log.LogDebug($"(in) ProjectUniqueName '{ProjectUniqueName}'");
            log.LogDebug($"(in) TargetFrameworks '{TargetFrameworks}'");
            log.LogDebug($"(in) PackageDownloads '{string.Join(";", PackageDownloads.Select(p => p.ItemSpec))}'");

            var entries = new List <ITaskItem>();
            var seenIds = new HashSet <Tuple <string, string> >(new CustomEqualityComparer());

            foreach (var msbuildItem in PackageDownloads)
            {
                var packageId = msbuildItem.ItemSpec;

                var properties = new Dictionary <string, string>();
                properties.Add("ProjectUniqueName", ProjectUniqueName);
                properties.Add("Type", "DownloadDependency");
                properties.Add("Id", packageId);
                BuildTasksUtility.CopyPropertyIfExists(msbuildItem, properties, "Version", "VersionRange");

                properties.TryGetValue("VersionRange", out var versionRange);

                var key = new Tuple <string, string>(packageId, versionRange);

                if (string.IsNullOrEmpty(packageId) || !seenIds.Add(key))
                {
                    // Skip duplicate id/version combinations
                    continue;
                }

                if (!string.IsNullOrEmpty(TargetFrameworks))
                {
                    properties.Add("TargetFrameworks", TargetFrameworks);
                }

                entries.Add(new TaskItem(Guid.NewGuid().ToString(), properties));
            }

            RestoreGraphItems = entries.ToArray();

            return(true);
        }
예제 #3
0
 private static void Validate(PackageDownloads packageDownloads)
 {
     Assert.NotNull(packageDownloads);
 }