From eb2a6497b6225e9aeef449badb7d7c7dfa5c1862 Mon Sep 17 00:00:00 2001 From: Cameron MacFarland Date: Fri, 17 Mar 2023 13:22:50 +0800 Subject: [PATCH] Handle multipart/form-data parameters --- src/Refitter.Core/ParameterExtractor.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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; }