namespace StardewModdingAPI.Web.Framework.ModRepositories { /// Generic metadata about a mod. internal class ModInfoModel { /********* ** Accessors *********/ /// The mod name. public string Name { get; set; } /// The mod's latest version. public string Version { get; set; } /// The mod's latest optional or prerelease version, if newer than . public string PreviewVersion { get; set; } /// The mod's web URL. public string Url { get; set; } /// The license URL, if available. public string LicenseUrl { get; set; } /// The license name, if available. public string LicenseName { get; set; } /// The mod availability status on the remote site. public RemoteModStatus Status { get; set; } = RemoteModStatus.Ok; /// The error message indicating why the mod is invalid (if applicable). public string Error { get; set; } /********* ** Public methods *********/ /// Construct an empty instance. public ModInfoModel() { } /// Construct an instance. /// The mod name. /// The semantic version for the mod's latest release. /// The semantic version for the mod's latest preview release, if available and different from . /// The mod's web URL. public ModInfoModel(string name, string version, string url, string previewVersion = null) { this .SetBasicInfo(name, url) .SetVersions(version, previewVersion); } /// Set the basic mod info. /// The mod name. /// The mod's web URL. public ModInfoModel SetBasicInfo(string name, string url) { this.Name = name; this.Url = url; return this; } /// Set the mod version info. /// The semantic version for the mod's latest release. /// The semantic version for the mod's latest preview release, if available and different from . public ModInfoModel SetVersions(string version, string previewVersion = null) { this.Version = version; this.PreviewVersion = previewVersion; return this; } /// Set the license info, if available. /// The license URL. /// The license name. public ModInfoModel SetLicense(string url, string name) { this.LicenseUrl = url; this.LicenseName = name; return this; } /// Set a mod error. /// The mod availability status on the remote site. /// The error message indicating why the mod is invalid (if applicable). public ModInfoModel SetError(RemoteModStatus status, string error) { this.Status = status; this.Error = error; return this; } } }