Microsoft.WindowsAzure.Commands.Storage.Common.Cmdlet.NewAzureStorageContext.GetStorageAccountWithAzureEnvironment C# (CSharp) Method

GetStorageAccountWithAzureEnvironment() private method

Get storage account and use specific azure environment
private GetStorageAccountWithAzureEnvironment ( Microsoft.WindowsAzure.Storage.Auth.StorageCredentials credential, string storageAccountName, bool useHttps, string azureEnvironmentName = "" ) : Microsoft.WindowsAzure.Storage.CloudStorageAccount
credential Microsoft.WindowsAzure.Storage.Auth.StorageCredentials Storage credential
storageAccountName string Storage account name, it's used for build end point
useHttps bool Use secure Http protocol
azureEnvironmentName string Environment name
return Microsoft.WindowsAzure.Storage.CloudStorageAccount
        internal CloudStorageAccount GetStorageAccountWithAzureEnvironment(StorageCredentials credential,
            string storageAccountName, bool useHttps, string azureEnvironmentName = "")
        {
            AzureEnvironment azureEnvironment = null;

            if (null != SMProfile)
            {
                if (DefaultContext != null && string.IsNullOrEmpty(azureEnvironmentName))
                {
                    azureEnvironment = DefaultContext.Environment;

                    if (null == azureEnvironment)
                    {
                        azureEnvironmentName = EnvironmentName.AzureCloud;
                    }
                }

                if (null == azureEnvironment)
                {
                    try
                    {
                        var profileClient = new ProfileClient(SMProfile);
                        azureEnvironment = profileClient.GetEnvironmentOrDefault(azureEnvironmentName);
                    }
                    catch (ArgumentException e)
                    {
                        throw new ArgumentException(e.Message + " " + string.Format(CultureInfo.CurrentCulture, Resources.ValidEnvironmentName, EnvironmentName.AzureCloud, EnvironmentName.AzureChinaCloud));
                    }
                }

            }

            if (null != azureEnvironment)
            {
                try
                {
                    Uri blobEndPoint = azureEnvironment.GetStorageBlobEndpoint(storageAccountName, useHttps);
                    Uri queueEndPoint = azureEnvironment.GetStorageQueueEndpoint(storageAccountName, useHttps);
                    Uri tableEndPoint = azureEnvironment.GetStorageTableEndpoint(storageAccountName, useHttps);
                    Uri fileEndPoint = azureEnvironment.GetStorageFileEndpoint(storageAccountName, useHttps);

                    return new CloudStorageAccount(credential, blobEndPoint, queueEndPoint, tableEndPoint, fileEndPoint);
                }
                catch (ArgumentNullException)
                {
                    // the environment may not have value for StorageEndpointSuffix, in this case, we'll still use the default domain of "core.windows.net"
                }
            }

            return GetStorageAccountWithEndPoint(credential, storageAccountName, useHttps, Resources.DefaultDomain);
        }