@@ -15,7 +15,8 @@ private sealed class OperationVisitor :
1515 private Dictionary < IOpenApiParameter , JsonReference > _parameterSchemaReferences = new ( ) ;
1616 private JsonReference ? _bodySchemaReference ;
1717 private readonly Dictionary < IOpenApiResponse , IOpenApiResponseVisitor > _responseVisitors = new ( ) ;
18-
18+ private JsonReference ? _formDataSchemaReference ;
19+
1920 private OperationVisitor ( OpenApiReference < OpenApiOperation > openApiReference ) : base ( openApiReference )
2021 {
2122 VisitParameters ( ) ;
@@ -36,6 +37,7 @@ private void VisitParameters()
3637 new JsonReference ( Reference . Uri , parametersPointer . ToString ( ) . AsSpan ( ) ) ) ) ;
3738 _parameterSchemaReferences = parametersVisitor . Schemas ;
3839 _bodySchemaReference = parametersVisitor . BodySchema ;
40+ _formDataSchemaReference = parametersVisitor . FormData ;
3941 }
4042
4143 private void VisitResponses ( )
@@ -58,8 +60,8 @@ internal static OperationVisitor Visit(
5860 public JsonReference GetSchemaReference ( IOpenApiParameter parameter ) =>
5961 _parameterSchemaReferences [ parameter ] ;
6062
61- public JsonReference GetSchemaReference ( IOpenApiMediaType requestBodyContent ) =>
62- _bodySchemaReference ?? throw new InvalidOperationException ( "Operation doesn't define a body" ) ;
63+ public JsonReference GetSchemaReference ( IOpenApiMediaType mediaType ) =>
64+ _bodySchemaReference ?? _formDataSchemaReference ?? throw new InvalidOperationException ( $ "Operation { Pointer } doesn't define a body or formData ") ;
6365
6466 public IOpenApiResponseVisitor Visit ( IOpenApiResponse response ) =>
6567 _responseVisitors [ response ] ;
0 commit comments