diff --git a/src/Refitter.Core/ParameterExtractor.cs b/src/Refitter.Core/ParameterExtractor.cs index 8f7148f9..b1387f1f 100644 --- a/src/Refitter.Core/ParameterExtractor.cs +++ b/src/Refitter.Core/ParameterExtractor.cs @@ -15,21 +15,27 @@ public static IEnumerable GetParameters(CSharpClientGenerator generator, .Where(p => p.Kind == OpenApiParameterKind.Path) .Select(p => $"{generator.GetTypeName(p.ActualTypeSchema, true, null)} {p.Name}") .ToList(); - + var queryParameters = operation.Parameters .Where(p => p.Kind == OpenApiParameterKind.Query) .Select(p => $"[Query(CollectionFormat.Multi)]{GetBodyParameterType(generator, p)} {p.Name}") .ToList(); var bodyParameters = operation.Parameters - .Where(p => p.Kind == OpenApiParameterKind.Body) + .Where(p => p.Kind == OpenApiParameterKind.Body && !p.IsBinaryBodyParameter) .Select(p => $"[Body]{GetBodyParameterType(generator, p)} {p.Name}") .ToList(); + var multipartFormParameters = operation.Parameters + .Where(p => p.Kind == OpenApiParameterKind.Body && p.IsBinaryBodyParameter) + .Select(p => $"[Body(BodySerializationMethod.UrlEncoded)] Dictionary {p.Name}") + .ToList(); + var parameters = new List(); parameters.AddRange(routeParameters); parameters.AddRange(queryParameters); parameters.AddRange(bodyParameters); + parameters.AddRange(multipartFormParameters); return parameters; }