@using AutoRest.Go @using AutoRest.Core.Model @using AutoRest.Go.Templates.v1 @using AutoRest.Go.Model @using AutoRest.Core.Utilities @using System.Linq @inherits AutoRest.Core.Template @{ var imports = Model.ClientImports; var modelName = CodeNamerGo.Instance.CamelCase(Model.Name); var methods = Model.ClientMethods.OrderBy(m => m.Name.Value); } @WrapComment("// ", Model.GetDocumentation()) package @Model.Namespace @EmptyLine @Header("// ") @EmptyLine import ( @foreach (var import in imports) { @:@(import) } ) @EmptyLine const ( @if (!Model.IsCustomBaseUri) { // DefaultBaseURI is the default URI used for the service @(Model.ServiceName) DefaultBaseURI = "@Model.BaseUrl" } @(Model.ConstGlobalDefaultParameters) ) @EmptyLine @WrapComment("// ", Model.ClientDocumentation) type @(Model.BaseClient) struct { autorest.Client @if (!Model.IsCustomBaseUri) { @:BaseURI string } @foreach (var p in Model.Properties) { if (!p.SerializedName.IsApiVersion()) { @:@(string.Format((p.IsRequired || p.ModelType.CanBeEmpty() ? "{0} {1}" : "{0} *{1}"), p.Name, p.ModelType.Name)) } } } @EmptyLine @WrapComment("// ", string.Format("New creates an instance of the {0} client.", Model.BaseClient)) func New(@(Model.GlobalParameters))@(Model.BaseClient) { @if (!Model.IsCustomBaseUri) { @:return NewWithBaseURI(DefaultBaseURI, @(Model.HelperGlobalParameters)) } else { @:return NewWithoutDefaults(@(Model.HelperAllGlobalParameters)) } } @if (!Model.IsCustomBaseUri) { @EmptyLine @WrapComment("// ", string.Format("NewWithBaseURI creates an instance of the {0} client.", Model.BaseClient)) func NewWithBaseURI(baseURI string, @(Model.GlobalParameters)) @(Model.BaseClient) { return @(Model.BaseClient){ Client: autorest.NewClientWithUserAgent(UserAgent()), BaseURI: baseURI, @foreach (var p in Model.Properties) { if (!p.SerializedName.IsApiVersion()) { if (p.DefaultValue.FixedValue.IsNullOrEmpty()) { @:@(string.Format("{0}: {1},", p.Name, p.Name.Value.ToSentence())) } else { @:@(string.Format("{0}: Default{1},", p.Name, p.Name.Value.ToPascalCase())) } } } } } } else { @EmptyLine @WrapComment("// ", string.Format("NewWithoutDefaults creates an instance of the {0} client.", Model.BaseClient)) func NewWithoutDefaults(@(Model.AllGlobalParameters)) @(Model.BaseClient) { return @(Model.BaseClient){ Client: autorest.NewClientWithUserAgent(UserAgent()), @foreach(var p in Model.Properties) { if (!p.SerializedName.IsApiVersion()) { @:@(string.Format("{0}: {1},", p.Name, p.Name.Value.ToSentence())) } } } } } @EmptyLine @foreach (var method in methods) { @(Include(new MethodTemplate(), method)) @EmptyLine }