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;
}
}