diff --git a/ApiCodeGenerator.OpenApi.Refit.Tests/ApiCodeGenerator.OpenApi.Refit.Tests.csproj b/ApiCodeGenerator.OpenApi.Refit.Tests/ApiCodeGenerator.OpenApi.Refit.Tests.csproj index 3c25903..4a4508c 100644 --- a/ApiCodeGenerator.OpenApi.Refit.Tests/ApiCodeGenerator.OpenApi.Refit.Tests.csproj +++ b/ApiCodeGenerator.OpenApi.Refit.Tests/ApiCodeGenerator.OpenApi.Refit.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/ApiCodeGenerator.OpenApi.Refit.Tests/FormDataTests.cs b/ApiCodeGenerator.OpenApi.Refit.Tests/FormDataTests.cs index 80c3217..2f9b3dc 100644 --- a/ApiCodeGenerator.OpenApi.Refit.Tests/FormDataTests.cs +++ b/ApiCodeGenerator.OpenApi.Refit.Tests/FormDataTests.cs @@ -56,12 +56,12 @@ public async Task FormData() " /// valid input\n" + " /// A server side error occurred.\n" + " [Post(\"/test\")]\n" + - $" System.Threading.Tasks.Task GetTest([Body(BodySerializationMethod.UrlEncoded)]GetTestFormData body);\n" + + $" System.Threading.Tasks.Task GetTest([Body(BodySerializationMethod.UrlEncoded)]Body body);\n" + "\n" + " }\n"; var expectedClassCode = $" {GENERATED_CODE}\n" + - " public partial class GetTestFormData\n" + + " public partial class Body\n" + " {\n" + " [Newtonsoft.Json.JsonProperty(\"testProp\", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]\n" + " public string TestProp { get; set; }\n" + diff --git a/ApiCodeGenerator.OpenApi.Refit.Tests/FunctionalTests.cs b/ApiCodeGenerator.OpenApi.Refit.Tests/FunctionalTests.cs index 41ac0e2..67fb187 100644 --- a/ApiCodeGenerator.OpenApi.Refit.Tests/FunctionalTests.cs +++ b/ApiCodeGenerator.OpenApi.Refit.Tests/FunctionalTests.cs @@ -483,6 +483,36 @@ public void GenerateClientInterface_NotBringDefaultParamsToEnd_IfOptParamDisable RunTest(settings, expected, "defaultParamTestSchema.json"); } + [Test] + public void ExcludeParam() + { + var settings = new RefitCodeGeneratorSettings + { + GenerateClientInterfaces = true, + ExcludedParameterNames = [ + "paramWithDef" + ], + CSharpGeneratorSettings = { Namespace = "TestNS" }, + }; + + var expected = + " public partial interface IClient\n" + + " {\n" + + " /// \n" + + " /// Test operation\n" + + " /// \n" + + " /// Параметр передаваемый в строке запроса\n" + + " /// Запрос успешно принят\n" + + " /// A server side error occurred.\n" + + " [Get(\"/testService/testOper\")]\n" + + " System.Threading.Tasks.Task GetTestOper([Query]string queryParametr);\n" + + "\n" + + " }\n"; + + //Act & Assert + RunTest(settings, expected, "defaultParamTestSchema.json"); + } + [Test] public void GenerateClientInterface_AuthHeaderParameter() { diff --git a/ApiCodeGenerator.OpenApi.Refit/ApiCodeGenerator.OpenApi.Refit.csproj b/ApiCodeGenerator.OpenApi.Refit/ApiCodeGenerator.OpenApi.Refit.csproj index 2c29b70..cc1f1eb 100644 --- a/ApiCodeGenerator.OpenApi.Refit/ApiCodeGenerator.OpenApi.Refit.csproj +++ b/ApiCodeGenerator.OpenApi.Refit/ApiCodeGenerator.OpenApi.Refit.csproj @@ -1,4 +1,4 @@ - + Generates code for the Refit library from an OpenApi document. diff --git a/ApiCodeGenerator.OpenApi.Refit/Model/RefitOperationModel.cs b/ApiCodeGenerator.OpenApi.Refit/Model/RefitOperationModel.cs index f3efcd7..9ed42ef 100644 --- a/ApiCodeGenerator.OpenApi.Refit/Model/RefitOperationModel.cs +++ b/ApiCodeGenerator.OpenApi.Refit/Model/RefitOperationModel.cs @@ -178,24 +178,27 @@ internal void InitWrappedQueryParameters() protected override string ResolveParameterType(OpenApiParameter parameter) { - if (ConsumesFormUrlEncoded && parameter.Kind == OpenApiParameterKind.Body) + if (Settings is not null) { - var isNullable = parameter.IsRequired == false || parameter.IsNullable(Settings.CodeGeneratorSettings.SchemaType); - var typeNameHint = $"{Id}FormData"; - return _resolver?.Resolve(parameter.ActualSchema, isNullable, typeNameHint); - } - - if (_resolver is not null && HasFormParameters) - { - var typeName = Settings.BinaryPartType; - if (parameter.IsBinaryBodyParameter || parameter.ActualSchema.IsBinary) + if (ConsumesFormUrlEncoded && parameter.Kind == OpenApiParameterKind.Body) { - return typeName; + var isNullable = parameter.IsRequired == false || parameter.IsNullable(Settings.CodeGeneratorSettings.SchemaType); + var typeNameHint = $"{Id}FormData"; + return _resolver?.Resolve(parameter.ActualSchema, isNullable, typeNameHint); } - if (parameter.ActualSchema.IsArray && parameter.ActualSchema.Item.IsBinary) + if (_resolver is not null && HasFormParameters) { - return $"{Settings.CSharpGeneratorSettings.ArrayType}<{typeName}>"; + var typeName = Settings.BinaryPartType; + if (parameter.IsBinaryBodyParameter || parameter.ActualSchema.IsBinary) + { + return typeName; + } + + if (parameter.ActualSchema.IsArray && parameter.ActualSchema.Item.IsBinary) + { + return $"{Settings.CSharpGeneratorSettings.ArrayType}<{typeName}>"; + } } }