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);
}