Skip to content

Commit 5bb0e76

Browse files
Prepare for OpenAPI.NET 3.0
Cherry-pick some changes from #3646 to reduce the diff.
1 parent 70e4cb3 commit 5bb0e76

File tree

8 files changed

+36
-23
lines changed

8 files changed

+36
-23
lines changed

Directory.Packages.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<PackageVersion Include="IdentityServer4" Version="3.1.4" />
88
<PackageVersion Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
99
<PackageVersion Include="JunitXml.TestLogger" Version="7.0.2" />
10-
<PackageVersion Include="MartinCostello.Logging.XUnit.v3" Version="0.6.0" />
10+
<PackageVersion Include="MartinCostello.Logging.XUnit.v3" Version="0.7.0" />
1111
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.22" />
1212
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="8.0.22" />
1313
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.1.0" />
@@ -16,11 +16,11 @@
1616
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="4.14.0" />
1717
<PackageVersion Include="Microsoft.OpenApi" Version="2.3.9" />
1818
<PackageVersion Include="Microsoft.OpenApi.YamlReader" Version="2.3.9" />
19-
<PackageVersion Include="Microsoft.Playwright" Version="1.55.0" />
20-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
19+
<PackageVersion Include="Microsoft.Playwright" Version="1.56.0" />
20+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
2121
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
2222
<PackageVersion Include="NSubstitute" Version="5.3.0" />
23-
<PackageVersion Include="NSwag.MSBuild" Version="14.6.1" />
23+
<PackageVersion Include="NSwag.MSBuild" Version="14.6.2" />
2424
<PackageVersion Include="ReportGenerator" Version="5.4.18" />
2525
<PackageVersion Include="Verify.XunitV3" Version="31.5.3" />
2626
<PackageVersion Include="xunit" Version="2.9.3" />

perf/Swashbuckle.AspNetCore.Benchmarks/XmlCommentsBenchmark.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public void Setup()
117117
{
118118
Content = new Dictionary<string, OpenApiMediaType>()
119119
{
120-
["application/json"] = new()
120+
["application/json"] = new OpenApiMediaType()
121121
{
122122
Schema = new OpenApiSchema()
123123
{

src/Swashbuckle.AspNetCore.ApiTesting/RequestValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ private void ValidateContent(IOpenApiRequestBody requestBodySpec, OpenApiDocumen
110110
return;
111111
}
112112

113-
if (!requestBodySpec.Content.TryGetValue(content.Headers.ContentType.MediaType, out OpenApiMediaType mediaTypeSpec))
113+
if (!requestBodySpec.Content.TryGetValue(content.Headers.ContentType.MediaType, out var mediaTypeSpec))
114114
{
115115
throw new RequestDoesNotMatchSpecException($"Content media type '{content.Headers.ContentType.MediaType}' is not specified");
116116
}

src/Swashbuckle.AspNetCore.ApiTesting/ResponseValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ private void ValidateContent(
7676
throw new RequestDoesNotMatchSpecException("Expected content is not present");
7777
}
7878

79-
if (!contentSpecs.TryGetValue(content.Headers.ContentType.MediaType, out OpenApiMediaType mediaTypeSpec))
79+
if (!contentSpecs.TryGetValue(content.Headers.ContentType.MediaType, out var mediaTypeSpec))
8080
{
8181
throw new ResponseDoesNotMatchSpecException($"Content media type '{content.Headers.ContentType.MediaType}' is not specified");
8282
}

src/Swashbuckle.AspNetCore.SwaggerGen/SwaggerGenerator/SwaggerGenerator.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,11 @@ private async Task<OpenApiOperation> GenerateOpenApiOperationFromMetadataAsync(
456456
{
457457
foreach (var contentType in requestContentTypes)
458458
{
459-
var contentTypeValue = operation.RequestBody.Content[contentType];
459+
if (operation.RequestBody.Content[contentType] is not OpenApiMediaType contentTypeValue)
460+
{
461+
continue;
462+
}
463+
460464
var fromFormParameters = apiDescription.ParameterDescriptions.Where((p) => p.IsFromForm()).ToList();
461465
ApiParameterDescription bodyParameterDescription = null;
462466
if (fromFormParameters.Count > 0)
@@ -518,7 +522,10 @@ private async Task<OpenApiOperation> GenerateOpenApiOperationFromMetadataAsync(
518522
{
519523
foreach (var content in responseContentTypes)
520524
{
521-
content.Schema = GenerateSchema(responseModel.Type, schemaRepository);
525+
if (content is OpenApiMediaType mediaType)
526+
{
527+
mediaType.Schema = GenerateSchema(responseModel.Type, schemaRepository);
528+
}
522529
}
523530
}
524531
}

src/Swashbuckle.AspNetCore.SwaggerGen/XmlComments/XmlCommentsRequestBodyFilter.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ private void ApplyPropertyTagsForBody(IOpenApiRequestBody requestBody, RequestBo
104104

105105
foreach (var mediaType in requestBody.Content.Values)
106106
{
107-
mediaType.Example = XmlCommentsExampleHelper.Create(context.SchemaRepository, mediaType.Schema, example);
107+
if (mediaType is OpenApiMediaType concrete)
108+
{
109+
concrete.Example = XmlCommentsExampleHelper.Create(context.SchemaRepository, concrete.Schema, example);
110+
}
108111
}
109112
}
110113

@@ -160,7 +163,10 @@ private void ApplyParamTagsForBody(IOpenApiRequestBody requestBody, RequestBodyF
160163

161164
foreach (var mediaType in requestBody.Content.Values)
162165
{
163-
mediaType.Example = XmlCommentsExampleHelper.Create(context.SchemaRepository, mediaType.Schema, example);
166+
if (mediaType is OpenApiMediaType concrete)
167+
{
168+
concrete.Example = XmlCommentsExampleHelper.Create(context.SchemaRepository, concrete.Schema, example);
169+
}
164170
}
165171
}
166172
}

test/Swashbuckle.AspNetCore.SwaggerGen.Test/SwaggerGenerator/SwaggerGeneratorTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public void GetSwagger_GenerateProducesSchemas_ForProvidedOpenApiOperation()
210210
{
211211
Content = new Dictionary<string, OpenApiMediaType>()
212212
{
213-
["application/someMediaType"] = new()
213+
["application/someMediaType"] = new OpenApiMediaType()
214214
}
215215
}
216216
}
@@ -266,7 +266,7 @@ public void GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperationAndApp
266266
{
267267
Content = new Dictionary<string, OpenApiMediaType>()
268268
{
269-
["application/someMediaType"] = new()
269+
["application/someMediaType"] = new OpenApiMediaType()
270270
}
271271
},
272272
Parameters =
@@ -2318,7 +2318,7 @@ public void GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperationWithSe
23182318
{
23192319
Content = new Dictionary<string, OpenApiMediaType>()
23202320
{
2321-
["application/someMediaType"] = new()
2321+
["application/someMediaType"] = new OpenApiMediaType()
23222322
}
23232323
}
23242324
}
@@ -2383,7 +2383,7 @@ public void GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperationWithIF
23832383
{
23842384
Content = new Dictionary<string, OpenApiMediaType>()
23852385
{
2386-
["application/someMediaType"] = new()
2386+
["application/someMediaType"] = new OpenApiMediaType()
23872387
}
23882388
}
23892389
}
@@ -2445,7 +2445,7 @@ public void GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperationWithIF
24452445
{
24462446
Content = new Dictionary<string, OpenApiMediaType>()
24472447
{
2448-
["application/someMediaType"] = new()
2448+
["application/someMediaType"] = new OpenApiMediaType()
24492449
}
24502450
}
24512451
}
@@ -2509,7 +2509,7 @@ public void GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperationWithSt
25092509
{
25102510
Content = new Dictionary<string, OpenApiMediaType>()
25112511
{
2512-
["application/someMediaType"] = new()
2512+
["application/someMediaType"] = new OpenApiMediaType()
25132513
}
25142514
}
25152515
}

test/Swashbuckle.AspNetCore.SwaggerGen.Test/VerifyTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public async Task ActionWithProducesAttributeAndProvidedOpenApiOperation()
141141
{
142142
Content = new Dictionary<string, OpenApiMediaType>()
143143
{
144-
["application/someMediaType"] = new()
144+
["application/someMediaType"] = new OpenApiMediaType()
145145
}
146146
}
147147
}
@@ -192,7 +192,7 @@ public async Task ActionWithConsumesAttributeAndProvidedOpenApiOperation()
192192
{
193193
Content = new Dictionary<string, OpenApiMediaType>()
194194
{
195-
["application/someMediaType"] = new()
195+
["application/someMediaType"] = new OpenApiMediaType()
196196
}
197197
}
198198
}
@@ -1266,7 +1266,7 @@ public async Task GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperation
12661266
{
12671267
Content = new Dictionary<string, OpenApiMediaType>()
12681268
{
1269-
["application/someMediaType"] = new()
1269+
["application/someMediaType"] = new OpenApiMediaType()
12701270
}
12711271
}
12721272
}
@@ -1323,7 +1323,7 @@ public async Task GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperation
13231323
{
13241324
Content = new Dictionary<string, OpenApiMediaType>()
13251325
{
1326-
["application/someMediaType"] = new()
1326+
["application/someMediaType"] = new OpenApiMediaType()
13271327
}
13281328
}
13291329
}
@@ -1374,7 +1374,7 @@ public async Task GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperation
13741374
{
13751375
Content = new Dictionary<string, OpenApiMediaType>()
13761376
{
1377-
["application/someMediaType"] = new()
1377+
["application/someMediaType"] = new OpenApiMediaType()
13781378
}
13791379
}
13801380
}
@@ -1425,7 +1425,7 @@ public async Task GetSwagger_GenerateConsumesSchemas_ForProvidedOpenApiOperation
14251425
{
14261426
Content = new Dictionary<string, OpenApiMediaType>()
14271427
{
1428-
["application/someMediaType"] = new()
1428+
["application/someMediaType"] = new OpenApiMediaType()
14291429
}
14301430
}
14311431
}

0 commit comments

Comments
 (0)