/// <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); }
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); }
private static void Validate(PackageDownloads packageDownloads) { Assert.NotNull(packageDownloads); }