/// <summary> /// Parses sharded file system connection strings. /// </summary> /// <param name="connStrings">Dictionary of shard connection strings and their names.</param> /// <param name="shardConnStringPrefix">Shard connection string name prefix.</param> /// <returns></returns> public static Dictionary <string, IAsyncFilesCommands> ParseShardedFilesServerConnectionStrings(IDictionary <string, string> connStrings, string shardConnStringPrefix = "RavenFSShard:") { // An example usage in WebAPI //var connStrings = ConfigurationManager.ConnectionStrings.Cast<ConnectionStringSettings>() // .Where(c => c.Name.StartsWith(shardConnStringPrefix, StringComparison.OrdinalIgnoreCase)); var shards = connStrings .Where(c => c.Key.StartsWith(shardConnStringPrefix, StringComparison.OrdinalIgnoreCase)) .ToDictionary(c => c.Key.Substring(shardConnStringPrefix.Length), c => { var Url = string.Empty; var DefaultFileSystem = string.Empty; /* * Taken from FilesStore.HandleConnectionStringOptions() method */ var parser = ConnectionStringParser <FilesConnectionStringOptions> .FromConnectionString(c.Value); parser.Parse(); var options = parser.ConnectionStringOptions; //if (options.Credentials != null) // Credentials = options.Credentials; if (string.IsNullOrEmpty(options.Url) == false) { Url = options.Url; } if (string.IsNullOrEmpty(options.DefaultFileSystem) == false) { DefaultFileSystem = options.DefaultFileSystem; } //if (string.IsNullOrEmpty(options.ApiKey) == false) // ApiKey = options.ApiKey; return(new AsyncFilesServerClient(Url, DefaultFileSystem) as IAsyncFilesCommands); }); return(shards); }
public void ParseConnectionString(string connString) { ConnectionStringParser <RavenConnectionStringOptions> connectionStringParser = ConnectionStringParser <RavenConnectionStringOptions> .FromConnectionString(connString); connectionStringParser.Parse(); this.SetConnectionStringSettings(connectionStringParser.ConnectionStringOptions); }