public async ValueTask <IReadOnlyCollection <VersionInfoContextInfo> > GetPackageVersionsAsync( PackageIdentity identity, IReadOnlyCollection <PackageSourceContextInfo> packageSources, bool includePrerelease, CancellationToken cancellationToken) { Assumes.NotNull(identity); Assumes.NotNullOrEmpty(packageSources); string cacheId = PackageSearchMetadataCacheItem.GetCacheId(identity.Id, includePrerelease, packageSources); PackageSearchMetadataCacheItem?backgroundDataCache = PackageSearchMetadataMemoryCache.Get(cacheId) as PackageSearchMetadataCacheItem; if (backgroundDataCache != null) { return(await backgroundDataCache.AllVersionsContextInfo); } IPackageMetadataProvider packageMetadataProvider = await GetPackageMetadataProviderAsync(packageSources, cancellationToken); IPackageSearchMetadata packageMetadata = await packageMetadataProvider.GetPackageMetadataAsync(identity, includePrerelease, cancellationToken); IEnumerable <VersionInfo> versions = await packageMetadata.GetVersionsAsync(); return(await Task.WhenAll(versions.Select(v => VersionInfoContextInfo.CreateAsync(v).AsTask()))); }
public void SerializeThenDeserialize_WithValidArguments_RoundTrips(VersionInfoContextInfo expectedResult) { var formatters = new IMessagePackFormatter[] { PackageSearchMetadataContextInfoFormatter.Instance, PackageVulnerabilityMetadataContextInfoFormatter.Instance }; var resolvers = new IFormatterResolver[] { MessagePackSerializerOptions.Standard.Resolver }; var options = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData).WithResolver(CompositeResolver.Create(formatters, resolvers)); VersionInfoContextInfo?actualResult = SerializeThenDeserialize(VersionInfoContextInfoFormatter.Instance, expectedResult, options); Assert.NotNull(actualResult); Assert.Equal(expectedResult.DownloadCount, actualResult !.DownloadCount); Assert.Equal(expectedResult.Version, actualResult.Version); Assert.Equal(expectedResult.PackageDeprecationMetadata is null, actualResult.PackageDeprecationMetadata is null); if (expectedResult.PackageDeprecationMetadata is object) { Assert.Equal(expectedResult.PackageDeprecationMetadata.Message, actualResult.PackageDeprecationMetadata !.Message); } Assert.Equal(expectedResult.PackageSearchMetadata is null, actualResult.PackageSearchMetadata is null); if (expectedResult.PackageSearchMetadata is object) { Assert.Equal(expectedResult.PackageSearchMetadata.Identity, actualResult.PackageSearchMetadata !.Identity); } }
private async ValueTask <IReadOnlyCollection <VersionInfoContextInfo> > GetVersionInfoContextInfoAsync() { IEnumerable <VersionInfo> versions = await _packageSearchMetadata.GetVersionsAsync(); IEnumerable <Task <VersionInfoContextInfo> > versionContextInfoTasks = versions.Select(async v => await VersionInfoContextInfo.CreateAsync(v)); return(await Task.WhenAll(versionContextInfoTasks)); }