| File: Descriptor.cs | Web Access |
| Project: src\sdk\src\Containers\Microsoft.NET.Build.Containers\Microsoft.NET.Build.Containers.csproj (Microsoft.NET.Build.Containers) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.Json.Serialization; namespace Microsoft.NET.Build.Containers; /// <summary> /// An OCI Content Descriptor describing a component. /// </summary> /// <remarks> /// <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/descriptor.md"/>. /// </remarks> public readonly record struct Descriptor { /// <summary> /// Media type of the referenced content. /// </summary> /// <remarks> /// Likely to be an OCI media type defined at <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/media-types.md" />. /// </remarks> // TODO: validate against RFC 6838 naming conventions? [JsonPropertyName("mediaType")] public string MediaType { get; init; } /// <summary> /// Digest of the content, specifying algorithm and value. /// </summary> /// <remarks> /// <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/descriptor.md#digests"/> /// </remarks> [JsonPropertyName("digest")] public string Digest { get; init; } /// <summary> /// Digest of the uncompressed content, specifying algorithm and value. /// </summary> /// <remarks> /// <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/descriptor.md#digests"/> /// </remarks> [JsonIgnore] public string? UncompressedDigest { get; init; } /// <summary> /// Size, in bytes, of the raw content. /// </summary> [JsonPropertyName("size")] public long Size { get; init; } /// <summary> /// Optional list of URLs where the content may be downloaded. /// </summary> [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string[]? Urls { get; init; } = null; /// <summary> /// Arbitrary metadata for this descriptor. /// </summary> /// <remarks> /// <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/annotations.md"/> /// </remarks> [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public Dictionary<string, string?>? Annotations { get; init; } = null; /// <summary> /// Embedded representation of the referenced content, base-64 encoded. /// </summary> /// <remarks> /// <see href="https://github.com/opencontainers/image-spec/blob/7b36cea86235157d78528944cb94c3323ee0905c/descriptor.md#embedded-content"/> /// </remarks> [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Data { get; init; } = null; public Descriptor(string mediaType, string digest, long size) { MediaType = mediaType; Digest = digest; Size = size; } }