Update Excititor ingestion plan and enhance policy endpoints for overlay integration
This commit is contained in:
@@ -106,12 +106,8 @@ public static class PolicyEndpoints
|
||||
}
|
||||
|
||||
var claimResults = await FallbackClaimsAsync(claimStore, advisories, purls, providerFilter, statusFilter, request.Limit, cancellationToken).ConfigureAwait(false);
|
||||
var groupedClaims = claimResults
|
||||
.GroupBy(c => c.AdvisoryKey, StringComparer.OrdinalIgnoreCase)
|
||||
.Select(group => new PolicyVexLookupItem(group.Key, new[] { group.Key }, group.ToList()))
|
||||
.ToList();
|
||||
|
||||
return Results.Ok(new PolicyVexLookupResponse(groupedClaims, claimResults.Count, timeProvider.GetUtcNow()));
|
||||
var totalStatements = claimResults.Sum(item => item.Statements.Count);
|
||||
return Results.Ok(new PolicyVexLookupResponse(claimResults, totalStatements, timeProvider.GetUtcNow()));
|
||||
}
|
||||
|
||||
private static async Task<IReadOnlyList<GraphOverlayItem>> ResolveOverlaysAsync(
|
||||
@@ -184,7 +180,7 @@ public static class PolicyEndpoints
|
||||
Metadata: metadata);
|
||||
}
|
||||
|
||||
private static async Task<List<PolicyVexStatement>> FallbackClaimsAsync(
|
||||
private static async Task<List<PolicyVexLookupItem>> FallbackClaimsAsync(
|
||||
IVexClaimStore claimStore,
|
||||
IReadOnlyList<string> advisories,
|
||||
IReadOnlyList<string> purls,
|
||||
@@ -193,7 +189,7 @@ public static class PolicyEndpoints
|
||||
int limit,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var results = new List<PolicyVexStatement>();
|
||||
var results = new List<PolicyVexLookupItem>();
|
||||
foreach (var advisory in advisories)
|
||||
{
|
||||
var claims = await claimStore.FindByVulnerabilityAsync(advisory, limit, cancellationToken).ConfigureAwait(false);
|
||||
@@ -201,15 +197,18 @@ public static class PolicyEndpoints
|
||||
var filtered = claims
|
||||
.Where(c => providers.Count == 0 || providers.Contains(c.ProviderId, StringComparer.OrdinalIgnoreCase))
|
||||
.Where(c => statuses.Count == 0 || statuses.Contains(c.Status.ToString().ToLowerInvariant()))
|
||||
.Where(c => purls.Count == 0 || purls.Contains(c.Product.Key, StringComparer.OrdinalIgnoreCase))
|
||||
.Where(c => purls.Count == 0
|
||||
|| purls.Contains(c.Product.Key, StringComparer.OrdinalIgnoreCase)
|
||||
|| (!string.IsNullOrWhiteSpace(c.Product.Purl) && purls.Contains(c.Product.Purl, StringComparer.OrdinalIgnoreCase)))
|
||||
.OrderByDescending(c => c.LastSeen)
|
||||
.ThenBy(c => c.ProviderId, StringComparer.Ordinal)
|
||||
.Take(limit);
|
||||
.Take(limit)
|
||||
.Select(MapClaimStatement)
|
||||
.ToList();
|
||||
|
||||
results.AddRange(filtered.Select(MapClaimStatement));
|
||||
if (results.Count >= limit)
|
||||
if (filtered.Count > 0)
|
||||
{
|
||||
break;
|
||||
results.Add(new PolicyVexLookupItem(advisory, new[] { advisory }, filtered));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user