using System; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.Serialization; namespace GitHub.DistributedTask.WebApi { /// /// Represents a downloadable package. /// [DataContract] public class PackageMetadata { /// /// The type of package (e.g. "agent") /// [DataMember] public String Type { get; set; } /// /// The platform (win7, linux, etc.) /// [DataMember] public String Platform { get; set; } /// /// The date the package was created /// [DataMember(EmitDefaultValue = false)] public DateTime CreatedOn { get; set; } /// /// The package version. /// [DataMember(EmitDefaultValue = false)] public PackageVersion Version { get; set; } /// /// A direct link to download the package. /// [DataMember] public String DownloadUrl { get; set; } /// /// File ID in file service /// [DataMember(EmitDefaultValue = false)] [EditorBrowsable(EditorBrowsableState.Never)] public Int32? FileId { get; set; } /// /// Auth token to download the package /// [DataMember(EmitDefaultValue = false)] public String Token { get; set; } /// /// SHA256 hash /// [DataMember(EmitDefaultValue = false)] public String HashValue { get; set; } /// /// A link to documentation /// [DataMember] public String InfoUrl { get; set; } /// /// The UI uses this to display instructions, e.g. "unzip MyAgent.zip" /// [DataMember] public String Filename { get; set; } /// /// A set of trimmed down packages: /// - the package without 'externals' /// - the package without 'dotnet runtime' /// - the package without 'dotnet runtime' and 'externals' /// [DataMember(EmitDefaultValue = false)] public List TrimmedPackages { get; set; } } [DataContract] public class TrimmedPackageMetadata { [DataMember(EmitDefaultValue = false)] public string HashValue { get; set; } [DataMember(EmitDefaultValue = false)] public string DownloadUrl { get; set; } public Dictionary TrimmedContents { get { if (m_trimmedContents == null) { m_trimmedContents = new Dictionary(StringComparer.OrdinalIgnoreCase); } return m_trimmedContents; } } [DataMember(Name = "TrimmedContents", EmitDefaultValue = false)] private Dictionary m_trimmedContents; } }