using System; using System.Runtime.Serialization; using GitHub.Core.WebApi; using GitHub.Services.Common; using GitHub.Services.WebApi; namespace GitHub.Build.WebApi { /// /// Represents a folder that contains build definitions. /// [DataContract] public class Folder : ISecuredObject { public Folder() { } /// /// The full path. /// [DataMember(EmitDefaultValue = false)] public String Path { get; set; } /// /// The description. /// [DataMember(EmitDefaultValue = false)] public String Description { get; set; } /// /// The date the folder was created. /// [DataMember(EmitDefaultValue = false)] public DateTime CreatedOn { get; set; } /// /// The process or person who created the folder. /// [DataMember(EmitDefaultValue = false)] public IdentityRef CreatedBy { get; set; } /// /// The date the folder was last changed. /// [DataMember(EmitDefaultValue = false)] public DateTime? LastChangedDate { get; set; } /// /// The process or person that last changed the folder. /// [DataMember(EmitDefaultValue = false)] public IdentityRef LastChangedBy { get; set; } /// /// The project. /// [DataMember(EmitDefaultValue = false)] public TeamProjectReference Project { get; set; } #region ISecuredObject implementation // We don't have folder-specific permissions. Folders are secured by the project. public Guid NamespaceId { get { ArgumentUtility.CheckForNull(Project, nameof(Project)); return ((ISecuredObject)Project).NamespaceId; } } public Int32 RequiredPermissions { get { ArgumentUtility.CheckForNull(Project, nameof(Project)); return ((ISecuredObject)Project).RequiredPermissions; } } public String GetToken() { ArgumentUtility.CheckForNull(Project, nameof(Project)); return ((ISecuredObject)Project).GetToken(); } #endregion } }