Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update ClientPipelineApi.CreateMessage abstraction #4816

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Providers;
using Microsoft.Generator.CSharp.Snippets;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
Expand All @@ -18,9 +19,7 @@ protected ClientPipelineApi(Type type, ValueExpression original) : base(type, or
{
}

public abstract HttpMessageApi CreateMessage();

public abstract ValueExpression CreateMessage(HttpRequestOptionsApi requestOptions, ValueExpression responseClassifier);
public abstract ValueExpression CreateMessage(ParameterProvider requestOptions, ValueExpression responseClassifier);

public abstract InvokeMethodExpression Send(HttpMessageApi message);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.ClientModel.Primitives;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Providers;
using static Microsoft.Generator.CSharp.Snippets.Snippet;

namespace Microsoft.Generator.CSharp.ClientModel.Providers
Expand All @@ -26,12 +27,9 @@ public ClientPipelineProvider(ValueExpression original) : base(typeof(ClientPipe
public override ValueExpression Create(ValueExpression options, ValueExpression perRetryPolicies)
=> Static<ClientPipeline>().Invoke(nameof(ClientPipeline.Create), [options, New.Array(ClientModelPlugin.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType), perRetryPolicies, New.Array(ClientModelPlugin.Instance.TypeFactory.ClientPipelineApi.PipelinePolicyType)]).As<ClientPipeline>();

public override HttpMessageApi CreateMessage()
public override ValueExpression CreateMessage(ParameterProvider requestOptions, ValueExpression responseClassifier)
=> new PipelineMessageProvider(Original.Invoke(nameof(ClientPipeline.CreateMessage)));

public override ValueExpression CreateMessage(HttpRequestOptionsApi requestOptions, ValueExpression responseClassifier)
=> Original.Invoke(nameof(ClientPipeline.CreateMessage), requestOptions, responseClassifier).As<PipelineMessage>();

public override ClientPipelineApi FromExpression(ValueExpression expression)
=> new ClientPipelineProvider(expression);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ private MethodProvider BuildCreateRequestMethod(InputOperation operation)
signature,
new MethodBodyStatements(
[
Declare("message", pipelineField.CreateMessage().ToApi<HttpMessageApi>(), out HttpMessageApi message),
Declare("message", pipelineField.CreateMessage(options, classifier).ToApi<HttpMessageApi>(), out HttpMessageApi message),
message.ResponseClassifier().Assign(classifier).Terminate(),
Declare("request", message.Request().ToApi<HttpRequestApi>(), out HttpRequestApi request), // ScopedApi<PipelineRequest>
request.SetMethod(operation.HttpMethod).Terminate(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Microsoft.Generator.CSharp.ClientModel.Providers;
using Microsoft.Generator.CSharp.Expressions;
using Microsoft.Generator.CSharp.Primitives;
using Microsoft.Generator.CSharp.Providers;
using Microsoft.Generator.CSharp.Tests.Common;
using NUnit.Framework;

Expand All @@ -28,7 +29,7 @@ public void ValidateBodyOfRestClientOperationIsOverridden()

Assert.NotNull(method);
Assert.NotNull(method!.BodyStatements);
var test = method?.BodyStatements?.ToDisplayString();
var test = method!.BodyStatements!.ToDisplayString();
Assert.AreEqual(Helpers.GetExpectedFromFile(), method!.BodyStatements!.ToDisplayString());
}

Expand Down Expand Up @@ -58,10 +59,7 @@ public TestClientPipelineApi(ValueExpression original) : base(typeof(string), or
public override ValueExpression Create(ValueExpression options, ValueExpression perRetryPolicies)
=> Original.Invoke("GetFakeCreate", [options, perRetryPolicies]);

public override HttpMessageApi CreateMessage()
=> Original.Invoke("GetFakeCreateMessage").ToApi<HttpMessageApi>();

public override ValueExpression CreateMessage(HttpRequestOptionsApi requestOptions, ValueExpression responseClassifier)
public override ValueExpression CreateMessage(ParameterProvider requestOptions, ValueExpression responseClassifier)
=> Original.Invoke("GetFakeCreateMessage", [requestOptions, responseClassifier]);

public override ClientPipelineApi FromExpression(ValueExpression expression)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public void ValidateBodyOfProcessMessageIsOverridden()

Assert.IsNotNull(method);
Assert.IsNotNull(method!.BodyStatements);
var test = method!.BodyStatements!.ToDisplayString();
Assert.AreEqual(Helpers.GetExpectedFromFile(), method!.BodyStatements!.ToDisplayString());
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.GetFakeCreateMessage();
global::System.ClientModel.Primitives.PipelineMessage message = Pipeline.GetFakeCreateMessage(options, PipelineMessageClassifier200);
message.ResponseClassifier = PipelineMessageClassifier200;
global::System.ClientModel.Primitives.PipelineRequest request = message.Request;
request.Method = "GET";
Expand Down
Loading