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