using System; using System.Collections.Generic; using System.Linq; namespace StardewModdingAPI.Web.ViewModels.JsonValidator { /// The view model for the JSON validator page. public class JsonValidatorModel { /********* ** Accessors *********/ /// Whether to show the edit view. public bool IsEditView { get; } /// The paste ID. public string? PasteID { get; } /// The schema name with which the JSON was validated. public string? SchemaName { get; } /// The supported JSON schemas (names indexed by ID). public IDictionary SchemaFormats { get; } /// The validated content. public string? Content { get; set; } /// The schema validation errors, if any. public JsonValidatorErrorModel[] Errors { get; set; } = Array.Empty(); /// A non-blocking warning while uploading the file. public string? UploadWarning { get; set; } /// When the uploaded file will no longer be available. public DateTimeOffset? Expiry { get; set; } /// An error which occurred while uploading the JSON. public string? UploadError { get; set; } /// An error which occurred while parsing the JSON. public string? ParseError { get; set; } /// A web URL to the user-facing format documentation. public string? FormatUrl { get; set; } /********* ** Public methods *********/ /// Construct an instance. /// The stored file ID. /// The schema name with which the JSON was validated. /// The supported JSON schemas (names indexed by ID). /// Whether to show the edit view. public JsonValidatorModel(string? pasteID, string? schemaName, IDictionary schemaFormats, bool isEditView) { this.PasteID = pasteID; this.SchemaName = schemaName; this.SchemaFormats = schemaFormats; this.IsEditView = isEditView; } /// Set the validated content. /// The validated content. /// When the uploaded file will no longer be available. /// A non-blocking warning while uploading the log. public JsonValidatorModel SetContent(string content, DateTimeOffset? expiry, string? uploadWarning = null) { this.Content = content; this.Expiry = expiry; this.UploadWarning = uploadWarning; return this; } /// Set the error which occurred while uploading the JSON. /// The error message. public JsonValidatorModel SetUploadError(string error) { this.UploadError = error; return this; } /// Set the error which occurred while parsing the JSON. /// The error message. public JsonValidatorModel SetParseError(string error) { this.ParseError = error; return this; } /// Add validation errors to the response. /// The schema validation errors. public JsonValidatorModel AddErrors(params JsonValidatorErrorModel[] errors) { this.Errors = this.Errors.Concat(errors).ToArray(); return this; } } }