openai/openai-dotnet

Public

mirrored from https://github.com/openai/openai-dotnetAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
achandmsft-patch-2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

codegen/generator/src/Visitors/VirtualMessageCreationVisitor.cs

41lines · modeblame

dff9bb58Jose Arriaga Maldonado1 years ago1using Microsoft.TypeSpec.Generator.ClientModel;
2using Microsoft.TypeSpec.Generator.Primitives;
3using Microsoft.TypeSpec.Generator.Providers;
4
5namespace OpenAILibraryPlugin.Visitors;
6
7/// <summary>
8/// This visitor updates generated PipelineMessage creation methods to be virtual (and thus overrideable via derived clients).
9/// </summary>
10public class VirtualMessageCreationVisitor : ScmLibraryVisitor
11{
12protected override MethodProvider VisitMethod(MethodProvider method)
13{
14if (method.Signature?.ReturnType?.Name != "PipelineMessage"
15|| method.Signature?.Name?.StartsWith("Create") != true
16|| method.Signature?.Name?.EndsWith("Request") != true
17|| method.Signature?.Modifiers.HasFlag(MethodSignatureModifiers.Internal) != true)
18{
19return method;
20}
21
22if (!method.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Virtual))
23{
24MethodSignature newSignature = new(
25method.Signature.Name,
26method.Signature.Description,
27method.Signature.Modifiers | MethodSignatureModifiers.Virtual,
28method.Signature.ReturnType,
29method.Signature.ReturnDescription,
30method.Signature.Parameters,
31method.Signature.Attributes,
32method.Signature.GenericArguments,
33method.Signature.GenericParameterConstraints,
34method.Signature.ExplicitInterface,
35NonDocumentComment: "Plugin customization: make PipelineMessage creation methods virtual");
36method.Update(signature: newSignature);
37}
38
39return method;
40}
41}