in src/AutoRest.CSharp/DataPlane/Generation/DataPlaneClientWriter.cs [127:260]
private void WriteClientCtors(CodeWriter writer, DataPlaneClient client, DataPlaneOutputLibrary library)
{
writer.Line();
writer.WriteXmlDocumentationSummary($"Initializes a new instance of {client.Type.Name} for mocking.");
using (writer.Scope($"protected {client.Type.Name:D}()"))
{
}
writer.Line();
var clientOptionsName = library.ClientOptions!.Declaration.Name;
if (library.Authentication.ApiKey != null)
{
var ctorParams = client.GetClientConstructorParameters(Configuration.ApiTypes.KeyCredentialType);
writer.WriteXmlDocumentationSummary($"Initializes a new instance of {client.Type.Name}");
foreach (Parameter parameter in ctorParams)
{
writer.WriteXmlDocumentationParameter(parameter.Name, $"{parameter.Description}");
}
writer.WriteXmlDocumentationParameter(OptionsVariable, $"The options for configuring the client.");
writer.Append($"public {client.Type.Name:D}(");
foreach (Parameter parameter in ctorParams)
{
writer.WriteParameter(parameter);
}
writer.Append($" {clientOptionsName} {OptionsVariable} = null)");
using (writer.Scope())
{
writer.WriteParameterNullChecks(ctorParams);
writer.Line();
writer.Line($"{OptionsVariable} ??= new {clientOptionsName}();");
writer.Line($"{ClientDiagnosticsField.GetReferenceFormattable()} = new {typeof(ClientDiagnostics)}({OptionsVariable});");
writer.Line(Configuration.ApiTypes.GetHttpPipelineKeyCredentialString(PipelineField, OptionsVariable, CredentialVariable, library.Authentication.ApiKey.Name));
writer.Append($"this.RestClient = new {client.RestClient.Type}(");
foreach (var parameter in client.RestClient.Parameters)
{
if (parameter.IsApiVersionParameter)
{
writer.Append($"{OptionsVariable}.Version, ");
}
else if (parameter == KnownParameters.ClientDiagnostics)
{
writer.Append($"{ClientDiagnosticsField.GetReferenceFormattable()}, ");
}
else if (parameter == KnownParameters.Pipeline)
{
writer.Append($"{PipelineField}, ");
}
else
{
writer.Append($"{parameter.Name}, ");
}
}
writer.RemoveTrailingComma();
writer.Append($");");
}
writer.Line();
}
if (library.Authentication.OAuth2 != null)
{
var ctorParams = client.GetClientConstructorParameters(typeof(TokenCredential));
writer.WriteXmlDocumentationSummary($"Initializes a new instance of {client.Type.Name}");
foreach (Parameter parameter in ctorParams)
{
writer.WriteXmlDocumentationParameter(parameter.Name, $"{parameter.Description}");
}
writer.WriteXmlDocumentationParameter(OptionsVariable, $"The options for configuring the client.");
writer.Append($"public {client.Type.Name:D}(");
foreach (Parameter parameter in ctorParams)
{
writer.WriteParameter(parameter);
}
writer.Append($" {clientOptionsName} {OptionsVariable} = null)");
using (writer.Scope())
{
writer.WriteParameterNullChecks(ctorParams);
writer.Line();
writer.Line($"{OptionsVariable} ??= new {clientOptionsName}();");
writer.Line($"{ClientDiagnosticsField.GetReferenceFormattable()} = new {typeof(ClientDiagnostics)}({OptionsVariable});");
var scopesParam = new CodeWriterDeclaration("scopes");
writer.Append($"string[] {scopesParam:D} = ");
writer.Append($"{{ ");
foreach (var credentialScope in library.Authentication.OAuth2.Scopes)
{
writer.Append($"{credentialScope:L}, ");
}
writer.RemoveTrailingComma();
writer.Line($"}};");
writer.Line(Configuration.ApiTypes.GetHttpPipelineBearerString(PipelineField, OptionsVariable, CredentialVariable, scopesParam));
writer.Append($"this.RestClient = new {client.RestClient.Type}(");
foreach (var parameter in client.RestClient.Parameters)
{
if (parameter.IsApiVersionParameter)
{
writer.Append($"{OptionsVariable}.Version, ");
}
else if (parameter == KnownParameters.ClientDiagnostics)
{
writer.Append($"{ClientDiagnosticsField.GetReferenceFormattable()}, ");
}
else if (parameter == KnownParameters.Pipeline)
{
writer.Append($"{PipelineField}, ");
}
else
{
writer.Append($"{parameter.Name}, ");
}
}
writer.RemoveTrailingComma();
writer.Append($");");
}
writer.Line();
}
var internalConstructor = BuildInternalConstructor(client);
writer.WriteMethodDocumentation(internalConstructor);
using (writer.WriteMethodDeclaration(internalConstructor))
{
writer
.Line($"this.RestClient = new {client.RestClient.Type}({client.RestClient.Parameters.GetIdentifiersFormattable()});")
.Line($"{ClientDiagnosticsField.GetReferenceFormattable()} = {KnownParameters.ClientDiagnostics.Name:I};")
.Line($"{PipelineField} = {KnownParameters.Pipeline.Name:I};");
}
writer.Line();
}