diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props
index f62bda84176c..3cfa3d1052b1 100644
--- a/eng/Packages.Data.props
+++ b/eng/Packages.Data.props
@@ -253,7 +253,7 @@
-
+
-
+
+ Always
+
+
+ Always
+
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 73a3a83a2dba..aed8546918be 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
@@ -5,9 +5,8 @@
using Microsoft.Generator.CSharp;
using Microsoft.Generator.CSharp.ClientModel;
using System;
-using System.ClientModel;
-using System.Collections.Generic;
using System.ComponentModel.Composition;
+using System.IO;
namespace Azure.Generator;
@@ -46,6 +45,8 @@ public override void Configure()
{
base.Configure();
AddMetadataReference(MetadataReference.CreateFromFile(typeof(Response).Assembly.Location));
+ var sharedSourceDirectory = Path.Combine(Path.GetDirectoryName(typeof(AzureClientPlugin).Assembly.Location)!, "Shared", "Core");
+ AddSharedSourceDirectory(sharedSourceDirectory);
}
///
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 19fd71e19deb..070aca4a2cf5 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,7 +1,6 @@
// 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;
@@ -18,9 +17,6 @@ public class AzureTypeFactory : ScmTypeFactory
///
public override CSharpType KeyCredentialType => typeof(AzureKeyCredential);
- ///
- public override CSharpType ClientUriBuilderBaseType => typeof(RequestUriBuilder);
-
///
public override IClientResponseApi ClientResponseApi => AzureClientResponseProvider.Instance;
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
index 37f0f6278f65..b09ce221e158 100644
--- 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
@@ -21,6 +21,8 @@ public HttpRequestProvider(ValueExpression original) : base(typeof(Request), ori
{
}
+ public override Type UriBuilderType => typeof(RawRequestUriBuilder);
+
public override ValueExpression Content()
=> Original.Property(nameof(Request.Content));
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 9c72b193dd37..de5464ba7117 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
@@ -18,5 +18,6 @@
+
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 eb6682ff07e3..14f2109f5695 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
@@ -32,7 +32,7 @@ internal HttpMessage CreateSayHiRequest(string headParameter, string queryParame
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/hello", false);
uri.AppendQuery("queryParameter", queryParameter, true);
@@ -51,7 +51,7 @@ internal HttpMessage CreateHelloAgainRequest(string p2, string p1, RequestConten
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/againHi/", false);
uri.AppendPath(p2, true);
@@ -68,7 +68,7 @@ internal HttpMessage CreateNoContentTypeRequest(string p2, string p1, RequestCon
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/noContentType/", false);
uri.AppendPath(p2, true);
@@ -85,7 +85,7 @@ internal HttpMessage CreateHelloDemo2Request(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/demoHi", false);
request.Uri = uri;
@@ -98,7 +98,7 @@ internal HttpMessage CreateCreateLiteralRequest(RequestContent content, RequestC
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/literal", false);
request.Uri = uri;
@@ -113,7 +113,7 @@ internal HttpMessage CreateHelloLiteralRequest(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/helloLiteral/", false);
uri.AppendPath(123.ToString(), true);
@@ -129,7 +129,7 @@ internal HttpMessage CreateTopActionRequest(DateTimeOffset action, RequestContex
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/top/", false);
uri.AppendPath(action.ToString("O"), true);
@@ -143,7 +143,7 @@ internal HttpMessage CreateTopAction2Request(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/top2", false);
request.Uri = uri;
@@ -156,7 +156,7 @@ internal HttpMessage CreatePatchActionRequest(RequestContent content, RequestCon
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Patch;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/patch", false);
request.Uri = uri;
@@ -171,7 +171,7 @@ internal HttpMessage CreateAnonymousBodyRequest(RequestContent content, RequestC
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/anonymousBody", false);
request.Uri = uri;
@@ -186,7 +186,7 @@ internal HttpMessage CreateFriendlyModelRequest(RequestContent content, RequestC
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/friendlyName", false);
request.Uri = uri;
@@ -201,7 +201,7 @@ internal HttpMessage CreateAddTimeHeaderRequest(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier204);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/", false);
request.Uri = uri;
@@ -214,7 +214,7 @@ internal HttpMessage CreateProjectedNameModelRequest(RequestContent content, Req
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/projectedName", false);
request.Uri = uri;
@@ -229,7 +229,7 @@ internal HttpMessage CreateReturnsAnonymousModelRequest(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/returnsAnonymousModel", false);
request.Uri = uri;
@@ -242,7 +242,7 @@ internal HttpMessage CreateGetUnknownValueRequest(string accept, RequestContext
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/unknown-value", false);
request.Uri = uri;
@@ -255,7 +255,7 @@ internal HttpMessage CreateInternalProtocolRequest(RequestContent content, Reque
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier200);
Request request = message.Request;
request.Method = RequestMethod.Post;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/internalProtocol", false);
request.Uri = uri;
@@ -270,7 +270,7 @@ internal HttpMessage CreateStillConvenientRequest(RequestContext context)
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier204);
Request request = message.Request;
request.Method = RequestMethod.Get;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/stillConvenient", false);
request.Uri = uri;
@@ -282,7 +282,7 @@ internal HttpMessage CreateHeadAsBooleanRequest(string id, RequestContext contex
HttpMessage message = Pipeline.CreateMessage(context, PipelineMessageClassifier2xxAnd4xx);
Request request = message.Request;
request.Method = RequestMethod.Head;
- ClientUriBuilder uri = new ClientUriBuilder();
+ RawRequestUriBuilder uri = new RawRequestUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/headAsBoolean/", false);
uri.AppendPath(id, true);
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 fb986e80a8bd..48c675a8926d 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
@@ -8,6 +8,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
@@ -51,7 +52,7 @@ public BasicTypeSpecClient(Uri endpoint, AzureKeyCredential keyCredential, Basic
_endpoint = endpoint;
_keyCredential = keyCredential;
- Pipeline = HttpPipelineBuilder.Build(options, new HttpPipelinePolicy[] { new Azure.Core.AzureKeyCredentialPolicy(_keyCredential, AuthorizationHeader) });
+ Pipeline = HttpPipelineBuilder.Build(options, new HttpPipelinePolicy[] { new AzureKeyCredentialPolicy(_keyCredential, AuthorizationHeader) });
}
/// The HTTP pipeline for sending and receiving REST requests and responses.
@@ -72,7 +73,7 @@ public BasicTypeSpecClient(Uri endpoint, AzureKeyCredential keyCredential, Basic
/// or is null.
/// Service returned a non-success status code.
/// The response returned from the service.
- public virtual Response SayHi(string headParameter, string queryParameter, string optionalQuery, RequestContext context = null)
+ public virtual Response SayHi(string headParameter, string queryParameter, string optionalQuery, RequestContext context)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
@@ -96,7 +97,7 @@ public virtual Response SayHi(string headParameter, string queryParameter, strin
/// or is null.
/// Service returned a non-success status code.
/// The response returned from the service.
- public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery, RequestContext context = null)
+ public virtual async Task SayHiAsync(string headParameter, string queryParameter, string optionalQuery, RequestContext context)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
@@ -116,7 +117,7 @@ public virtual Response SayHi(string headParameter, string queryParameter
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- Response result = SayHi(headParameter, queryParameter, optionalQuery, null);
+ Response result = SayHi(headParameter, queryParameter, optionalQuery, context: null);
return Response.FromValue((Thing)result, result);
}
@@ -124,14 +125,15 @@ public virtual Response SayHi(string headParameter, string queryParameter
///
///
///
+ /// The cancellation token that can be used to cancel the operation.
/// or is null.
/// Service returned a non-success status code.
- public virtual async Task> SayHiAsync(string headParameter, string queryParameter, string optionalQuery = null)
+ public virtual async Task> SayHiAsync(string headParameter, string queryParameter, string optionalQuery = null, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(headParameter, nameof(headParameter));
Argument.AssertNotNull(queryParameter, nameof(queryParameter));
- Response result = await SayHiAsync(headParameter, queryParameter, optionalQuery, null).ConfigureAwait(false);
+ Response result = await SayHiAsync(headParameter, queryParameter, optionalQuery, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -197,7 +199,7 @@ public virtual Response HelloAgain(string p2, string p1, RoundTr
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(action, nameof(action));
- Response result = HelloAgain(p2, p1, action, null);
+ Response result = HelloAgain(p2, p1, action, context: null);
return Response.FromValue((RoundTripModel)result, result);
}
@@ -205,15 +207,16 @@ public virtual Response HelloAgain(string p2, string p1, RoundTr
///
///
///
+ /// The cancellation token that can be used to cancel the operation.
/// , or is null.
/// Service returned a non-success status code.
- public virtual async Task> HelloAgainAsync(string p2, string p1, RoundTripModel action)
+ public virtual async Task> HelloAgainAsync(string p2, string p1, RoundTripModel action, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(p2, nameof(p2));
Argument.AssertNotNull(p1, nameof(p1));
Argument.AssertNotNull(action, nameof(action));
- Response result = await HelloAgainAsync(p2, p1, action, null).ConfigureAwait(false);
+ Response result = await HelloAgainAsync(p2, p1, action, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((RoundTripModel)result, result);
}
@@ -305,15 +308,16 @@ public virtual async Task HelloDemo2Async(RequestContext context)
/// Service returned a non-success status code.
public virtual Response HelloDemo2()
{
- Response result = HelloDemo2(null);
+ Response result = HelloDemo2(context: null);
return Response.FromValue((Thing)result, result);
}
/// Return hi in demo2.
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task> HelloDemo2Async()
+ public virtual async Task> HelloDemo2Async(CancellationToken cancellationToken = default)
{
- Response result = await HelloDemo2Async(null).ConfigureAwait(false);
+ Response result = await HelloDemo2Async(cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -367,19 +371,20 @@ public virtual Response CreateLiteral(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- Response result = CreateLiteral(body, null);
+ Response result = CreateLiteral(body, context: null);
return Response.FromValue((Thing)result, result);
}
/// Create with literal value.
///
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task> CreateLiteralAsync(Thing body)
+ public virtual async Task> CreateLiteralAsync(Thing body, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(body, nameof(body));
- Response result = await CreateLiteralAsync(body, null).ConfigureAwait(false);
+ Response result = await CreateLiteralAsync(body, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -421,15 +426,16 @@ public virtual async Task HelloLiteralAsync(RequestContext context)
/// Service returned a non-success status code.
public virtual Response HelloLiteral()
{
- Response result = HelloLiteral(null);
+ Response result = HelloLiteral(context: null);
return Response.FromValue((Thing)result, result);
}
/// Send literal parameters.
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task> HelloLiteralAsync()
+ public virtual async Task> HelloLiteralAsync(CancellationToken cancellationToken = default)
{
- Response result = await HelloLiteralAsync(null).ConfigureAwait(false);
+ Response result = await HelloLiteralAsync(cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -474,16 +480,17 @@ public virtual async Task TopActionAsync(DateTimeOffset action, Reques
/// Service returned a non-success status code.
public virtual Response TopAction(DateTimeOffset action)
{
- Response result = TopAction(action, null);
+ Response result = TopAction(action, context: null);
return Response.FromValue((Thing)result, result);
}
/// top level method.
///
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task> TopActionAsync(DateTimeOffset action)
+ public virtual async Task> TopActionAsync(DateTimeOffset action, CancellationToken cancellationToken = default)
{
- Response result = await TopActionAsync(action, null).ConfigureAwait(false);
+ Response result = await TopActionAsync(action, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -642,7 +649,7 @@ public virtual Response AnonymousBody(string name, BinaryData requiredUni
optionalNullableList?.ToList() as IList ?? new ChangeTrackingList(),
requiredNullableList?.ToList() as IList ?? new ChangeTrackingList(),
null);
- Response result = AnonymousBody(spreadModel, null);
+ Response result = AnonymousBody(spreadModel, context: null);
return Response.FromValue((Thing)result, result);
}
@@ -660,9 +667,10 @@ public virtual Response AnonymousBody(string name, BinaryData requiredUni
/// optional literal float.
/// optional literal bool.
/// optional nullable collection.
+ /// The cancellation token that can be used to cancel the operation.
/// , 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)
+ 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, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(name, nameof(name));
Argument.AssertNotNull(requiredUnion, nameof(requiredUnion));
@@ -683,7 +691,7 @@ public virtual async Task> AnonymousBodyAsync(string name, Binar
optionalNullableList?.ToList() as IList ?? new ChangeTrackingList(),
requiredNullableList?.ToList() as IList ?? new ChangeTrackingList(),
null);
- Response result = await AnonymousBodyAsync(spreadModel, null).ConfigureAwait(false);
+ Response result = await AnonymousBodyAsync(spreadModel, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -738,20 +746,21 @@ public virtual Response FriendlyModel(string name)
Argument.AssertNotNull(name, nameof(name));
Friend spreadModel = new Friend(name, null);
- Response result = FriendlyModel(spreadModel, null);
+ Response result = FriendlyModel(spreadModel, context: null);
return Response.FromValue((Friend)result, result);
}
/// Model can have its friendly name.
/// name of the NotFriend.
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task> FriendlyModelAsync(string name)
+ public virtual async Task> FriendlyModelAsync(string name, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(name, nameof(name));
Friend spreadModel = new Friend(name, null);
- Response result = await FriendlyModelAsync(spreadModel, null).ConfigureAwait(false);
+ Response result = await FriendlyModelAsync(spreadModel, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Friend)result, result);
}
@@ -793,14 +802,15 @@ public virtual async Task AddTimeHeaderAsync(RequestContext context)
/// Service returned a non-success status code.
public virtual Response AddTimeHeader()
{
- return AddTimeHeader(null);
+ return AddTimeHeader(context: null);
}
/// addTimeHeader.
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task AddTimeHeaderAsync()
+ public virtual async Task AddTimeHeaderAsync(CancellationToken cancellationToken = default)
{
- return await AddTimeHeaderAsync(null).ConfigureAwait(false);
+ return await AddTimeHeaderAsync(cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
}
///
@@ -854,20 +864,21 @@ public virtual Response ProjectedNameModel(string name)
Argument.AssertNotNull(name, nameof(name));
ProjectedModel spreadModel = new ProjectedModel(name, null);
- Response result = ProjectedNameModel(spreadModel, null);
+ Response result = ProjectedNameModel(spreadModel, context: null);
return Response.FromValue((ProjectedModel)result, result);
}
/// Model can have its projected name.
/// name of the ModelWithProjectedName.
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task> ProjectedNameModelAsync(string name)
+ public virtual async Task> ProjectedNameModelAsync(string name, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(name, nameof(name));
ProjectedModel spreadModel = new ProjectedModel(name, null);
- Response result = await ProjectedNameModelAsync(spreadModel, null).ConfigureAwait(false);
+ Response result = await ProjectedNameModelAsync(spreadModel, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((ProjectedModel)result, result);
}
@@ -909,15 +920,16 @@ public virtual async Task ReturnsAnonymousModelAsync(RequestContext co
/// Service returned a non-success status code.
public virtual Response ReturnsAnonymousModel()
{
- Response result = ReturnsAnonymousModel(null);
+ Response result = ReturnsAnonymousModel(context: null);
return Response.FromValue((ReturnsAnonymousModelResponse)result, result);
}
/// return anonymous model.
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task> ReturnsAnonymousModelAsync()
+ public virtual async Task> ReturnsAnonymousModelAsync(CancellationToken cancellationToken = default)
{
- Response result = await ReturnsAnonymousModelAsync(null).ConfigureAwait(false);
+ Response result = await ReturnsAnonymousModelAsync(cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((ReturnsAnonymousModelResponse)result, result);
}
@@ -971,19 +983,20 @@ public virtual Response GetUnknownValue(string accept)
{
Argument.AssertNotNull(accept, nameof(accept));
- Response result = GetUnknownValue(accept, null);
+ Response result = GetUnknownValue(accept, context: null);
return Response.FromValue(result.Content.ToObjectFromJson(), result);
}
/// get extensible enum.
///
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task> GetUnknownValueAsync(string accept)
+ public virtual async Task> GetUnknownValueAsync(string accept, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(accept, nameof(accept));
- Response result = await GetUnknownValueAsync(accept, null).ConfigureAwait(false);
+ Response result = await GetUnknownValueAsync(accept, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue(result.Content.ToObjectFromJson(), result);
}
@@ -1037,19 +1050,20 @@ public virtual Response InternalProtocol(Thing body)
{
Argument.AssertNotNull(body, nameof(body));
- Response result = InternalProtocol(body, null);
+ Response result = InternalProtocol(body, context: null);
return Response.FromValue((Thing)result, result);
}
/// When set protocol false and convenient true, then the protocol method should be internal.
///
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task> InternalProtocolAsync(Thing body)
+ public virtual async Task> InternalProtocolAsync(Thing body, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(body, nameof(body));
- Response result = await InternalProtocolAsync(body, null).ConfigureAwait(false);
+ Response result = await InternalProtocolAsync(body, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return Response.FromValue((Thing)result, result);
}
@@ -1091,14 +1105,15 @@ public virtual async Task StillConvenientAsync(RequestContext context)
/// Service returned a non-success status code.
public virtual Response StillConvenient()
{
- return StillConvenient(null);
+ return StillConvenient(context: null);
}
/// When set protocol false and convenient true, the convenient method should be generated even it has the same signature as protocol one.
+ /// The cancellation token that can be used to cancel the operation.
/// Service returned a non-success status code.
- public virtual async Task StillConvenientAsync()
+ public virtual async Task StillConvenientAsync(CancellationToken cancellationToken = default)
{
- return await StillConvenientAsync(null).ConfigureAwait(false);
+ return await StillConvenientAsync(cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
}
///
@@ -1151,18 +1166,19 @@ public virtual Response HeadAsBoolean(string id)
{
Argument.AssertNotNull(id, nameof(id));
- return HeadAsBoolean(id, null);
+ return HeadAsBoolean(id, context: null);
}
/// head as boolean.
///
+ /// The cancellation token that can be used to cancel the operation.
/// is null.
/// Service returned a non-success status code.
- public virtual async Task HeadAsBooleanAsync(string id)
+ public virtual async Task HeadAsBooleanAsync(string id, CancellationToken cancellationToken = default)
{
Argument.AssertNotNull(id, nameof(id));
- return await HeadAsBooleanAsync(id, null).ConfigureAwait(false);
+ return await HeadAsBooleanAsync(id, cancellationToken.CanBeCanceled ? new RequestContext { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
}
}
}
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
deleted file mode 100644
index 86b06504d0c8..000000000000
--- a/eng/packages/http-client-csharp/generator/TestProjects/Local/Basic-TypeSpec/src/Generated/Internal/ClientUriBuilder.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-//
-
-#nullable disable
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Azure.Core;
-
-namespace BasicTypeSpec
-{
- internal partial class ClientUriBuilder : RequestUriBuilder
- {
- private UriBuilder _uriBuilder;
- private StringBuilder _pathBuilder;
- private StringBuilder _queryBuilder;
-
- public ClientUriBuilder()
- {
- }
-
- private UriBuilder UriBuilder => _uriBuilder ??= new UriBuilder();
-
- private StringBuilder PathBuilder => _pathBuilder ??= new StringBuilder(UriBuilder.Path);
-
- private StringBuilder QueryBuilder => _queryBuilder ??= new StringBuilder(UriBuilder.Query);
-
- public void AppendQueryDelimited(string name, IEnumerable value, string delimiter, bool escape = true)
- {
- IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v));
- AppendQuery(name, string.Join(delimiter, stringValues), escape);
- }
-
- public void AppendQueryDelimited(string name, IEnumerable value, string delimiter, string format, bool escape = true)
- {
- IEnumerable stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format));
- AppendQuery(name, string.Join(delimiter, stringValues), escape);
- }
- }
-}