From e342d6f010445526c22456704f756b6fa4a08575 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Fri, 16 Aug 2024 01:34:43 +0200 Subject: [PATCH] [backend/asp] Improve XML error responses --- Iceshrimp.Shared/Schemas/Web/ErrorResponse.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Iceshrimp.Shared/Schemas/Web/ErrorResponse.cs b/Iceshrimp.Shared/Schemas/Web/ErrorResponse.cs index b62c66f8..47481a13 100644 --- a/Iceshrimp.Shared/Schemas/Web/ErrorResponse.cs +++ b/Iceshrimp.Shared/Schemas/Web/ErrorResponse.cs @@ -7,8 +7,8 @@ namespace Iceshrimp.Shared.Schemas.Web; [XmlRoot("Error")] public class ErrorResponse { - [XmlElement("Code")] public required int StatusCode { get; set; } - [XmlElement("Error")] public required string Error { get; set; } + [XmlElement("Status")] public required int StatusCode { get; set; } + [XmlElement("Error")] public required string Error { get; set; } [XmlElement("Message")] [JI(Condition = JsonIgnoreCondition.WhenWritingNull)] @@ -22,10 +22,25 @@ public class ErrorResponse [JI(Condition = JsonIgnoreCondition.WhenWritingNull)] public IDictionary? Errors { get; set; } + [XmlArray("ValidationErrors")] + [XmlArrayItem("Error")] + [JI] + public XmlValidationError[]? XmlErrors + { + get => Errors?.SelectMany(x => x.Value.Select(i => new XmlValidationError { Element = x.Key, Error = i })) + .ToArray(); + set => Errors = value?.ToDictionary(p => p.Element, p => (string[]) [p.Error]); + } + [XmlElement("Source")] [JI(Condition = JsonIgnoreCondition.WhenWritingNull)] public string? Source { get; set; } - [XmlElement("RequestId")] - public required string RequestId { get; set; } + [XmlElement("RequestId")] public required string RequestId { get; set; } +} + +public class XmlValidationError +{ + [XmlAttribute("Element")] public required string Element { get; set; } + [XmlAttribute("Error")] public required string Error { get; set; } } \ No newline at end of file