Skip to content

Commit af6c187

Browse files
committed
Fix NRE
1 parent cb8f449 commit af6c187

File tree

3 files changed

+48
-15
lines changed

3 files changed

+48
-15
lines changed

ApiCodeGenerator.OpenApi.Refit.Tests/FormDataTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ public async Task FormData()
5656
" /// <returns>valid input</returns>\n" +
5757
" /// <exception cref=\"Refit.ApiException\">A server side error occurred.</exception>\n" +
5858
" [Post(\"/test\")]\n" +
59-
$" System.Threading.Tasks.Task GetTest([Body(BodySerializationMethod.UrlEncoded)]GetTestFormData body);\n" +
59+
$" System.Threading.Tasks.Task GetTest([Body(BodySerializationMethod.UrlEncoded)]Body body);\n" +
6060
"\n" +
6161
" }\n";
6262
var expectedClassCode =
6363
$" {GENERATED_CODE}\n" +
64-
" public partial class GetTestFormData\n" +
64+
" public partial class Body\n" +
6565
" {\n" +
6666
" [Newtonsoft.Json.JsonProperty(\"testProp\", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]\n" +
6767
" public string TestProp { get; set; }\n" +

ApiCodeGenerator.OpenApi.Refit.Tests/FunctionalTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,36 @@ public void GenerateClientInterface_NotBringDefaultParamsToEnd_IfOptParamDisable
483483
RunTest(settings, expected, "defaultParamTestSchema.json");
484484
}
485485

486+
[Test]
487+
public void ExcludeParam()
488+
{
489+
var settings = new RefitCodeGeneratorSettings
490+
{
491+
GenerateClientInterfaces = true,
492+
ExcludedParameterNames = [
493+
"paramWithDef"
494+
],
495+
CSharpGeneratorSettings = { Namespace = "TestNS" },
496+
};
497+
498+
var expected =
499+
" public partial interface IClient\n" +
500+
" {\n" +
501+
" /// <summary>\n" +
502+
" /// Test operation\n" +
503+
" /// </summary>\n" +
504+
" /// <param name=\"queryParametr\">Параметр передаваемый в строке запроса</param>\n" +
505+
" /// <returns>Запрос успешно принят</returns>\n" +
506+
" /// <exception cref=\"Refit.ApiException\">A server side error occurred.</exception>\n" +
507+
" [Get(\"/testService/testOper\")]\n" +
508+
" System.Threading.Tasks.Task<TestOperResponse> GetTestOper([Query]string queryParametr);\n" +
509+
"\n" +
510+
" }\n";
511+
512+
//Act & Assert
513+
RunTest(settings, expected, "defaultParamTestSchema.json");
514+
}
515+
486516
[Test]
487517
public void GenerateClientInterface_AuthHeaderParameter()
488518
{

ApiCodeGenerator.OpenApi.Refit/Model/RefitOperationModel.cs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -178,24 +178,27 @@ internal void InitWrappedQueryParameters()
178178

179179
protected override string ResolveParameterType(OpenApiParameter parameter)
180180
{
181-
if (ConsumesFormUrlEncoded && parameter.Kind == OpenApiParameterKind.Body)
181+
if (Settings is not null)
182182
{
183-
var isNullable = parameter.IsRequired == false || parameter.IsNullable(Settings.CodeGeneratorSettings.SchemaType);
184-
var typeNameHint = $"{Id}FormData";
185-
return _resolver?.Resolve(parameter.ActualSchema, isNullable, typeNameHint);
186-
}
187-
188-
if (_resolver is not null && HasFormParameters)
189-
{
190-
var typeName = Settings.BinaryPartType;
191-
if (parameter.IsBinaryBodyParameter || parameter.ActualSchema.IsBinary)
183+
if (ConsumesFormUrlEncoded && parameter.Kind == OpenApiParameterKind.Body)
192184
{
193-
return typeName;
185+
var isNullable = parameter.IsRequired == false || parameter.IsNullable(Settings.CodeGeneratorSettings.SchemaType);
186+
var typeNameHint = $"{Id}FormData";
187+
return _resolver?.Resolve(parameter.ActualSchema, isNullable, typeNameHint);
194188
}
195189

196-
if (parameter.ActualSchema.IsArray && parameter.ActualSchema.Item.IsBinary)
190+
if (_resolver is not null && HasFormParameters)
197191
{
198-
return $"{Settings.CSharpGeneratorSettings.ArrayType}<{typeName}>";
192+
var typeName = Settings.BinaryPartType;
193+
if (parameter.IsBinaryBodyParameter || parameter.ActualSchema.IsBinary)
194+
{
195+
return typeName;
196+
}
197+
198+
if (parameter.ActualSchema.IsArray && parameter.ActualSchema.Item.IsBinary)
199+
{
200+
return $"{Settings.CSharpGeneratorSettings.ArrayType}<{typeName}>";
201+
}
199202
}
200203
}
201204

0 commit comments

Comments
 (0)