diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index fd53086d2..7cde3f2fb 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; @@ -79,7 +79,7 @@ public static async Task TransformOpenApiDocument(HidiOptions options, ILogger l // Default to yaml and OpenApiVersion 3 during csdl to OpenApi conversion var openApiFormat = options.OpenApiFormat ?? (!string.IsNullOrEmpty(options.OpenApi) ? GetOpenApiFormat(options.OpenApi, logger) : OpenApiFormat.Yaml); - var openApiVersion = options.Version != null ? TryParseOpenApiSpecVersion(options.Version) : OpenApiSpecVersion.OpenApi3_0; + var openApiVersion = options.Version != null ? TryParseOpenApiSpecVersion(options.Version) : OpenApiSpecVersion.OpenApi3_1; // If ApiManifest is provided, set the referenced OpenAPI document var apiDependency = await FindApiDependency(options.FilterOptions.FilterByApiManifest, logger, cancellationToken).ConfigureAwait(false); @@ -768,7 +768,7 @@ internal static async Task PluginManifest(HidiOptions options, ILogger logger, C // Write OpenAPI to Output folder options.Output = new(Path.Combine(options.OutputFolder, "openapi.json")); options.TerseOutput = true; - WriteOpenApi(options, OpenApiFormat.Json, OpenApiSpecVersion.OpenApi3_0, document, logger); + WriteOpenApi(options, OpenApiFormat.Json, OpenApiSpecVersion.OpenApi3_1, document, logger); // Create OpenAIPluginManifest from ApiDependency and OpenAPI document var manifest = new OpenAIPluginManifest diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiSpecVersionHelper.cs b/src/Microsoft.OpenApi.Hidi/OpenApiSpecVersionHelper.cs index 234298481..222f7a8c6 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiSpecVersionHelper.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiSpecVersionHelper.cs @@ -2,7 +2,6 @@ // Licensed under the MIT license. using System; -using System.Linq; namespace Microsoft.OpenApi.Hidi { @@ -14,17 +13,30 @@ public static OpenApiSpecVersion TryParseOpenApiSpecVersion(string value) { throw new InvalidOperationException("Please provide a version"); } - var res = value.Split('.', StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(); + // Split the version string by the dot + var versionSegments = value.Split('.', StringSplitOptions.RemoveEmptyEntries); - if (int.TryParse(res, out var result)) + if (!int.TryParse(versionSegments[0], out var majorVersion) + || !int.TryParse(versionSegments[1], out var minorVersion)) { - if (result is >= 2 and < 3) - { - return OpenApiSpecVersion.OpenApi2_0; - } + throw new InvalidOperationException("Invalid version format. Please provide a valid OpenAPI version (e.g., 2.0, 3.0, 3.1)."); } - return OpenApiSpecVersion.OpenApi3_0; // default + // Check for specific version matches + if (majorVersion == 2) + { + return OpenApiSpecVersion.OpenApi2_0; + } + else if (majorVersion == 3 && minorVersion == 0) + { + return OpenApiSpecVersion.OpenApi3_0; + } + else if (majorVersion == 3 && minorVersion == 1) + { + return OpenApiSpecVersion.OpenApi3_1; + } + + return OpenApiSpecVersion.OpenApi3_1; // default } } }