|
15 | 15 | using System.Collections.Specialized; |
16 | 16 | using Microsoft.Extensions.Logging; |
17 | 17 | using Microsoft.DevProxy.Abstractions.LanguageModel; |
| 18 | +using System.Text.Json.Serialization; |
18 | 19 |
|
19 | 20 | namespace Microsoft.DevProxy.Plugins.RequestLogs; |
20 | 21 |
|
@@ -42,11 +43,18 @@ public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion) |
42 | 43 | } |
43 | 44 | } |
44 | 45 |
|
| 46 | +[JsonConverter(typeof(JsonStringEnumConverter))] |
| 47 | +internal enum SpecVersion |
| 48 | +{ |
| 49 | + v2_0, |
| 50 | + v3_0 |
| 51 | +} |
| 52 | + |
45 | 53 | internal class OpenApiSpecGeneratorPluginConfiguration |
46 | 54 | { |
47 | 55 | public bool IncludeOptionsRequests { get; set; } = false; |
48 | 56 |
|
49 | | - public string SpecVersion { get; set; } = "3"; |
| 57 | + public SpecVersion SpecVersion { get; set; } = SpecVersion.v3_0; |
50 | 58 | } |
51 | 59 |
|
52 | 60 | public class OpenApiSpecGeneratorPlugin(IPluginEvents pluginEvents, IProxyContext context, ILogger logger, ISet<UrlToWatch> urlsToWatch, IConfigurationSection? configSection = null) : BaseReportingPlugin(pluginEvents, context, logger, urlsToWatch, configSection) |
@@ -294,12 +302,6 @@ public override async Task RegisterAsync() |
294 | 302 |
|
295 | 303 | ConfigSection?.Bind(_configuration); |
296 | 304 |
|
297 | | - if (_configuration.SpecVersion != "2" && _configuration.SpecVersion != "3") |
298 | | - { |
299 | | - Logger.LogError("OpenAPI spec version is not supported. Supported versions are 2 and 3."); |
300 | | - return; |
301 | | - } |
302 | | - |
303 | 305 | PluginEvents.AfterRecordingStop += AfterRecordingStopAsync; |
304 | 306 | } |
305 | 307 |
|
@@ -364,7 +366,12 @@ request.Context is null || |
364 | 366 | var server = openApiDoc.Servers.First(); |
365 | 367 | var fileName = GetFileNameFromServerUrl(server.Url); |
366 | 368 |
|
367 | | - var openApiSpecVersion = _configuration.SpecVersion == "2" ? OpenApiSpecVersion.OpenApi2_0 : OpenApiSpecVersion.OpenApi3_0; |
| 369 | + var openApiSpecVersion = _configuration.SpecVersion switch |
| 370 | + { |
| 371 | + SpecVersion.v2_0 => OpenApiSpecVersion.OpenApi2_0, |
| 372 | + SpecVersion.v3_0 => OpenApiSpecVersion.OpenApi3_0, |
| 373 | + _ => OpenApiSpecVersion.OpenApi3_0 |
| 374 | + }; |
368 | 375 |
|
369 | 376 | var docString = openApiDoc.SerializeAsJson(openApiSpecVersion); |
370 | 377 |
|
|
0 commit comments