示例#1
0
        /// <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);
        }
示例#2
0
        public void ParseConnectionString(string connString)
        {
            ConnectionStringParser <RavenConnectionStringOptions> connectionStringParser = ConnectionStringParser <RavenConnectionStringOptions> .FromConnectionString(connString);

            connectionStringParser.Parse();
            this.SetConnectionStringSettings(connectionStringParser.ConnectionStringOptions);
        }