43 lines
1.2 KiB
C#
43 lines
1.2 KiB
C#
|
|
using StellaOps.Scanner.Core.Contracts;
|
|
using System;
|
|
using System.Threading;
|
|
|
|
namespace StellaOps.Scanner.Worker.Processing;
|
|
|
|
public sealed class ScanJobContext
|
|
{
|
|
private const string ImageDigestMetadataKey = "image.digest";
|
|
|
|
public ScanJobContext(IScanJobLease lease, TimeProvider timeProvider, DateTimeOffset startUtc, CancellationToken cancellationToken)
|
|
{
|
|
Lease = lease ?? throw new ArgumentNullException(nameof(lease));
|
|
TimeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider));
|
|
StartUtc = startUtc;
|
|
CancellationToken = cancellationToken;
|
|
Analysis = new ScanAnalysisStore();
|
|
}
|
|
|
|
public IScanJobLease Lease { get; }
|
|
|
|
public TimeProvider TimeProvider { get; }
|
|
|
|
public DateTimeOffset StartUtc { get; }
|
|
|
|
public CancellationToken CancellationToken { get; }
|
|
|
|
public string JobId => Lease.JobId;
|
|
|
|
public string ScanId => Lease.ScanId;
|
|
|
|
/// <summary>
|
|
/// Gets the OCI image digest from job metadata, if available.
|
|
/// </summary>
|
|
public string? ImageDigest =>
|
|
Lease.Metadata.TryGetValue(ImageDigestMetadataKey, out var digest) ? digest : null;
|
|
|
|
public string? ReplayBundlePath { get; set; }
|
|
|
|
public ScanAnalysisStore Analysis { get; }
|
|
}
|