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;