stabilizaiton work - projects rework for maintenanceability and ui livening
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace StellaOps.Provcache.Api;
|
||||
|
||||
public static partial class ProvcacheEndpointExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// GET /v1/provcache/{veriKey}/manifest
|
||||
/// </summary>
|
||||
private static async Task<IResult> GetInputManifestAsync(
|
||||
string veriKey,
|
||||
IProvcacheService provcacheService,
|
||||
TimeProvider timeProvider,
|
||||
ILogger<ProvcacheApiEndpoints> logger,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
logger.LogDebug("GET /v1/provcache/{VeriKey}/manifest", veriKey);
|
||||
|
||||
try
|
||||
{
|
||||
// First get the entry to verify it exists
|
||||
var result = await provcacheService.GetAsync(veriKey, bypassCache: false, cancellationToken);
|
||||
|
||||
if (result.Status == ProvcacheResultStatus.CacheMiss)
|
||||
{
|
||||
return Results.NotFound(new ProblemDetails
|
||||
{
|
||||
Title = "Entry not found",
|
||||
Detail = $"No cache entry found for VeriKey: {veriKey}",
|
||||
Status = StatusCodes.Status404NotFound
|
||||
});
|
||||
}
|
||||
|
||||
if (result.Status == ProvcacheResultStatus.Expired)
|
||||
{
|
||||
return Results.NotFound(new ProblemDetails
|
||||
{
|
||||
Title = "Entry expired",
|
||||
Detail = $"Cache entry for VeriKey '{veriKey}' has expired",
|
||||
Status = StatusCodes.Status404NotFound
|
||||
});
|
||||
}
|
||||
|
||||
var entry = result.Entry;
|
||||
if (entry is null)
|
||||
{
|
||||
return Results.NotFound(new ProblemDetails
|
||||
{
|
||||
Title = "Entry not found",
|
||||
Detail = $"No cache entry found for VeriKey: {veriKey}",
|
||||
Status = StatusCodes.Status404NotFound
|
||||
});
|
||||
}
|
||||
|
||||
// Build the input manifest from the entry metadata
|
||||
// In a full implementation, we'd resolve these hashes to more detailed metadata
|
||||
// from their respective stores (SBOM store, VEX store, policy registry, etc.)
|
||||
var manifest = BuildInputManifest(entry, timeProvider);
|
||||
|
||||
return Results.Ok(manifest);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "Error getting input manifest for VeriKey {VeriKey}", veriKey);
|
||||
return InternalError("Manifest retrieval failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user