ln.build/ln.build/repositories/Release.cs

57 lines
1.5 KiB
C#

using System;
using System.Net.Http.Headers;
using System.Runtime;
namespace ln.build.repositories
{
public abstract class Release
{
public string Name { get; set; }
public int Id { get; set; } = -1;
public string TagName { get; set; }
public Boolean IsDraft {get; set; }
public Boolean IsPreRelease {get; set; }
public string TargetCommit { get; set; }
public string Body { get; set; }
public abstract Repository Repository { get; }
public abstract Attachment[] GetAttachments();
public abstract Attachment CreateOrReplaceAttachment(string localPath, string remoteFileName);
public virtual Attachment FindAttachmentByName(string name)
{
foreach (Attachment attachment in GetAttachments())
if (attachment.Name.Equals(name))
return attachment;
return null;
}
}
public abstract class Attachment
{
public abstract Release Release { get; }
public abstract int Id { get; set; }
public abstract string Name { get; set; }
public abstract string DownloadURL { get; set; }
public Attachment()
{
}
public abstract void Create(string localPath);
public abstract void Delete();
public override bool Equals(object obj) => (obj is Attachment attachment) && Id.Equals(attachment.Id);
public override int GetHashCode() => Id.GetHashCode();
}
}