From b35099e5ab9ba7a0b34aef3725bf30d4f1022e12 Mon Sep 17 00:00:00 2001 From: estrogen elf <87099578+BlossomiShymae@users.noreply.github.com> Date: Tue, 17 Jun 2025 22:16:13 -0500 Subject: [PATCH] fix: case of empty content schema --- Needlework.Net/Helpers/OpenApiHelpers.cs | 50 ++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/Needlework.Net/Helpers/OpenApiHelpers.cs b/Needlework.Net/Helpers/OpenApiHelpers.cs index 00d4a8c..be500d1 100644 --- a/Needlework.Net/Helpers/OpenApiHelpers.cs +++ b/Needlework.Net/Helpers/OpenApiHelpers.cs @@ -15,7 +15,7 @@ namespace Needlework.Net.Helpers if (!TryGetResponse(responses, out var response)) return "none"; - if (response.Content.TryGetValue("application/json", out var media)) + if (TryGetApplicationJsonMedia(response, out var media)) { var schema = media.Schema; return GetSchemaType(schema); @@ -24,6 +24,50 @@ namespace Needlework.Net.Helpers return "none"; } + public static bool TryGetApplicationJsonMedia(OpenApiResponse response, [NotNullWhen(true)] out OpenApiMediaType? media) // Because GetLolGameflowV1SpectateDelayedLaunch has an empty schema with no type... + { + var flag = false; + if (response.Content.TryGetValue("application/json", out var _media)) + { + if (_media?.Schema?.Type != null) + { + media = _media; + flag = true; + } + else + { + media = null; + } + } + else + { + media = null; + } + return flag; + } + + public static bool TryGetApplicationJsonMedia(OpenApiRequestBody requestBody, [NotNullWhen(true)] out OpenApiMediaType? media) + { + var flag = false; + if (requestBody.Content.TryGetValue("application/json", out var _media)) + { + if (_media?.Schema?.Type != null) + { + media = _media; + flag = true; + } + else + { + media = null; + } + } + else + { + media = null; + } + return flag; + } + public static string GetSchemaType(OpenApiSchema? schema) { if (schema == null) return "object"; // Because GetLolVanguardV1Notification exists where it has a required parameter without a type... @@ -121,7 +165,7 @@ namespace Needlework.Net.Helpers public static List GetRequestClasses(OpenApiRequestBody? requestBody, Document document) { if (requestBody == null) return []; - if (requestBody.Content.TryGetValue("application/json", out var media)) + if (TryGetApplicationJsonMedia(requestBody, out var media)) { var rawDocument = document.OpenApiDocument; var schema = media.Schema; @@ -171,7 +215,7 @@ namespace Needlework.Net.Helpers if (!TryGetResponse(responses, out var response)) return []; - if (response.Content.TryGetValue("application/json", out var media)) + if (TryGetApplicationJsonMedia(response, out var media)) { var rawDocument = document.OpenApiDocument; var schema = media.Schema;