diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props
index dbfe17cde3b0..f7bba64fc777 100644
--- a/eng/Packages.Data.props
+++ b/eng/Packages.Data.props
@@ -243,7 +243,7 @@
-
+
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureClientPlugin.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureClientPlugin.cs
index 49988468dd99..e1041af28cf0 100644
--- a/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureClientPlugin.cs
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureClientPlugin.cs
@@ -1,9 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using Microsoft.CodeAnalysis;
using Microsoft.Generator.CSharp;
using Microsoft.Generator.CSharp.ClientModel;
using System;
+using System.ClientModel;
+using System.Collections.Generic;
using System.ComponentModel.Composition;
namespace Azure.Generator;
@@ -38,6 +41,7 @@ public AzureClientPlugin(GeneratorContext context) : base(context)
public override void Configure()
{
base.Configure();
+ AddMetadataReference(MetadataReference.CreateFromFile(typeof(Response).Assembly.Location));
}
///
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureTypeFactory.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureTypeFactory.cs
index 662f9bea97ae..eccaceae0eb3 100644
--- a/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureTypeFactory.cs
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureTypeFactory.cs
@@ -1,8 +1,12 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using Azure.Core;
using Azure.Generator.Primitives;
+using Azure.Generator.Providers;
+using Azure.Generator.Providers.Abstraction;
using Microsoft.Generator.CSharp.ClientModel;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
using Microsoft.Generator.CSharp.Input;
using Microsoft.Generator.CSharp.Primitives;
@@ -11,6 +15,33 @@ namespace Azure.Generator
///
public class AzureTypeFactory : ScmTypeFactory
{
+ ///
+ public override CSharpType ClientUriBuilderBaseType => typeof(RequestUriBuilder);
+
+ ///
+ public override IClientResponseApi ClientResponseApi => AzureClientResponseProvider.Instance;
+
+ ///
+ public override IHttpResponseApi HttpResponseApi => AzureResponseProvider.Instance;
+
+ ///
+ public override IClientPipelineApi ClientPipelineApi => HttpPipelineProvider.Instance;
+
+ ///
+ public override IHttpMessageApi HttpMessageApi => HttpMessageProvider.Instance;
+
+ ///
+ public override IExpressionApi HttpRequestApi => HttpRequestProvider.Instance;
+
+ ///
+ public override IStatusCodeClassifierApi StatusCodeClassifierApi => StatusCodeClassifierProvider.Instance;
+
+ ///
+ public override IRequestContentApi RequestContentApi => RequestContentProvider.Instance;
+
+ ///
+ public override IHttpRequestOptionsApi HttpRequestOptionsApi => HttpRequestOptionsProvider.Instance;
+
///
protected override CSharpType? CreateCSharpTypeCore(InputType inputType)
{
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureClientResponseProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureClientResponseProvider.cs
new file mode 100644
index 000000000000..a47851a04548
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureClientResponseProvider.cs
@@ -0,0 +1,48 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using Microsoft.Generator.CSharp.Snippets;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers
+{
+ internal record AzureClientResponseProvider : ClientResponseApi
+ {
+ private static ClientResponseApi? _instance;
+ internal static ClientResponseApi Instance => _instance ??= new AzureClientResponseProvider(Empty);
+
+ public AzureClientResponseProvider(ValueExpression original) : base(typeof(Response), original)
+ {
+ }
+
+ public override CSharpType ClientResponseType => typeof(Response);
+
+ public override CSharpType ClientResponseOfTType => typeof(Response<>);
+
+ public override CSharpType ClientResponseExceptionType => typeof(RequestFailedException);
+
+ public override ValueExpression CreateAsync(HttpResponseApi response)
+ => New.Instance(ClientResponseExceptionType, [response]);
+
+ public override ClientResponseApi FromExpression(ValueExpression original)
+ => new AzureClientResponseProvider(original);
+
+ public override ValueExpression FromResponse(ValueExpression valueExpression) => valueExpression;
+
+ public override ValueExpression FromValue(ValueExpression valueExpression, HttpResponseApi response)
+ => Static(ClientResponseType).Invoke(nameof(FromValue), [valueExpression, response]);
+
+ public override ValueExpression FromValue(ValueExpression valueExpression, HttpResponseApi response)
+ => Static(ClientResponseType).Invoke(nameof(FromValue), [valueExpression, response], [typeof(ValueType)], false);
+
+ public override HttpResponseApi GetRawResponse()
+ => new AzureResponseProvider(GetRawResponseExpression());
+
+ public override ClientResponseApi ToExpression() => this;
+
+ private ScopedApi GetRawResponseExpression() => Original.As();
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureResponseProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureResponseProvider.cs
new file mode 100644
index 000000000000..11517a6a7f2e
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/AzureResponseProvider.cs
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using Microsoft.Generator.CSharp.Snippets;
+using System;
+using System.IO;
+
+namespace Azure.Generator.Providers
+{
+ internal record AzureResponseProvider : HttpResponseApi
+ {
+ private static HttpResponseApi? _instance;
+ internal static HttpResponseApi Instance => _instance ??= new AzureResponseProvider(Empty);
+
+ public AzureResponseProvider(ValueExpression original) : base(typeof(Response), original)
+ {
+ }
+
+ public override CSharpType HttpResponseType => typeof(Response);
+
+ public override ScopedApi Content()
+ => Original.Property(nameof(Response.Content)).As();
+
+ public override ScopedApi ContentStream()
+ => Original.Property(nameof(Response.ContentStream)).As();
+
+ public override HttpResponseApi FromExpression(ValueExpression original)
+ => new AzureResponseProvider(original);
+
+ public override ScopedApi IsError()
+ => Original.Property(nameof(Response.IsError)).As();
+
+ public override HttpResponseApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpMessageProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpMessageProvider.cs
new file mode 100644
index 000000000000..43391c5ca039
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpMessageProvider.cs
@@ -0,0 +1,47 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Core;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using Microsoft.Generator.CSharp.Statements;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers
+{
+ internal record HttpMessageProvider : HttpMessageApi
+ {
+ private static HttpMessageApi? _instance;
+ internal static HttpMessageApi Instance => _instance ??= new HttpMessageProvider(Empty);
+
+ public HttpMessageProvider(ValueExpression original) : base(typeof(HttpMessage), original)
+ {
+ }
+
+ public override CSharpType HttpMessageType => typeof(HttpMessage);
+
+ public override MethodBodyStatement Apply(ValueExpression options)
+ => MethodBodyStatement.Empty;
+
+ public override ValueExpression BufferResponse()
+ => Original.Property(nameof(HttpMessage.BufferResponse));
+
+ public override MethodBodyStatement[] ExtractResponse()
+ => [Original.Invoke(nameof(HttpMessage.ExtractResponseContent)).Terminate(), Return(Original.Property(nameof(HttpMessage.Response)))];
+
+ public override HttpMessageApi FromExpression(ValueExpression original)
+ => new HttpMessageProvider(original);
+
+ public override HttpRequestApi Request()
+ => new HttpRequestProvider(Original.Property(nameof(HttpMessage.Request)));
+
+ public override HttpResponseApi Response()
+ => new AzureResponseProvider(Original.Property(nameof(HttpMessage.Response)));
+
+ public override ValueExpression ResponseClassifier()
+ => Original.Property(nameof(HttpMessage.ResponseClassifier));
+
+ public override HttpMessageApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpPipelineProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpPipelineProvider.cs
new file mode 100644
index 000000000000..5a1c2e40553c
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpPipelineProvider.cs
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Core;
+using Azure.Core.Pipeline;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers.Abstraction
+{
+ internal record HttpPipelineProvider : ClientPipelineApi
+ {
+ private static ClientPipelineApi? _instance;
+ internal static ClientPipelineApi Instance => _instance ??= new HttpPipelineProvider(Empty);
+
+ public HttpPipelineProvider(ValueExpression original) : base(typeof(HttpPipeline), original)
+ {
+ }
+
+ public override CSharpType ClientPipelineType => typeof(HttpPipeline);
+
+ public override CSharpType ClientPipelineOptionsType => typeof(ClientOptions);
+
+ public override CSharpType PipelinePolicyType => typeof(HttpPipelinePolicy);
+
+ public override ValueExpression Create(ValueExpression options, ValueExpression perRetryPolicies)
+ => Static(typeof(HttpPipelineBuilder)).Invoke(nameof(HttpPipelineBuilder.Build), [options, perRetryPolicies]);
+
+ public override HttpMessageApi CreateMessage()
+ => new HttpMessageProvider(Original.Invoke(nameof(HttpPipeline.CreateMessage)));
+
+ public override ValueExpression CreateMessage(HttpRequestOptionsApi requestOptions, ValueExpression responseClassifier)
+ => Original.Invoke(nameof(HttpPipeline.CreateMessage), requestOptions, responseClassifier).As();
+
+ public override ClientPipelineApi FromExpression(ValueExpression expression)
+ => new HttpPipelineProvider(expression);
+
+ public override ValueExpression PerRetryPolicy(params ValueExpression[] arguments)
+ => Empty; // TODO: implement with default retry policy for Azure
+
+ public override InvokeMethodExpression Send(HttpMessageApi message)
+ => Original.Invoke(nameof(HttpPipeline.Send), [message, Default]);
+
+ public override InvokeMethodExpression SendAsync(HttpMessageApi message)
+ => Original.Invoke(nameof(HttpPipeline.SendAsync), [message, Default], true);
+
+ public override ClientPipelineApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestOptionsProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestOptionsProvider.cs
new file mode 100644
index 000000000000..5a1240531892
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestOptionsProvider.cs
@@ -0,0 +1,35 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers.Abstraction
+{
+ internal record HttpRequestOptionsProvider : HttpRequestOptionsApi
+ {
+ private static HttpRequestOptionsApi? _instance;
+ internal static HttpRequestOptionsApi Instance => _instance ??= new HttpRequestOptionsProvider(Empty);
+
+ public HttpRequestOptionsProvider(ValueExpression original) : base(typeof(RequestContext), original)
+ {
+ }
+
+ public override CSharpType HttpRequestOptionsType => typeof(RequestContext);
+
+ public override string ParameterName => "context";
+
+ public override ValueExpression ErrorOptions()
+ => Original.NullConditional().Property(nameof(RequestContext.ErrorOptions));
+
+ public override HttpRequestOptionsApi FromExpression(ValueExpression original)
+ => new HttpRequestOptionsProvider(original);
+
+ public override ValueExpression NoThrow()
+ => FrameworkEnumValue(Azure.ErrorOptions.NoThrow);
+
+ public override HttpRequestOptionsApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestProvider.cs
new file mode 100644
index 000000000000..060ae8050a73
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/HttpRequestProvider.cs
@@ -0,0 +1,40 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Core;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Snippets;
+using System.ClientModel.Primitives;
+using System.Collections.Generic;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers
+{
+ internal record HttpRequestProvider : HttpRequestApi
+ {
+ private static HttpRequestApi? _instance;
+ internal static HttpRequestApi Instance => _instance ??= new HttpRequestProvider(Empty);
+
+ public HttpRequestProvider(ValueExpression original) : base(typeof(Request), original)
+ {
+ }
+
+ public override ValueExpression Content()
+ => Original.Property(nameof(Request.Content));
+
+ public override HttpRequestApi FromExpression(ValueExpression original)
+ => new HttpRequestProvider(original);
+
+ public override InvokeMethodExpression SetHeaders(IReadOnlyList arguments)
+ => Original.Property(nameof(PipelineRequest.Headers)).Invoke(nameof(RequestHeaders.Add), arguments);
+
+ public override AssignmentExpression SetMethod(string httpMethod)
+ => Original.Property(nameof(PipelineRequest.Method)).Assign(New.Instance(typeof(RequestMethod), [Literal(httpMethod)]));
+
+ public override AssignmentExpression SetUri(ValueExpression value)
+ => Original.Property("Uri").Assign(value);
+
+ public override HttpRequestApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/RequestContentProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/RequestContentProvider.cs
new file mode 100644
index 000000000000..8fbd2922aeda
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/RequestContentProvider.cs
@@ -0,0 +1,38 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Core;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using Microsoft.Generator.CSharp.Snippets;
+using Microsoft.Generator.CSharp.Statements;
+using System.ClientModel.Primitives;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers
+{
+ internal record RequestContentProvider : RequestContentApi
+ {
+ private static RequestContentApi? _instance;
+ internal static RequestContentApi Instance => _instance ??= new RequestContentProvider(Empty);
+
+ public RequestContentProvider(ValueExpression original) : base(typeof(RequestContent), original)
+ {
+ }
+
+ public override CSharpType RequestContentType => typeof(RequestContent);
+
+ public override RequestContentApi FromExpression(ValueExpression original)
+ => new RequestContentProvider(original);
+
+ public override RequestContentApi ToExpression() => this;
+
+ public override MethodBodyStatement[] Create(ValueExpression argument)
+ => [
+ Declare("content", New.Instance(), out ScopedApi content),
+ content.Property("JsonWriter").Invoke("WriteObjectValue", [argument, Static().Property("WireOptions").As()]).Terminate(),
+ Return(content)
+ ];
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/StatusCodeClassifierProvider.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/StatusCodeClassifierProvider.cs
new file mode 100644
index 000000000000..090faa94c332
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/src/Providers/Abstraction/StatusCodeClassifierProvider.cs
@@ -0,0 +1,31 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Core;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.Expressions;
+using Microsoft.Generator.CSharp.Primitives;
+using static Microsoft.Generator.CSharp.Snippets.Snippet;
+
+namespace Azure.Generator.Providers.Abstraction
+{
+ internal record StatusCodeClassifierProvider : StatusCodeClassifierApi
+ {
+ private static StatusCodeClassifierApi? _instance;
+ internal static StatusCodeClassifierApi Instance => _instance ??= new StatusCodeClassifierProvider(Empty);
+
+ public StatusCodeClassifierProvider(ValueExpression original) : base(typeof(StatusCodeClassifier), original)
+ {
+ }
+
+ public override CSharpType ResponseClassifierType => typeof(ResponseClassifier);
+
+ public override ValueExpression Create(int code)
+ => New.Instance(typeof(StatusCodeClassifier), [New.Array(typeof(ushort), true, true, [Literal(code)])]);
+
+ public override StatusCodeClassifierApi FromExpression(ValueExpression original)
+ => new StatusCodeClassifierProvider(original);
+
+ public override StatusCodeClassifierApi ToExpression() => this;
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/test/Azure.Generator.Tests.csproj b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Azure.Generator.Tests.csproj
index 3ec6d60daa49..c837d9c3531e 100644
--- a/eng/packages/http-client-csharp/generator/Azure.Generator/test/Azure.Generator.Tests.csproj
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Azure.Generator.Tests.csproj
@@ -18,5 +18,15 @@
PreserveNewest
+
+
+
+
+
+
+
+ PreserveNewest
+
+
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/test/Common/Helpers.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Common/Helpers.cs
new file mode 100644
index 000000000000..4bbe181fc721
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Common/Helpers.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Runtime.CompilerServices;
+
+namespace Azure.Generator.Tests.Common
+{
+ internal static class Helpers
+ {
+ private static readonly string _assemblyLocation = Path.GetDirectoryName(typeof(Helpers).Assembly.Location)!;
+
+ public static string GetExpectedFromFile(string? parameters = null)
+ {
+ return File.ReadAllText(GetAssetFileOrDirectoryPath(true, parameters)).Replace("\r\n", "\n");
+ }
+
+ private static string GetAssetFileOrDirectoryPath(bool isFile, string? parameters = null)
+ {
+ var stackTrace = new StackTrace();
+ var stackFrame = GetRealMethodInvocation(stackTrace);
+ var method = stackFrame.GetMethod();
+ var callingClass = method!.DeclaringType;
+ var nsSplit = callingClass!.Namespace!.Split('.');
+ var paramString = parameters is null ? string.Empty : $"({parameters})";
+ var extName = isFile ? ".cs" : string.Empty;
+ var path = _assemblyLocation;
+ var nsSkip = 3;
+ for (int i = nsSkip; i < nsSplit.Length; i++)
+ {
+ path = Path.Combine(path, nsSplit[i]);
+ }
+ return Path.Combine(path, "TestData", callingClass.Name, $"{method.Name}{paramString}{extName}");
+ }
+
+ private static StackFrame GetRealMethodInvocation(StackTrace stackTrace)
+ {
+ int i = 1;
+ while (i < stackTrace.FrameCount)
+ {
+ var frame = stackTrace.GetFrame(i);
+ var declaringType = frame!.GetMethod()!.DeclaringType!;
+ // we need to skip those method invocations from this class, or from the async state machine when the caller is an async method
+ if (declaringType != typeof(Helpers) && declaringType.Name != "MockHelpers" && !IsCompilerGenerated(declaringType))
+ {
+ return frame;
+ }
+ i++;
+ }
+
+ throw new InvalidOperationException($"There is no method invocation outside the {typeof(Helpers)} class in the stack trace");
+
+ static bool IsCompilerGenerated(Type type)
+ {
+ return type.IsDefined(typeof(CompilerGeneratedAttribute), false) || (type.Namespace?.StartsWith("System.Runtime.CompilerServices") ?? false) ||
+ type.Name.StartsWith("<<", StringComparison.Ordinal);
+ }
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/AzureClientResponseProviderTests.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/AzureClientResponseProviderTests.cs
new file mode 100644
index 000000000000..62b1c787fb31
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/AzureClientResponseProviderTests.cs
@@ -0,0 +1,49 @@
+using Azure.Generator.Tests.Common;
+using Azure.Generator.Tests.TestHelpers;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
+using Microsoft.Generator.CSharp.ClientModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using System.ClientModel.Primitives;
+using Azure.Generator.Providers;
+
+namespace Azure.Generator.Tests.Providers.Abstractions
+{
+ internal class AzureClientResponseProviderTests
+ {
+ [Test]
+ public void ValidateReturnTypeIsOverridden()
+ {
+ ClientProvider clientProvider = CreateMockClientProvider();
+
+ var method = clientProvider.Methods.FirstOrDefault(x => !x.Signature.Name.EndsWith("Async"));
+ Assert.NotNull(method);
+ Assert.NotNull(method!.Signature.ReturnType);
+ Assert.IsTrue(method!.Signature.ReturnType!.Equals(typeof(Response)));
+ }
+
+ [Test]
+ public void ValidateBodyOfClientOperationIsOverridden()
+ {
+ var clientProvider = CreateMockClientProvider();
+
+ var method = clientProvider.Methods.FirstOrDefault(x => x.Signature.Parameters.Any(p => p.Type.Equals(typeof(RequestContext))) && !x.Signature.Name.EndsWith("Async"));
+ Assert.NotNull(method);
+ Assert.NotNull(method!.BodyStatements);
+ var test = method.BodyStatements!.ToDisplayString();
+ Assert.AreEqual(Helpers.GetExpectedFromFile(), method.BodyStatements!.ToDisplayString());
+ }
+
+ private static ClientProvider CreateMockClientProvider()
+ {
+ var client = InputFactory.Client("TestClient", [InputFactory.Operation("foo")]);
+ MockHelpers.LoadMockPlugin(clientResponseApi: AzureClientResponseProvider.Instance);
+ var clientProvider = AzureClientPlugin.Instance.TypeFactory.CreateClient(client);
+ return clientProvider;
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/TestData/AzureClientResponseProviderTests/ValidateBodyOfClientOperationIsOverridden.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/TestData/AzureClientResponseProviderTests/ValidateBodyOfClientOperationIsOverridden.cs
new file mode 100644
index 000000000000..e8bf29510dab
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/test/Providers/Abstractions/TestData/AzureClientResponseProviderTests/ValidateBodyOfClientOperationIsOverridden.cs
@@ -0,0 +1,2 @@
+using global::Azure.Core.HttpMessage message = this.CreateFooRequest(context);
+return Pipeline.ProcessMessage(message, context);
diff --git a/eng/packages/http-client-csharp/generator/Azure.Generator/test/TestHelpers/MockHelpers.cs b/eng/packages/http-client-csharp/generator/Azure.Generator/test/TestHelpers/MockHelpers.cs
index dcce80fbaae4..1f2919f751f8 100644
--- a/eng/packages/http-client-csharp/generator/Azure.Generator/test/TestHelpers/MockHelpers.cs
+++ b/eng/packages/http-client-csharp/generator/Azure.Generator/test/TestHelpers/MockHelpers.cs
@@ -3,6 +3,7 @@
using Microsoft.Generator.CSharp;
using Microsoft.Generator.CSharp.ClientModel;
+using Microsoft.Generator.CSharp.ClientModel.Providers;
using Microsoft.Generator.CSharp.Input;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Providers;
@@ -28,7 +29,10 @@ public static Mock LoadMockPlugin(
Func>? apiVersions = null,
Func>? inputEnums = null,
Func>? inputModels = null,
- Func>? clients = null)
+ Func>? clients = null,
+ ClientResponseApi? clientResponseApi = null,
+ ClientPipelineApi? clientPipelineApi = null,
+ HttpMessageApi? httpMessageApi = null)
{
IReadOnlyList inputNsApiVersions = apiVersions?.Invoke() ?? [];
IReadOnlyList inputNsEnums = inputEnums?.Invoke() ?? [];
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/BasicTypeSpec.csproj b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/BasicTypeSpec.csproj
index 358ee2ac9011..075aca94076a 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/BasicTypeSpec.csproj
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/BasicTypeSpec.csproj
@@ -11,6 +11,7 @@
-
+
+
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.RestClient.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.RestClient.cs
index b8bf3fd176a3..8f3177cdbe6a 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.RestClient.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.RestClient.cs
@@ -6,30 +6,30 @@
#nullable disable
using System;
-using System.ClientModel;
-using System.ClientModel.Primitives;
+using Azure;
+using Azure.Core;
namespace BasicTypeSpec
{
///
public partial class BasicTypeSpecClient
{
- private static PipelineMessageClassifier _pipelineMessageClassifier200;
- private static PipelineMessageClassifier _pipelineMessageClassifier204;
+ private static ResponseClassifier _pipelineMessageClassifier200;
+ private static ResponseClassifier _pipelineMessageClassifier204;
private static Classifier2xxAnd4xx _pipelineMessageClassifier2xxAnd4xx;
- private static PipelineMessageClassifier PipelineMessageClassifier200 => _pipelineMessageClassifier200 = PipelineMessageClassifier.Create(stackalloc ushort[] { 200 });
+ private static ResponseClassifier PipelineMessageClassifier200 => _pipelineMessageClassifier200 = new StatusCodeClassifier(stackalloc ushort[] { 200 });
- private static PipelineMessageClassifier PipelineMessageClassifier204 => _pipelineMessageClassifier204 = PipelineMessageClassifier.Create(stackalloc ushort[] { 204 });
+ private static ResponseClassifier PipelineMessageClassifier204 => _pipelineMessageClassifier204 = new StatusCodeClassifier(stackalloc ushort[] { 204 });
private static Classifier2xxAnd4xx PipelineMessageClassifier2xxAnd4xx => _pipelineMessageClassifier2xxAnd4xx ??= new Classifier2xxAnd4xx();
- internal PipelineMessage CreateSayHiRequest(string headParameter, string queryParameter, string optionalQuery, RequestOptions options)
+ internal HttpMessage CreateSayHiRequest(string headParameter, string queryParameter, string optionalQuery, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/hello", false);
@@ -38,314 +38,275 @@ internal PipelineMessage CreateSayHiRequest(string headParameter, string queryPa
{
uri.AppendQuery("optionalQuery", optionalQuery, true);
}
- request.Uri = uri.ToUri();
- request.Headers.Set("head-parameter", headParameter);
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("head-parameter", headParameter);
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreateHelloAgainRequest(string p2, string p1, BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateHelloAgainRequest(string p2, string p1, RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/againHi/", false);
uri.AppendPath(p2, true);
- request.Uri = uri.ToUri();
- request.Headers.Set("p1", p1);
- request.Headers.Set("Content-Type", "text/plain");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("p1", p1);
+ request.Headers.Add("Content-Type", "text/plain");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateNoContentTypeRequest(string p2, string p1, BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateNoContentTypeRequest(string p2, string p1, RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/noContentType/", false);
uri.AppendPath(p2, true);
- request.Uri = uri.ToUri();
- request.Headers.Set("p1", p1);
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("p1", p1);
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateHelloDemo2Request(RequestOptions options)
+ internal HttpMessage CreateHelloDemo2Request(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/demoHi", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreateCreateLiteralRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateCreateLiteralRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/literal", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateHelloLiteralRequest(RequestOptions options)
+ internal HttpMessage CreateHelloLiteralRequest(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/helloLiteral/", false);
uri.AppendPath(123.ToString(), true);
uri.AppendQuery("p3", TypeFormatters.ConvertToString(true, null), true);
- request.Uri = uri.ToUri();
- request.Headers.Set("p1", "test");
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("p1", "test");
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreateTopActionRequest(DateTimeOffset action, RequestOptions options)
+ internal HttpMessage CreateTopActionRequest(DateTimeOffset action, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/top/", false);
uri.AppendPath(action.ToString("O"), true);
- request.Uri = uri.ToUri();
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreateTopAction2Request(RequestOptions options)
+ internal HttpMessage CreateTopAction2Request(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/top2", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreatePatchActionRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreatePatchActionRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "PATCH";
+ Request request = message.Request;
+ request.Method = new RequestMethod("PATCH");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/patch", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateAnonymousBodyRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateAnonymousBodyRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/anonymousBody", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateFriendlyModelRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateFriendlyModelRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/friendlyName", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateAddTimeHeaderRequest(RequestOptions options)
+ internal HttpMessage CreateAddTimeHeaderRequest(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier204;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Repeatability-First-Sent", TypeFormatters.ConvertToString(DateTimeOffset.Now, "R"));
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Repeatability-First-Sent", TypeFormatters.ConvertToString(DateTimeOffset.Now, "R"));
return message;
}
- internal PipelineMessage CreateProjectedNameModelRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateProjectedNameModelRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/projectedName", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateReturnsAnonymousModelRequest(RequestOptions options)
+ internal HttpMessage CreateReturnsAnonymousModelRequest(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/returnsAnonymousModel", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Accept", "application/json");
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Accept", "application/json");
return message;
}
- internal PipelineMessage CreateGetUnknownValueRequest(string accept, RequestOptions options)
+ internal HttpMessage CreateGetUnknownValueRequest(string accept, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/unknown-value", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Accept", accept);
- message.Apply(options);
+ request.Uri = uri;
+ request.Headers.Add("Accept", accept);
return message;
}
- internal PipelineMessage CreateInternalProtocolRequest(BinaryContent content, RequestOptions options)
+ internal HttpMessage CreateInternalProtocolRequest(RequestContent content, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
- PipelineRequest request = message.Request;
- request.Method = "POST";
+ Request request = message.Request;
+ request.Method = new RequestMethod("POST");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/internalProtocol", false);
- request.Uri = uri.ToUri();
- request.Headers.Set("Content-Type", "application/json");
- request.Headers.Set("Accept", "application/json");
+ request.Uri = uri;
+ request.Headers.Add("Content-Type", "application/json");
+ request.Headers.Add("Accept", "application/json");
request.Content = content;
- message.Apply(options);
return message;
}
- internal PipelineMessage CreateStillConvenientRequest(RequestOptions options)
+ internal HttpMessage CreateStillConvenientRequest(RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier204;
- PipelineRequest request = message.Request;
- request.Method = "GET";
+ Request request = message.Request;
+ request.Method = new RequestMethod("GET");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/stillConvenient", false);
- request.Uri = uri.ToUri();
- message.Apply(options);
+ request.Uri = uri;
return message;
}
- internal PipelineMessage CreateHeadAsBooleanRequest(string id, RequestOptions options)
+ internal HttpMessage CreateHeadAsBooleanRequest(string id, RequestContext context)
{
- PipelineMessage message = Pipeline.CreateMessage();
+ HttpMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier2xxAnd4xx;
- PipelineRequest request = message.Request;
- request.Method = "HEAD";
+ Request request = message.Request;
+ request.Method = new RequestMethod("HEAD");
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/headAsBoolean/", false);
uri.AppendPath(id, true);
- request.Uri = uri.ToUri();
- message.Apply(options);
+ request.Uri = uri;
return message;
}
- private class Classifier2xxAnd4xx : PipelineMessageClassifier
+ private class Classifier2xxAnd4xx : ResponseClassifier
{
- public override bool TryClassify(PipelineMessage message, out bool isError)
- {
- isError = false;
- if (message.Response == null)
- {
- return false;
- }
- isError = message.Response.Status switch
- {
- >= 200 and < 300 => false,
- >= 400 and < 500 => false,
- _ => true
- };
- return true;
- }
-
- public override bool TryClassify(PipelineMessage message, Exception exception, out bool isRetryable)
- {
- isRetryable = false;
- return false;
- }
}
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.cs
index e03c8a59348d..20b2d3635f26 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClient.cs
@@ -7,10 +7,12 @@
using System;
using System.ClientModel;
-using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Azure;
+using Azure.Core;
+using Azure.Core.Pipeline;
using BasicTypeSpec.Models;
namespace BasicTypeSpec
@@ -50,11 +52,11 @@ public BasicTypeSpecClient(Uri endpoint, ApiKeyCredential keyCredential, BasicTy
_endpoint = endpoint;
_keyCredential = keyCredential;
- Pipeline = ClientPipeline.Create(options, Array.Empty(), new PipelinePolicy[] { ApiKeyAuthenticationPolicy.CreateHeaderApiKeyPolicy(_keyCredential, AuthorizationHeader) }, Array.Empty());
+ Pipeline = HttpPipelineBuilder.Build(options, new HttpPipelinePolicy[] { });
}
/// The HTTP pipeline for sending and receiving REST requests and responses.
- public ClientPipeline Pipeline { get; }
+ public HttpPipeline Pipeline { get; }
///
/// [Protocol Method] Return hi
@@ -67,17 +69,17 @@ public BasicTypeSpecClient(Uri endpoint, ApiKeyCredential keyCredential, BasicTy
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult SayHi(string headParameter, string queryParameter, string optionalQuery, RequestOptions options)
+ public virtual Response SayHi(string headParameter, string queryParameter, string optionalQuery, RequestContext context)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- using PipelineMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -91,17 +93,17 @@ public virtual ClientResult SayHi(string headParameter, string queryParameter, s
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery, RequestOptions options)
+ public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery, RequestContext context)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- using PipelineMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateSayHiRequest(headParameter, queryParameter, optionalQuery, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Return hi.
@@ -109,14 +111,14 @@ public virtual async Task SayHiAsync(string headParameter, string
///
///
/// or is null.
- /// Service returned a non-success status code.
- public virtual ClientResult SayHi(string headParameter, string queryParameter, string optionalQuery)
+ /// Service returned a non-success status code.
+ public virtual Response SayHi(string headParameter, string queryParameter, string optionalQuery)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- ClientResult result = SayHi(headParameter, queryParameter, optionalQuery, null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = SayHi(headParameter, queryParameter, optionalQuery, null);
+ return Response.FromValue((Thing)result, result);
}
/// Return hi.
@@ -124,14 +126,14 @@ public virtual ClientResult SayHi(string headParameter, string queryParam
///
///
/// or is null.
- /// Service returned a non-success status code.
- public virtual async Task> SayHiAsync(string headParameter, string queryParameter, string optionalQuery)
+ /// Service returned a non-success status code.
+ public virtual async Task> SayHiAsync(string headParameter, string queryParameter, string optionalQuery)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- ClientResult result = await SayHiAsync(headParameter, queryParameter, optionalQuery, null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await SayHiAsync(headParameter, queryParameter, optionalQuery, null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -145,18 +147,18 @@ public virtual async Task> SayHiAsync(string headParameter,
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// , or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult HelloAgain(string p2, string p1, BinaryContent content, RequestOptions options)
+ public virtual Response HelloAgain(string p2, string p1, RequestContent content, RequestContext context)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateHelloAgainRequest(p2, p1, content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateHelloAgainRequest(p2, p1, content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -170,18 +172,18 @@ public virtual ClientResult HelloAgain(string p2, string p1, BinaryContent conte
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// , or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task HelloAgainAsync(string p2, string p1, BinaryContent content, RequestOptions options)
+ public virtual async Task HelloAgainAsync(string p2, string p1, RequestContent content, RequestContext context)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateHelloAgainRequest(p2, p1, content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateHelloAgainRequest(p2, p1, content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Return hi again.
@@ -189,15 +191,15 @@ public virtual async Task HelloAgainAsync(string p2, string p1, Bi
///
///
/// , or is null.
- /// Service returned a non-success status code.
- public virtual ClientResult HelloAgain(string p2, string p1, RoundTripModel action)
+ /// Service returned a non-success status code.
+ public virtual Response HelloAgain(string p2, string p1, RoundTripModel action)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(action, nameof(action));
- ClientResult result = HelloAgain(p2, p1, action, null);
- return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse());
+ Response result = HelloAgain(p2, p1, action, null);
+ return Response.FromValue((RoundTripModel)result, result);
}
/// Return hi again.
@@ -205,15 +207,15 @@ public virtual ClientResult HelloAgain(string p2, string p1, Rou
///
///
/// , or is null.
- /// Service returned a non-success status code.
- public virtual async Task> HelloAgainAsync(string p2, string p1, RoundTripModel action)
+ /// Service returned a non-success status code.
+ public virtual async Task> HelloAgainAsync(string p2, string p1, RoundTripModel action)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(action, nameof(action));
- ClientResult result = await HelloAgainAsync(p2, p1, action, null).ConfigureAwait(false);
- return ClientResult.FromValue((RoundTripModel)result, result.GetRawResponse());
+ Response result = await HelloAgainAsync(p2, p1, action, null).ConfigureAwait(false);
+ return Response.FromValue((RoundTripModel)result, result);
}
///
@@ -227,18 +229,18 @@ public virtual async Task> HelloAgainAsync(string p
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// , or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult NoContentType(string p2, string p1, BinaryContent content, RequestOptions options)
+ public virtual Response NoContentType(string p2, string p1, RequestContent content, RequestContext context)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateNoContentTypeRequest(p2, p1, content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateNoContentTypeRequest(p2, p1, content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -252,18 +254,18 @@ public virtual ClientResult NoContentType(string p2, string p1, BinaryContent co
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// , or is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task NoContentTypeAsync(string p2, string p1, BinaryContent content, RequestOptions options)
+ public virtual async Task NoContentTypeAsync(string p2, string p1, RequestContent content, RequestContext context)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateNoContentTypeRequest(p2, p1, content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateNoContentTypeRequest(p2, p1, content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
///
@@ -274,13 +276,13 @@ public virtual async Task NoContentTypeAsync(string p2, string p1,
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult HelloDemo2(RequestOptions options)
+ public virtual Response HelloDemo2(RequestContext context)
{
- using PipelineMessage message = CreateHelloDemo2Request(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateHelloDemo2Request(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -291,29 +293,29 @@ public virtual ClientResult HelloDemo2(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task HelloDemo2Async(RequestOptions options)
+ public virtual async Task HelloDemo2Async(RequestContext context)
{
- using PipelineMessage message = CreateHelloDemo2Request(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateHelloDemo2Request(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Return hi in demo2.
- /// Service returned a non-success status code.
- public virtual ClientResult HelloDemo2()
+ /// Service returned a non-success status code.
+ public virtual Response HelloDemo2()
{
- ClientResult result = HelloDemo2(null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = HelloDemo2(null);
+ return Response.FromValue((Thing)result, result);
}
/// Return hi in demo2.
- /// Service returned a non-success status code.
- public virtual async Task> HelloDemo2Async()
+ /// Service returned a non-success status code.
+ public virtual async Task> HelloDemo2Async()
{
- ClientResult result = await HelloDemo2Async(null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await HelloDemo2Async(null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -325,16 +327,16 @@ public virtual async Task> HelloDemo2Async()
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult CreateLiteral(BinaryContent content, RequestOptions options)
+ public virtual Response CreateLiteral(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateCreateLiteralRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateCreateLiteralRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -346,40 +348,40 @@ public virtual ClientResult CreateLiteral(BinaryContent content, RequestOptions
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task CreateLiteralAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task CreateLiteralAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateCreateLiteralRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateCreateLiteralRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Create with literal value.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult CreateLiteral(Thing body)
+ /// Service returned a non-success status code.
+ public virtual Response CreateLiteral(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- ClientResult result = CreateLiteral(body, null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = CreateLiteral(body, null);
+ return Response.FromValue((Thing)result, result);
}
/// Create with literal value.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task> CreateLiteralAsync(Thing body)
+ /// Service returned a non-success status code.
+ public virtual async Task> CreateLiteralAsync(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- ClientResult result = await CreateLiteralAsync(body, null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await CreateLiteralAsync(body, null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -390,13 +392,13 @@ public virtual async Task> CreateLiteralAsync(Thing body)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult HelloLiteral(RequestOptions options)
+ public virtual Response HelloLiteral(RequestContext context)
{
- using PipelineMessage message = CreateHelloLiteralRequest(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateHelloLiteralRequest(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -407,29 +409,29 @@ public virtual ClientResult HelloLiteral(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task HelloLiteralAsync(RequestOptions options)
+ public virtual async Task HelloLiteralAsync(RequestContext context)
{
- using PipelineMessage message = CreateHelloLiteralRequest(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateHelloLiteralRequest(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Send literal parameters.
- /// Service returned a non-success status code.
- public virtual ClientResult HelloLiteral()
+ /// Service returned a non-success status code.
+ public virtual Response HelloLiteral()
{
- ClientResult result = HelloLiteral(null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = HelloLiteral(null);
+ return Response.FromValue((Thing)result, result);
}
/// Send literal parameters.
- /// Service returned a non-success status code.
- public virtual async Task> HelloLiteralAsync()
+ /// Service returned a non-success status code.
+ public virtual async Task> HelloLiteralAsync()
{
- ClientResult result = await HelloLiteralAsync(null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await HelloLiteralAsync(null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -441,13 +443,13 @@ public virtual async Task> HelloLiteralAsync()
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult TopAction(DateTimeOffset action, RequestOptions options)
+ public virtual Response TopAction(DateTimeOffset action, RequestContext context)
{
- using PipelineMessage message = CreateTopActionRequest(action, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateTopActionRequest(action, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -459,31 +461,31 @@ public virtual ClientResult TopAction(DateTimeOffset action, RequestOptions opti
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task TopActionAsync(DateTimeOffset action, RequestOptions options)
+ public virtual async Task TopActionAsync(DateTimeOffset action, RequestContext context)
{
- using PipelineMessage message = CreateTopActionRequest(action, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateTopActionRequest(action, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// top level method.
///
- /// Service returned a non-success status code.
- public virtual ClientResult TopAction(DateTimeOffset action)
+ /// Service returned a non-success status code.
+ public virtual Response TopAction(DateTimeOffset action)
{
- ClientResult result = TopAction(action, null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = TopAction(action, null);
+ return Response.FromValue((Thing)result, result);
}
/// top level method.
///
- /// Service returned a non-success status code.
- public virtual async Task> TopActionAsync(DateTimeOffset action)
+ /// Service returned a non-success status code.
+ public virtual async Task> TopActionAsync(DateTimeOffset action)
{
- ClientResult result = await TopActionAsync(action, null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await TopActionAsync(action, null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -494,13 +496,13 @@ public virtual async Task> TopActionAsync(DateTimeOffset act
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult TopAction2(RequestOptions options)
+ public virtual Response TopAction2(RequestContext context)
{
- using PipelineMessage message = CreateTopAction2Request(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateTopAction2Request(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -511,13 +513,13 @@ public virtual ClientResult TopAction2(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task TopAction2Async(RequestOptions options)
+ public virtual async Task TopAction2Async(RequestContext context)
{
- using PipelineMessage message = CreateTopAction2Request(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateTopAction2Request(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
///
@@ -529,16 +531,16 @@ public virtual async Task TopAction2Async(RequestOptions options)
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult PatchAction(BinaryContent content, RequestOptions options)
+ public virtual Response PatchAction(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreatePatchActionRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreatePatchActionRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -550,16 +552,16 @@ public virtual ClientResult PatchAction(BinaryContent content, RequestOptions op
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task PatchActionAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task PatchActionAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreatePatchActionRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreatePatchActionRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
///
@@ -571,16 +573,16 @@ public virtual async Task PatchActionAsync(BinaryContent content,
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult AnonymousBody(BinaryContent content, RequestOptions options)
+ public virtual Response AnonymousBody(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateAnonymousBodyRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateAnonymousBodyRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -592,16 +594,16 @@ public virtual ClientResult AnonymousBody(BinaryContent content, RequestOptions
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task AnonymousBodyAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task AnonymousBodyAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateAnonymousBodyRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateAnonymousBodyRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// body parameter without body decorator.
@@ -619,8 +621,8 @@ public virtual async Task AnonymousBodyAsync(BinaryContent content
/// optional literal bool.
/// optional nullable collection.
/// , or is null.
- /// Service returned a non-success status code.
- public virtual ClientResult AnonymousBody(string name, BinaryData requiredUnion, ThingRequiredLiteralString requiredLiteralString, ThingRequiredLiteralInt requiredLiteralInt, ThingRequiredLiteralFloat requiredLiteralFloat, bool requiredLiteralBool, string requiredBadDescription, IEnumerable requiredNullableList, ThingOptionalLiteralString? optionalLiteralString = default, ThingOptionalLiteralInt? optionalLiteralInt = default, ThingOptionalLiteralFloat? optionalLiteralFloat = default, bool? optionalLiteralBool = default, IEnumerable optionalNullableList = default)
+ /// Service returned a non-success status code.
+ public virtual Response AnonymousBody(string name, BinaryData requiredUnion, ThingRequiredLiteralString requiredLiteralString, ThingRequiredLiteralInt requiredLiteralInt, ThingRequiredLiteralFloat requiredLiteralFloat, bool requiredLiteralBool, string requiredBadDescription, IEnumerable requiredNullableList, ThingOptionalLiteralString? optionalLiteralString = default, ThingOptionalLiteralInt? optionalLiteralInt = default, ThingOptionalLiteralFloat? optionalLiteralFloat = default, bool? optionalLiteralBool = default, IEnumerable optionalNullableList = default)
{
Argument.AssertNotNull(name, nameof(name));
Argument.AssertNotNull(requiredUnion, nameof(requiredUnion));
@@ -641,8 +643,8 @@ public virtual ClientResult AnonymousBody(string name, BinaryData require
optionalNullableList?.ToList() as IList ?? new ChangeTrackingList(),
requiredNullableList?.ToList() as IList ?? new ChangeTrackingList(),
null);
- ClientResult result = AnonymousBody(spreadModel, null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = AnonymousBody(spreadModel, null);
+ return Response.FromValue((Thing)result, result);
}
/// body parameter without body decorator.
@@ -660,8 +662,8 @@ public virtual ClientResult AnonymousBody(string name, BinaryData require
/// optional literal bool.
/// optional nullable collection.
/// , or is null.
- /// Service returned a non-success status code.
- public virtual async Task> AnonymousBodyAsync(string name, BinaryData requiredUnion, ThingRequiredLiteralString requiredLiteralString, ThingRequiredLiteralInt requiredLiteralInt, ThingRequiredLiteralFloat requiredLiteralFloat, bool requiredLiteralBool, string requiredBadDescription, IEnumerable requiredNullableList, ThingOptionalLiteralString? optionalLiteralString = default, ThingOptionalLiteralInt? optionalLiteralInt = default, ThingOptionalLiteralFloat? optionalLiteralFloat = default, bool? optionalLiteralBool = default, IEnumerable optionalNullableList = default)
+ /// Service returned a non-success status code.
+ public virtual async Task> AnonymousBodyAsync(string name, BinaryData requiredUnion, ThingRequiredLiteralString requiredLiteralString, ThingRequiredLiteralInt requiredLiteralInt, ThingRequiredLiteralFloat requiredLiteralFloat, bool requiredLiteralBool, string requiredBadDescription, IEnumerable requiredNullableList, ThingOptionalLiteralString? optionalLiteralString = default, ThingOptionalLiteralInt? optionalLiteralInt = default, ThingOptionalLiteralFloat? optionalLiteralFloat = default, bool? optionalLiteralBool = default, IEnumerable optionalNullableList = default)
{
Argument.AssertNotNull(name, nameof(name));
Argument.AssertNotNull(requiredUnion, nameof(requiredUnion));
@@ -682,8 +684,8 @@ public virtual async Task> AnonymousBodyAsync(string name, B
optionalNullableList?.ToList() as IList ?? new ChangeTrackingList(),
requiredNullableList?.ToList() as IList ?? new ChangeTrackingList(),
null);
- ClientResult result = await AnonymousBodyAsync(spreadModel, null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await AnonymousBodyAsync(spreadModel, null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -695,16 +697,16 @@ public virtual async Task> AnonymousBodyAsync(string name, B
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult FriendlyModel(BinaryContent content, RequestOptions options)
+ public virtual Response FriendlyModel(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateFriendlyModelRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateFriendlyModelRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -716,42 +718,42 @@ public virtual ClientResult FriendlyModel(BinaryContent content, RequestOptions
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task FriendlyModelAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task FriendlyModelAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateFriendlyModelRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateFriendlyModelRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Model can have its friendly name.
/// name of the NotFriend.
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult FriendlyModel(string name)
+ /// Service returned a non-success status code.
+ public virtual Response FriendlyModel(string name)
{
Argument.AssertNotNull(name, nameof(name));
Friend spreadModel = new Friend(name, null);
- ClientResult result = FriendlyModel(spreadModel, null);
- return ClientResult.FromValue((Friend)result, result.GetRawResponse());
+ Response result = FriendlyModel(spreadModel, null);
+ return Response.FromValue((Friend)result, result);
}
/// Model can have its friendly name.
/// name of the NotFriend.
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task> FriendlyModelAsync(string name)
+ /// Service returned a non-success status code.
+ public virtual async Task> FriendlyModelAsync(string name)
{
Argument.AssertNotNull(name, nameof(name));
Friend spreadModel = new Friend(name, null);
- ClientResult result = await FriendlyModelAsync(spreadModel, null).ConfigureAwait(false);
- return ClientResult.FromValue((Friend)result, result.GetRawResponse());
+ Response result = await FriendlyModelAsync(spreadModel, null).ConfigureAwait(false);
+ return Response.FromValue((Friend)result, result);
}
///
@@ -762,13 +764,13 @@ public virtual async Task> FriendlyModelAsync(string name)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult AddTimeHeader(RequestOptions options)
+ public virtual Response AddTimeHeader(RequestContext context)
{
- using PipelineMessage message = CreateAddTimeHeaderRequest(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateAddTimeHeaderRequest(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -779,25 +781,25 @@ public virtual ClientResult AddTimeHeader(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task AddTimeHeaderAsync(RequestOptions options)
+ public virtual async Task AddTimeHeaderAsync(RequestContext context)
{
- using PipelineMessage message = CreateAddTimeHeaderRequest(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateAddTimeHeaderRequest(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// addTimeHeader.
- /// Service returned a non-success status code.
- public virtual ClientResult AddTimeHeader()
+ /// Service returned a non-success status code.
+ public virtual Response AddTimeHeader()
{
return AddTimeHeader(null);
}
/// addTimeHeader.
- /// Service returned a non-success status code.
- public virtual async Task AddTimeHeaderAsync()
+ /// Service returned a non-success status code.
+ public virtual async Task AddTimeHeaderAsync()
{
return await AddTimeHeaderAsync(null).ConfigureAwait(false);
}
@@ -811,16 +813,16 @@ public virtual async Task AddTimeHeaderAsync()
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult ProjectedNameModel(BinaryContent content, RequestOptions options)
+ public virtual Response ProjectedNameModel(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateProjectedNameModelRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateProjectedNameModelRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -832,42 +834,42 @@ public virtual ClientResult ProjectedNameModel(BinaryContent content, RequestOpt
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task ProjectedNameModelAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task ProjectedNameModelAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateProjectedNameModelRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateProjectedNameModelRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// Model can have its projected name.
/// name of the ModelWithProjectedName.
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult ProjectedNameModel(string name)
+ /// Service returned a non-success status code.
+ public virtual Response ProjectedNameModel(string name)
{
Argument.AssertNotNull(name, nameof(name));
ProjectedModel spreadModel = new ProjectedModel(name, null);
- ClientResult result = ProjectedNameModel(spreadModel, null);
- return ClientResult.FromValue((ProjectedModel)result, result.GetRawResponse());
+ Response result = ProjectedNameModel(spreadModel, null);
+ return Response.FromValue((ProjectedModel)result, result);
}
/// Model can have its projected name.
/// name of the ModelWithProjectedName.
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task> ProjectedNameModelAsync(string name)
+ /// Service returned a non-success status code.
+ public virtual async Task> ProjectedNameModelAsync(string name)
{
Argument.AssertNotNull(name, nameof(name));
ProjectedModel spreadModel = new ProjectedModel(name, null);
- ClientResult result = await ProjectedNameModelAsync(spreadModel, null).ConfigureAwait(false);
- return ClientResult.FromValue((ProjectedModel)result, result.GetRawResponse());
+ Response result = await ProjectedNameModelAsync(spreadModel, null).ConfigureAwait(false);
+ return Response.FromValue((ProjectedModel)result, result);
}
///
@@ -878,13 +880,13 @@ public virtual async Task> ProjectedNameModelAsync(
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult ReturnsAnonymousModel(RequestOptions options)
+ public virtual Response ReturnsAnonymousModel(RequestContext context)
{
- using PipelineMessage message = CreateReturnsAnonymousModelRequest(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateReturnsAnonymousModelRequest(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -895,29 +897,29 @@ public virtual ClientResult ReturnsAnonymousModel(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task ReturnsAnonymousModelAsync(RequestOptions options)
+ public virtual async Task ReturnsAnonymousModelAsync(RequestContext context)
{
- using PipelineMessage message = CreateReturnsAnonymousModelRequest(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateReturnsAnonymousModelRequest(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// return anonymous model.
- /// Service returned a non-success status code.
- public virtual ClientResult ReturnsAnonymousModel()
+ /// Service returned a non-success status code.
+ public virtual Response ReturnsAnonymousModel()
{
- ClientResult result = ReturnsAnonymousModel(null);
- return ClientResult.FromValue((ReturnsAnonymousModelResponse)result, result.GetRawResponse());
+ Response result = ReturnsAnonymousModel(null);
+ return Response.FromValue((ReturnsAnonymousModelResponse)result, result);
}
/// return anonymous model.
- /// Service returned a non-success status code.
- public virtual async Task> ReturnsAnonymousModelAsync()
+ /// Service returned a non-success status code.
+ public virtual async Task> ReturnsAnonymousModelAsync()
{
- ClientResult result = await ReturnsAnonymousModelAsync(null).ConfigureAwait(false);
- return ClientResult.FromValue((ReturnsAnonymousModelResponse)result, result.GetRawResponse());
+ Response result = await ReturnsAnonymousModelAsync(null).ConfigureAwait(false);
+ return Response.FromValue((ReturnsAnonymousModelResponse)result, result);
}
///
@@ -929,16 +931,16 @@ public virtual async Task> ReturnsAn
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult GetUnknownValue(string accept, RequestOptions options)
+ public virtual Response GetUnknownValue(string accept, RequestContext context)
{
Argument.AssertNotNull(accept, nameof(accept));
- using PipelineMessage message = CreateGetUnknownValueRequest(accept, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateGetUnknownValueRequest(accept, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -950,40 +952,40 @@ public virtual ClientResult GetUnknownValue(string accept, RequestOptions option
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task GetUnknownValueAsync(string accept, RequestOptions options)
+ public virtual async Task GetUnknownValueAsync(string accept, RequestContext context)
{
Argument.AssertNotNull(accept, nameof(accept));
- using PipelineMessage message = CreateGetUnknownValueRequest(accept, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateGetUnknownValueRequest(accept, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// get extensible enum.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult GetUnknownValue(string accept)
+ /// Service returned a non-success status code.
+ public virtual Response GetUnknownValue(string accept)
{
Argument.AssertNotNull(accept, nameof(accept));
- ClientResult result = GetUnknownValue(accept, null);
- return ClientResult.FromValue(result.GetRawResponse().Content.ToObjectFromJson(), result.GetRawResponse());
+ Response result = GetUnknownValue(accept, null);
+ return Response.FromValue(result.Content.ToObjectFromJson(), result);
}
/// get extensible enum.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task> GetUnknownValueAsync(string accept)
+ /// Service returned a non-success status code.
+ public virtual async Task> GetUnknownValueAsync(string accept)
{
Argument.AssertNotNull(accept, nameof(accept));
- ClientResult result = await GetUnknownValueAsync(accept, null).ConfigureAwait(false);
- return ClientResult.FromValue(result.GetRawResponse().Content.ToObjectFromJson(), result.GetRawResponse());
+ Response result = await GetUnknownValueAsync(accept, null).ConfigureAwait(false);
+ return Response.FromValue(result.Content.ToObjectFromJson(), result);
}
///
@@ -995,16 +997,16 @@ public virtual async Task> GetUnknownValueAsync(string acce
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult InternalProtocol(BinaryContent content, RequestOptions options)
+ public virtual Response InternalProtocol(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateInternalProtocolRequest(content, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateInternalProtocolRequest(content, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -1016,40 +1018,40 @@ public virtual ClientResult InternalProtocol(BinaryContent content, RequestOptio
///
///
/// The content to send as the body of the request.
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task InternalProtocolAsync(BinaryContent content, RequestOptions options)
+ public virtual async Task InternalProtocolAsync(RequestContent content, RequestContext context)
{
Argument.AssertNotNull(content, nameof(content));
- using PipelineMessage message = CreateInternalProtocolRequest(content, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateInternalProtocolRequest(content, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// When set protocol false and convenient true, then the protocol method should be internal.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult InternalProtocol(Thing body)
+ /// Service returned a non-success status code.
+ public virtual Response InternalProtocol(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- ClientResult result = InternalProtocol(body, null);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = InternalProtocol(body, null);
+ return Response.FromValue((Thing)result, result);
}
/// When set protocol false and convenient true, then the protocol method should be internal.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task> InternalProtocolAsync(Thing body)
+ /// Service returned a non-success status code.
+ public virtual async Task> InternalProtocolAsync(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- ClientResult result = await InternalProtocolAsync(body, null).ConfigureAwait(false);
- return ClientResult.FromValue((Thing)result, result.GetRawResponse());
+ Response result = await InternalProtocolAsync(body, null).ConfigureAwait(false);
+ return Response.FromValue((Thing)result, result);
}
///
@@ -1060,13 +1062,13 @@ public virtual async Task> InternalProtocolAsync(Thing body)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult StillConvenient(RequestOptions options)
+ public virtual Response StillConvenient(RequestContext context)
{
- using PipelineMessage message = CreateStillConvenientRequest(options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateStillConvenientRequest(context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -1077,25 +1079,25 @@ public virtual ClientResult StillConvenient(RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
- /// Service returned a non-success status code.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task StillConvenientAsync(RequestOptions options)
+ public virtual async Task StillConvenientAsync(RequestContext context)
{
- using PipelineMessage message = CreateStillConvenientRequest(options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateStillConvenientRequest(context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one.
- /// Service returned a non-success status code.
- public virtual ClientResult StillConvenient()
+ /// Service returned a non-success status code.
+ public virtual Response StillConvenient()
{
return StillConvenient(null);
}
/// When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one.
- /// Service returned a non-success status code.
- public virtual async Task StillConvenientAsync()
+ /// Service returned a non-success status code.
+ public virtual async Task StillConvenientAsync()
{
return await StillConvenientAsync(null).ConfigureAwait(false);
}
@@ -1109,16 +1111,16 @@ public virtual async Task StillConvenientAsync()
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual ClientResult HeadAsBoolean(string id, RequestOptions options)
+ public virtual Response HeadAsBoolean(string id, RequestContext context)
{
Argument.AssertNotNull(id, nameof(id));
- using PipelineMessage message = CreateHeadAsBooleanRequest(id, options);
- return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
+ using HttpMessage message = CreateHeadAsBooleanRequest(id, context);
+ return Pipeline.ProcessMessage(message, context);
}
///
@@ -1130,23 +1132,23 @@ public virtual ClientResult HeadAsBoolean(string id, RequestOptions options)
///
///
///
- /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
+ /// The request options, which can override default behaviors of the client pipeline on a per-call basis.
/// is null.
- /// Service returned a non-success status code.
+ /// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task HeadAsBooleanAsync(string id, RequestOptions options)
+ public virtual async Task HeadAsBooleanAsync(string id, RequestContext context)
{
Argument.AssertNotNull(id, nameof(id));
- using PipelineMessage message = CreateHeadAsBooleanRequest(id, options);
- return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
+ using HttpMessage message = CreateHeadAsBooleanRequest(id, context);
+ return await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
}
/// head as boolean.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual ClientResult HeadAsBoolean(string id)
+ /// Service returned a non-success status code.
+ public virtual Response HeadAsBoolean(string id)
{
Argument.AssertNotNull(id, nameof(id));
@@ -1156,8 +1158,8 @@ public virtual ClientResult HeadAsBoolean(string id)
/// head as boolean.
///
/// is null.
- /// Service returned a non-success status code.
- public virtual async Task HeadAsBooleanAsync(string id)
+ /// Service returned a non-success status code.
+ public virtual async Task HeadAsBooleanAsync(string id)
{
Argument.AssertNotNull(id, nameof(id));
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClientOptions.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClientOptions.cs
index 902ba6acf982..ce57ff03d1bc 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClientOptions.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/BasicTypeSpecClientOptions.cs
@@ -6,12 +6,12 @@
#nullable disable
using System;
-using System.ClientModel.Primitives;
+using Azure.Core;
namespace BasicTypeSpec
{
/// Client options for .
- public partial class BasicTypeSpecClientOptions : ClientPipelineOptions
+ public partial class BasicTypeSpecClientOptions : ClientOptions
{
private const ServiceVersion LatestVersion = ServiceVersion.V2024_08_16_Preview;
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs
index d9378b66796e..82e2f9dcaead 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientPipelineExtensions.cs
@@ -5,66 +5,73 @@
#nullable disable
-using System.ClientModel;
-using System.ClientModel.Primitives;
using System.Threading.Tasks;
+using Azure;
+using Azure.Core;
+using Azure.Core.Pipeline;
namespace BasicTypeSpec
{
internal static partial class ClientPipelineExtensions
{
- public static async ValueTask ProcessMessageAsync(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options)
+ public static async ValueTask ProcessMessageAsync(this HttpPipeline pipeline, HttpMessage message, RequestContext options)
{
- await pipeline.SendAsync(message).ConfigureAwait(false);
+ await pipeline.SendAsync(message, default).ConfigureAwait(false);
- if (message.Response.IsError && (options?.ErrorOptions & ClientErrorBehaviors.NoThrow) != ClientErrorBehaviors.NoThrow)
+ if (message.Response.IsError && (options?.ErrorOptions & ErrorOptions.NoThrow) != ErrorOptions.NoThrow)
{
- throw await ClientResultException.CreateAsync(message.Response).ConfigureAwait(false);
+ throw new RequestFailedException(message.Response);
}
- PipelineResponse response = message.BufferResponse ? message.Response : message.ExtractResponse();
+ Response response = message.BufferResponse ? message.Response : ExtractResponseContent(message);
return response;
}
- public static PipelineResponse ProcessMessage(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options)
+ public static Response ProcessMessage(this HttpPipeline pipeline, HttpMessage message, RequestContext options)
{
- pipeline.Send(message);
+ pipeline.Send(message, default);
- if (message.Response.IsError && (options?.ErrorOptions & ClientErrorBehaviors.NoThrow) != ClientErrorBehaviors.NoThrow)
+ if (message.Response.IsError && (options?.ErrorOptions & ErrorOptions.NoThrow) != ErrorOptions.NoThrow)
{
- throw new ClientResultException(message.Response);
+ throw new RequestFailedException(message.Response);
}
- PipelineResponse response = message.BufferResponse ? message.Response : message.ExtractResponse();
+ Response response = message.BufferResponse ? message.Response : ExtractResponseContent(message);
return response;
}
- public static async ValueTask> ProcessHeadAsBoolMessageAsync(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options)
+ public static async ValueTask> ProcessHeadAsBoolMessageAsync(this HttpPipeline pipeline, HttpMessage message, RequestContext options)
{
- PipelineResponse response = await pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
+ Response response = await pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false);
switch (response.Status)
{
case >= 200 and < 300:
- return ClientResult.FromValue(true, response);
+ return Response.FromValue(true, response);
case >= 400 and < 500:
- return ClientResult.FromValue(false, response);
+ return Response.FromValue(false, response);
default:
- return new ErrorResult(response, new ClientResultException(response));
+ return new ErrorResult(response, new RequestFailedException(response));
}
}
- public static ClientResult ProcessHeadAsBoolMessage(this ClientPipeline pipeline, PipelineMessage message, RequestOptions options)
+ public static Response ProcessHeadAsBoolMessage(this HttpPipeline pipeline, HttpMessage message, RequestContext options)
{
- PipelineResponse response = pipeline.ProcessMessage(message, options);
+ Response response = pipeline.ProcessMessage(message, options);
switch (response.Status)
{
case >= 200 and < 300:
- return ClientResult.FromValue(true, response);
+ return Response.FromValue(true, response);
case >= 400 and < 500:
- return ClientResult.FromValue(false, response);
+ return Response.FromValue(false, response);
default:
- return new ErrorResult(response, new ClientResultException(response));
+ return new ErrorResult(response, new RequestFailedException(response));
}
}
+
+ private static Response ExtractResponseContent(HttpMessage message)
+ {
+ message.ExtractResponseContent();
+ return message.Response;
+ }
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs
index a887f440ebe9..86b06504d0c8 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs
@@ -9,10 +9,11 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using Azure.Core;
namespace BasicTypeSpec
{
- internal partial class ClientUriBuilder
+ internal partial class ClientUriBuilder : RequestUriBuilder
{
private UriBuilder _uriBuilder;
private StringBuilder _pathBuilder;
@@ -28,84 +29,6 @@ public ClientUriBuilder()
private StringBuilder QueryBuilder => _queryBuilder ??= new StringBuilder(UriBuilder.Query);
- public void Reset(Uri uri)
- {
- _uriBuilder = new UriBuilder(uri);
- _pathBuilder = new StringBuilder(UriBuilder.Path);
- _queryBuilder = new StringBuilder(UriBuilder.Query);
- }
-
- public void AppendPath(string value, bool escape)
- {
- if (escape)
- {
- value = Uri.EscapeDataString(value);
- }
- if (PathBuilder.Length > 0 && PathBuilder[PathBuilder.Length - 1] == '/' && value[0] == '/')
- {
- PathBuilder.Remove(PathBuilder.Length - 1, 1);
- }
- PathBuilder.Append(value);
- UriBuilder.Path = PathBuilder.ToString();
- }
-
- public void AppendPath(bool value, bool escape = false) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(float value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(double value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(int value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(byte[] value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendPath(IEnumerable value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(DateTimeOffset value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendPath(TimeSpan value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendPath(Guid value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendPath(long value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, string value, bool escape)
- {
- if (QueryBuilder.Length > 0)
- {
- QueryBuilder.Append('&');
- }
- if (escape)
- {
- value = Uri.EscapeDataString(value);
- }
- QueryBuilder.Append(name);
- QueryBuilder.Append('=');
- QueryBuilder.Append(value);
- }
-
- public void AppendQuery(string name, bool value, bool escape = false) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, float value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, DateTimeOffset value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendQuery(string name, TimeSpan value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendQuery(string name, double value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, decimal value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, int value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, long value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, TimeSpan value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
- public void AppendQuery(string name, byte[] value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
-
- public void AppendQuery(string name, Guid value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);
-
public void AppendQueryDelimited(string name, IEnumerable value, string delimiter, bool escape = true)
{
IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v));
@@ -117,18 +40,5 @@ public void AppendQueryDelimited(string name, IEnumerable value, string de
IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format));
AppendQuery(name, string.Join(delimiter, stringValues), escape);
}
-
- public Uri ToUri()
- {
- if (_pathBuilder != null)
- {
- UriBuilder.Path = _pathBuilder.ToString();
- }
- if (_queryBuilder != null)
- {
- UriBuilder.Query = _queryBuilder.ToString();
- }
- return UriBuilder.Uri;
- }
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ErrorResult.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ErrorResult.cs
index 99d36a31e528..cc9535a76e79 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ErrorResult.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ErrorResult.cs
@@ -5,22 +5,26 @@
#nullable disable
-using System.ClientModel;
-using System.ClientModel.Primitives;
+using Azure;
namespace BasicTypeSpec
{
- internal partial class ErrorResult : ClientResult
+ internal partial class ErrorResult : Response
{
- private readonly PipelineResponse _response;
- private readonly ClientResultException _exception;
+ private readonly Response _response;
+ private readonly RequestFailedException _exception;
- public ErrorResult(PipelineResponse response, ClientResultException exception) : base(default, response)
+ public ErrorResult(Response response, RequestFailedException exception)
{
_response = response;
_exception = exception;
}
public override T Value => throw _exception;
+
+ public override Response GetRawResponse()
+ {
+ return _response;
+ }
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/Utf8JsonBinaryContent.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/Utf8JsonBinaryContent.cs
new file mode 100644
index 000000000000..d7d35c3dfb08
--- /dev/null
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/Utf8JsonBinaryContent.cs
@@ -0,0 +1,55 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+//
+
+#nullable disable
+
+using System.IO;
+using System.Text.Json;
+using System.Threading;
+using System.Threading.Tasks;
+using Azure.Core;
+
+namespace BasicTypeSpec
+{
+ internal partial class Utf8JsonBinaryContent : RequestContent
+ {
+ private readonly MemoryStream _stream;
+ private readonly RequestContent _content;
+
+ public Utf8JsonBinaryContent()
+ {
+ _stream = new MemoryStream();
+ _content = Create(_stream);
+ JsonWriter = new Utf8JsonWriter(_stream);
+ }
+
+ public Utf8JsonWriter JsonWriter { get; }
+
+ public override async Task WriteToAsync(Stream stream, CancellationToken cancellationToken = default)
+ {
+ await JsonWriter.FlushAsync().ConfigureAwait(false);
+ await _content.WriteToAsync(stream, cancellationToken).ConfigureAwait(false);
+ }
+
+ public override void WriteTo(Stream stream, CancellationToken cancellationToken = default)
+ {
+ JsonWriter.Flush();
+ _content.WriteTo(stream, cancellationToken);
+ }
+
+ public override bool TryComputeLength(out long length)
+ {
+ length = JsonWriter.BytesCommitted + JsonWriter.BytesPending;
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ JsonWriter.Dispose();
+ _content.Dispose();
+ _stream.Dispose();
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.Serialization.cs
index 7d1bd5d9d46a..f92833ee37f3 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -130,16 +131,18 @@ protected virtual Friend PersistableModelCreateCore(BinaryData data, ModelReader
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(Friend friend)
+ /// The to serialize into .
+ public static implicit operator RequestContent(Friend friend)
{
- return BinaryContent.Create(friend, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(friend, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator Friend(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator Friend(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeFriend(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.cs
index ea7b538f4377..f1419a822a26 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Friend.cs
@@ -14,7 +14,7 @@ namespace BasicTypeSpec.Models
public partial class Friend
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
internal Friend(string name)
{
@@ -28,6 +28,6 @@ internal Friend(string name, IDictionary additionalBinaryDat
}
/// name of the NotFriend.
- public string Name { get; set; }
+ public string Name { get; }
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs
index a84cef90e170..baa17dbaa1cb 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -182,16 +183,18 @@ protected virtual ModelWithRequiredNullableProperties PersistableModelCreateCore
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(ModelWithRequiredNullableProperties modelWithRequiredNullableProperties)
+ /// The to serialize into .
+ public static implicit operator RequestContent(ModelWithRequiredNullableProperties modelWithRequiredNullableProperties)
{
- return BinaryContent.Create(modelWithRequiredNullableProperties, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(modelWithRequiredNullableProperties, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator ModelWithRequiredNullableProperties(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator ModelWithRequiredNullableProperties(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeModelWithRequiredNullableProperties(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.cs
index 3f743baad339..69afb469ca74 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ModelWithRequiredNullableProperties.cs
@@ -14,7 +14,7 @@ namespace BasicTypeSpec.Models
public partial class ModelWithRequiredNullableProperties
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
/// Initializes a new instance of .
/// required nullable primitive type.
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs
index 519e2c3d1a94..75dc1aad68de 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -130,16 +131,18 @@ protected virtual ProjectedModel PersistableModelCreateCore(BinaryData data, Mod
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(ProjectedModel projectedModel)
+ /// The to serialize into .
+ public static implicit operator RequestContent(ProjectedModel projectedModel)
{
- return BinaryContent.Create(projectedModel, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(projectedModel, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator ProjectedModel(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator ProjectedModel(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeProjectedModel(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.cs
index d9a5e5895d01..850a0dab8aa8 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ProjectedModel.cs
@@ -14,7 +14,7 @@ namespace BasicTypeSpec.Models
public partial class ProjectedModel
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
internal ProjectedModel(string name)
{
@@ -28,6 +28,6 @@ internal ProjectedModel(string name, IDictionary additionalB
}
/// name of the ModelWithProjectedName.
- public string Name { get; set; }
+ public string Name { get; }
}
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs
index 3bcdfe6ccf29..092802278552 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -118,16 +119,18 @@ protected virtual ReturnsAnonymousModelResponse PersistableModelCreateCore(Binar
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(ReturnsAnonymousModelResponse returnsAnonymousModelResponse)
+ /// The to serialize into .
+ public static implicit operator RequestContent(ReturnsAnonymousModelResponse returnsAnonymousModelResponse)
{
- return BinaryContent.Create(returnsAnonymousModelResponse, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(returnsAnonymousModelResponse, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator ReturnsAnonymousModelResponse(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator ReturnsAnonymousModelResponse(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeReturnsAnonymousModelResponse(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.cs
index 68974991df3d..54125976ebc3 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/ReturnsAnonymousModelResponse.cs
@@ -14,7 +14,7 @@ namespace BasicTypeSpec.Models
public partial class ReturnsAnonymousModelResponse
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
internal ReturnsAnonymousModelResponse()
{
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs
index fd1dea9632eb..62467f32c0fe 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -643,16 +644,18 @@ protected virtual RoundTripModel PersistableModelCreateCore(BinaryData data, Mod
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(RoundTripModel roundTripModel)
+ /// The to serialize into .
+ public static implicit operator RequestContent(RoundTripModel roundTripModel)
{
- return BinaryContent.Create(roundTripModel, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(roundTripModel, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator RoundTripModel(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator RoundTripModel(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeRoundTripModel(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.cs
index 771f0b16040e..3f660931d13c 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/RoundTripModel.cs
@@ -17,7 +17,7 @@ namespace BasicTypeSpec.Models
public partial class RoundTripModel
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
/// Initializes a new instance of .
/// Required string, illustrating a reference type property.
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.Serialization.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.Serialization.cs
index aed5b19c24d8..c473fa19a5fa 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.Serialization.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.Serialization.cs
@@ -6,10 +6,11 @@
#nullable disable
using System;
-using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Text.Json;
+using Azure;
+using Azure.Core;
using BasicTypeSpec;
namespace BasicTypeSpec.Models
@@ -325,16 +326,18 @@ protected virtual Thing PersistableModelCreateCore(BinaryData data, ModelReaderW
string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
- /// The to serialize into .
- public static implicit operator BinaryContent(Thing thing)
+ /// The to serialize into .
+ public static implicit operator RequestContent(Thing thing)
{
- return BinaryContent.Create(thing, ModelSerializationExtensions.WireOptions);
+ Utf8JsonBinaryContent content = new Utf8JsonBinaryContent();
+ content.JsonWriter.WriteObjectValue(thing, ModelSerializationExtensions.WireOptions);
+ return content;
}
- /// The to deserialize the from.
- public static explicit operator Thing(ClientResult result)
+ /// The to deserialize the from.
+ public static explicit operator Thing(Response result)
{
- using PipelineResponse response = result.GetRawResponse();
+ using Response response = result;
using JsonDocument document = JsonDocument.Parse(response.Content);
return DeserializeThing(document.RootElement, ModelSerializationExtensions.WireOptions);
}
diff --git a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.cs b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.cs
index c35fd826366e..62e0c73a58db 100644
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.cs
+++ b/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Models/Thing.cs
@@ -17,7 +17,7 @@ namespace BasicTypeSpec.Models
public partial class Thing
{
/// Keeps track of any properties unknown to the library.
- private protected IDictionary _additionalBinaryDataProperties;
+ private protected readonly IDictionary _additionalBinaryDataProperties;
/// Initializes a new instance of .
/// name of the Thing.