summary refs log tree commit diff
path: root/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs
diff options
context:
space:
mode:
Diffstat (limited to 'extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs')
-rw-r--r--extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs22
1 files changed, 20 insertions, 2 deletions
diff --git a/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs

index 8995dee5..1dfe8548 100644 --- a/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs +++ b/extra/admin-api/Utilities/Spacebar.AdminApi.TestClient/Classes/OpenAPI/OpenAPISchema.cs
@@ -1,6 +1,8 @@ using System.Collections.Frozen; using System.Text.Json; using System.Text.Json.Serialization; +using System.Text.RegularExpressions; +using ArcaneLibs.Extensions; namespace Spacebar.AdminApi.TestClient.Classes.OpenAPI; @@ -187,6 +189,8 @@ public class OpenApiSchemaRef { public List<OpenApiSchemaRef>? AnyOf { get; set; } public List<object>? Enum { get; set; } public string? Format { get; set; } + public List<OpenApiSchemaRef>? Items { get; set; } + public Regex? Pattern { get; set; } public OpenApiSchemaRef? GetReferencedSchema(OpenApiSchema schema) { if (Ref == null) return null; @@ -271,7 +275,7 @@ public class OpenApiSchemaRefConverter : JsonConverter<OpenApiSchemaRef> { else if (property.Value.ValueKind == JsonValueKind.Null) schemaRef.Default = null; else if (property.Value.ValueKind == JsonValueKind.Array) - if (property.Value.GetArrayLength() > 0) throw new JsonException("Expected empty array in default"); + if (property.Value.GetArrayLength() > 0) throw new JsonException($"Expected empty array in default, got: {property.Value.ToJson()}"); else schemaRef.Default = Array.Empty<object>(); else throw new JsonException($"Expected string|int|bool|null in default, got {property.Value.ValueKind}"); break; @@ -303,8 +307,22 @@ public class OpenApiSchemaRefConverter : JsonConverter<OpenApiSchemaRef> { case "additionalProperties": //TODO case "patternProperties": // Side effect of using JsonValue in typescript break; + case "items": + // Console.WriteLine($"Got 'items' property in OpenApiSchemaRef! NodeType: {property.Value.ValueKind}, Value: {property.Value.ToJson()}"); + try { + schemaRef.Items = property.Value.ValueKind is JsonValueKind.Array ? property.Value.Deserialize<List<OpenApiSchemaRef>>(options) : [property.Value.Deserialize<OpenApiSchemaRef>(options)!]; + } catch (Exception ex) { + throw new JsonException($"Error deserializing 'items' property: {ex.Message}\nValue: {property.Value.ToJson()}", ex); + } + break; + case "pattern": + var patternStr = property.Value.GetString(); + if (patternStr != null) { + schemaRef.Pattern = new Regex(patternStr); + } + break; default: - Console.WriteLine($"Got unexpected prop {property.Name} in OpenApiSchemaRef!"); + Console.WriteLine($"Got unexpected prop {property.Name} in OpenApiSchemaRef! Value: {property.Value.ToJson()}"); break; } }