| File: Model\GetVulnerabilityInfoResult.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Protocol\NuGet.Protocol.csproj (NuGet.Protocol) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; namespace NuGet.Protocol.Model { /// <summary>Represents the result of <see cref="IVulnerabilityInfoResource.GetVulnerabilityInfoAsync(Core.Types.SourceCacheContext, Common.ILogger, System.Threading.CancellationToken)"/></summary> /// <remarks>Vulnerability data from a package source typically is spread across multiple files. Therefore, it's /// possible for some data to be retrieved successfully, while other data failed. This type allows partial data /// to be returned along with error information.</remarks> public sealed class GetVulnerabilityInfoResult { /// <summary>The known package vulnerabilities.</summary> /// <remarks>The outer IReadOnlyList represents the number of files the package source split the vulnerability data into. /// The IReadOnlyDictionary's key is the package ID. /// The inner IReadOnlyList is all of the vulnerabilities known for the package ID. /// <para>May be null if no vulnerability data was parsed successfully.</para></remarks> public IReadOnlyList<IReadOnlyDictionary<string, IReadOnlyList<PackageVulnerabilityInfo>>>? KnownVulnerabilities { get; } /// <summary>Any exceptions while reading vulnerability data.</summary> /// <remarks>May be null if no exceptions occurred.</remarks> public AggregateException? Exceptions { get; } /// <summary>Creates an instance of the class.</summary> /// <param name="knownVulnerabilities">The value for <see cref="KnownVulnerabilities"/></param> /// <param name="exceptions">The value for <see cref="Exceptions"/></param> /// <exception cref="InvalidOperationException">When both knownVulnerabilities and exceptions are null.</exception> public GetVulnerabilityInfoResult( IReadOnlyList<IReadOnlyDictionary<string, IReadOnlyList<PackageVulnerabilityInfo>>>? knownVulnerabilities, AggregateException? exceptions) { if (knownVulnerabilities == null && exceptions == null) { throw new InvalidOperationException("The result cannot have null known vulnerabilities and no exceptions"); } KnownVulnerabilities = knownVulnerabilities; Exceptions = exceptions; } } }