Platform.StreamStorage.Azure.AzureEventStore.TryGetContainerName C# (CSharp) Method

TryGetContainerName() public static method

public static TryGetContainerName ( AzureStoreConfiguration config, Microsoft.WindowsAzure.StorageClient.CloudBlobDirectory dir, EventStoreId &container ) : bool
config AzureStoreConfiguration
dir Microsoft.WindowsAzure.StorageClient.CloudBlobDirectory
container EventStoreId
return bool
        public static bool TryGetContainerName(
            AzureStoreConfiguration config, 
            CloudBlobDirectory dir,
            out EventStoreId container)
        {
            var topic = dir.Uri.ToString().Remove(0, dir.Container.Uri.ToString().Length).Trim('/');

            container = null;
            if (EventStoreId.IsValid(topic)!= EventStoreId.Rule.Valid)
                return false;
            container = EventStoreId.Parse(topic);
            return IsValid(config, container);
        }

Usage Example

        public AzureEventStoreManager(AzureStoreConfiguration config)
        {
            _config = config;

            var account = CloudStorageAccount.Parse(config.ConnectionString);
            var client  = account.CreateCloudBlobClient();

            var rootAzureContainer = client.GetContainerReference(config.RootBlobContainerName);

            rootAzureContainer.CreateIfNotExist();

            foreach (var blob in rootAzureContainer.ListBlobs())
            {
                var dir = blob as CloudBlobDirectory;

                if (dir == null)
                {
                    continue;
                }

                EventStoreId container;

                if (AzureEventStore.TryGetContainerName(_config, dir, out container))
                {
                    var value = AzureEventStore.OpenExistingForWriting(config, container);
                    _stores.Add(container.Name, value);
                }
                else
                {
                    Log.Info("Skipping invalid folder {0}", rootAzureContainer.Uri.MakeRelativeUri(dir.Uri));
                }
            }
        }