@using System @using System.Linq @using AutoRest.Core.Utilities @using AutoRest.CSharp.Azure.Model @using AutoRest.CSharp.Model @inherits AutoRest.Core.Template @{ var serviceName = Model.ServiceName; var className = serviceName + "Manager"; } @Header("// ") using Microsoft.Azure.Management.ResourceManager.Fluent.Core; using System; using System.Linq; using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication; namespace Microsoft.Azure.Management.@(serviceName).Fluent { public class @className : Manager, I@(className) { #region ctrs private @(className)(RestClient restClient, string subscriptionId) : base(restClient, subscriptionId, new @(Model.Name)(new Uri(restClient.BaseUri), restClient.Credentials, restClient.RootHttpHandler, restClient.Handlers.ToArray()) { SubscriptionId = subscriptionId }) { } #endregion #region @className builder /// /// Creates an instance of @(className) that exposes storage resource management API entry points. /// /// the credentials to use /// the subscription UUID /// the @(className) public static I@(className) Authenticate(AzureCredentials credentials, string subscriptionId) { return Authenticate(RestClient.Configure() .WithEnvironment(credentials.Environment) .WithCredentials(credentials) .WithDelegatingHandler(new ProviderRegistrationDelegatingHandler(credentials)) .Build(), subscriptionId); } /// /// Creates an instance of @(className) that exposes storage resource management API entry points. /// /// the RestClient to be used for API calls. /// the subscription UUID /// the @(className) public static I@(className) Authenticate(RestClient restClient, string subscriptionId) { return new @(className)(restClient, subscriptionId); } /// /// Get a Configurable instance that can be used to create StorageManager with optional configuration. /// /// the instance allowing configurations public static IConfigurable Configure() { return new Configurable(); } #endregion #region IConfigurable and it's implementation /// /// The inteface allowing configurations to be set. /// public interface IConfigurable : IAzureConfigurable { I@(className) Authenticate(AzureCredentials credentials, string subscriptionId); } protected class Configurable : AzureConfigurable, IConfigurable { /// /// Creates an instance of @(className) that exposes @(serviceName) management API entry points. /// /// credentials the credentials to use /// The subscription UUID /// the interface exposing @(serviceName) management API entry points that work in a subscription public I@(className) Authenticate(AzureCredentials credentials, string subscriptionId) { return new @(className)(BuildRestClient(credentials), subscriptionId); } } #endregion } /// /// Entry point to Azure @(serviceName) resource management. /// public interface I@(className) : IManager { } }