diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/RestClientProvider.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/RestClientProvider.cs index 9aad66c8d5..659350c73e 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/RestClientProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Providers/RestClientProvider.cs @@ -147,12 +147,19 @@ .. AppendPathParameters(uri, operation, paramMap), .. AppendQueryParameters(uri, operation, paramMap), request.Uri().Assign(uri.ToUri()).Terminate(), .. AppendHeaderParameters(request, operation, paramMap), + .. GetSetContent(request, signature.Parameters), message.Apply(options).Terminate(), Return(message) ]), this); } + private IReadOnlyList GetSetContent(ScopedApi request, IReadOnlyList parameters) + { + var contentParam = parameters.FirstOrDefault(p => ReferenceEquals(p, ScmKnownParameters.BinaryContent)); + return contentParam is null ? [] : [request.SetContent(contentParam)]; + } + private PropertyProvider GetClassifier(InputOperation operation) { if (operation.HttpMethod == HttpMethod.Head.ToString()) diff --git a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/PipelineRequestSnippets.cs b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/PipelineRequestSnippets.cs index feb7942dde..0991f159ca 100644 --- a/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/PipelineRequestSnippets.cs +++ b/packages/http-client-csharp/generator/Microsoft.Generator.CSharp.ClientModel/src/Snippets/PipelineRequestSnippets.cs @@ -20,5 +20,8 @@ public static MethodBodyStatement SetMethod(this ScopedApi pipe public static MethodBodyStatement SetHeaderValue(this ScopedApi pipelineRequest, string name, ValueExpression value) => pipelineRequest.Property(nameof(PipelineRequest.Headers)).Invoke(nameof(PipelineRequestHeaders.Set), Literal(name), value).Terminate(); + + public static MethodBodyStatement SetContent(this ScopedApi pipelineRequest, ValueExpression content) + => pipelineRequest.Property(nameof(PipelineRequest.Content)).Assign(content).Terminate(); } } diff --git a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.RestClient.cs b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.RestClient.cs index 0afc233986..f8cf41d8fb 100644 --- a/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.RestClient.cs +++ b/packages/http-client-csharp/generator/TestProjects/Local/Unbranded-TypeSpec/src/Generated/UnbrandedTypeSpecClient.RestClient.cs @@ -56,6 +56,7 @@ internal PipelineMessage CreateHelloAgainRequest(string p1, string p2, BinaryCon request.Headers.Set("p1", p1); request.Headers.Set("Content-Type", "text/plain"); request.Headers.Set("Accept", "application/json"); + request.Content = content; message.Apply(options); return message; } @@ -74,6 +75,7 @@ internal PipelineMessage CreateNoContentTypeRequest(string p1, string p2, Binary request.Headers.Set("p1", p1); request.Headers.Set("Content-Type", "application/json"); request.Headers.Set("Accept", "application/json"); + request.Content = content; message.Apply(options); return message; } @@ -105,6 +107,7 @@ internal PipelineMessage CreateCreateLiteralRequest(BinaryContent content, Reque request.Uri = uri.ToUri(); request.Headers.Set("Content-Type", "application/json"); request.Headers.Set("Accept", "application/json"); + request.Content = content; message.Apply(options); return message; } @@ -170,6 +173,7 @@ internal PipelineMessage CreatePatchActionRequest(BinaryContent content, Request request.Uri = uri.ToUri(); request.Headers.Set("Content-Type", "application/json"); request.Headers.Set("Accept", "application/json"); + request.Content = content; message.Apply(options); return message; } @@ -279,6 +283,7 @@ internal PipelineMessage CreateInternalProtocolRequest(BinaryContent content, Re request.Uri = uri.ToUri(); request.Headers.Set("Content-Type", "application/json"); request.Headers.Set("Accept", "application/json"); + request.Content = content; message.Apply(options); return message; }