/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (defaultCredentials != null) { url.AppendFormat("{0}:{1}@", Uri.EscapeDataString(defaultCredentials.Username), Uri.EscapeDataString(defaultCredentials.Password)); } if (servers != null) { bool firstServer = true; foreach (MongoServerAddress server in servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (databaseName != null) { url.Append("/"); url.Append(databaseName); } var query = new StringBuilder(); if (ipv6) { query.AppendFormat("ipv6=true;"); } if ( connectionMode == ConnectionMode.Direct && servers != null && servers.Count() != 1 || connectionMode == ConnectionMode.ReplicaSet && (servers == null || servers.Count() == 1) ) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(connectionMode.ToString())); } if (!string.IsNullOrEmpty(replicaSetName)) { query.AppendFormat("replicaSet={0};", replicaSetName); } if (slaveOk) { query.AppendFormat("slaveOk=true;"); } if (safeMode != null && safeMode.Enabled) { query.AppendFormat("safe=true;"); if (safeMode.FSync) { query.AppendFormat("fsync={0};", (safeMode.FSync) ? "true" : "false"); } if (safeMode.W != 0) { query.AppendFormat("w={0};", safeMode.W); if (safeMode.WTimeout != TimeSpan.Zero) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(safeMode.WTimeout)); } } } if (connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(connectTimeout)); } if (maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(maxConnectionIdleTime)); } if (maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(maxConnectionLifeTime)); } if (maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", maxConnectionPoolSize); } if (minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", minConnectionPoolSize); } if (socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(socketTimeout)); } if (waitQueueMultiple != 00 && waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", waitQueueMultiple); } if (waitQueueSize != 0 && waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", waitQueueSize); } if (waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("guids={0};", guidRepresentation); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }
/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (!string.IsNullOrEmpty(_username)) { url.Append(Uri.EscapeDataString(_username)); if (_password != null) { url.AppendFormat(":{0}", Uri.EscapeDataString(_password)); } url.Append("@"); } else if (_password != null) { // this would be weird and we really shouldn't be here... url.AppendFormat(":{0}@", _password); } if (_servers != null) { bool firstServer = true; foreach (MongoServerAddress server in _servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (_databaseName != null) { url.Append("/"); url.Append(_databaseName); } var query = new StringBuilder(); if (_authenticationMechanism != null) { query.AppendFormat("authMechanism={0};", _authenticationMechanism); } if (_authenticationMechanismProperties.Any()) { query.AppendFormat( "authMechanismProperties={0};", string.Join(",", _authenticationMechanismProperties .Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray())); } if (_authenticationSource != null) { query.AppendFormat("authSource={0};", _authenticationSource); } if (_ipv6) { query.AppendFormat("ipv6=true;"); } if (_useSsl) { query.AppendFormat("ssl=true;"); } if (!_verifySslCertificate) { query.AppendFormat("sslVerifyCertificate=false;"); } if (_connectionMode != ConnectionMode.Automatic) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(_connectionMode.ToString())); } if (!string.IsNullOrEmpty(_replicaSetName)) { query.AppendFormat("replicaSet={0};", _replicaSetName); } if (_readPreference != null) { query.AppendFormat("readPreference={0};", MongoUtils.ToCamelCase(_readPreference.ReadPreferenceMode.ToString())); if (_readPreference.TagSets != null) { foreach (var tagSet in _readPreference.TagSets) { query.AppendFormat("readPreferenceTags={0};", string.Join(",", tagSet.Tags.Select(t => string.Format("{0}:{1}", t.Name, t.Value)).ToArray())); } } } if (_fsync != null) { query.AppendFormat("fsync={0};", JsonConvert.ToString(_fsync.Value)); } if (_journal != null) { query.AppendFormat("journal={0};", JsonConvert.ToString(_journal.Value)); } if (_w != null) { query.AppendFormat("w={0};", _w); } if (_wTimeout != null) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(_wTimeout.Value)); } if (_connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(_connectTimeout)); } if (_maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(_maxConnectionIdleTime)); } if (_maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(_maxConnectionLifeTime)); } if (_maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", _maxConnectionPoolSize); } if (_minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", _minConnectionPoolSize); } if (_localThreshold != MongoDefaults.LocalThreshold) { query.AppendFormat("localThreshold={0};", FormatTimeSpan(_localThreshold)); } if (_socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(_socketTimeout)); } if (_waitQueueMultiple != 0.0 && _waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", _waitQueueMultiple); } if (_waitQueueSize != 0 && _waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", _waitQueueSize); } if (_waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (_guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("uuidRepresentation={0};", (_guidRepresentation == GuidRepresentation.CSharpLegacy) ? "csharpLegacy" : MongoUtils.ToCamelCase(_guidRepresentation.ToString())); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (_databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }
/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (_defaultCredentials != null) { url.AppendFormat("{0}:{1}@", Uri.EscapeDataString(_defaultCredentials.Username), Uri.EscapeDataString(_defaultCredentials.Password)); } if (_servers != null) { bool firstServer = true; foreach (MongoServerAddress server in _servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (_databaseName != null) { url.Append("/"); url.Append(_databaseName); } var query = new StringBuilder(); if (_ipv6) { query.AppendFormat("ipv6=true;"); } if (_useSsl) { query.AppendFormat("ssl=true;"); if (!_verifySslCertificate) { query.AppendFormat("sslVerifyCertificate=false;"); } } if (_connectionMode == ConnectionMode.Direct && _servers != null && _servers.Count() != 1 || _connectionMode == ConnectionMode.ReplicaSet && (_servers == null || _servers.Count() == 1)) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(_connectionMode.ToString())); } if (!string.IsNullOrEmpty(_replicaSetName)) { query.AppendFormat("replicaSet={0};", _replicaSetName); } if (_slaveOk.HasValue) { query.AppendFormat("slaveOk={0};", _slaveOk.Value ? "true" : "false"); // note: bool.ToString() returns "True" and "False" } if (_readPreference != null) { query.AppendFormat("readPreference={0};", MongoUtils.ToCamelCase(_readPreference.ReadPreferenceMode.ToString())); if (_readPreference.TagSets != null) { foreach (var tagSet in _readPreference.TagSets) { query.AppendFormat("readPreferenceTags={0};", string.Join(",", tagSet.Select(t => string.Format("{0}:{1}", t.Name, t.Value)).ToArray())); } } } if (_safeMode != null && _safeMode.Enabled) { query.AppendFormat("safe=true;"); if (_safeMode.FSync) { query.Append("fsync=true;"); } if (_safeMode.Journal) { query.Append("journal=true;"); } if (_safeMode.W != 0 || _safeMode.WMode != null) { if (_safeMode.W != 0) { query.AppendFormat("w={0};", _safeMode.W); } else { query.AppendFormat("w={0};", _safeMode.WMode); } if (_safeMode.WTimeout != TimeSpan.Zero) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(_safeMode.WTimeout)); } } } if (_connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(_connectTimeout)); } if (_maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(_maxConnectionIdleTime)); } if (_maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(_maxConnectionLifeTime)); } if (_maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", _maxConnectionPoolSize); } if (_minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", _minConnectionPoolSize); } if (_socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(_socketTimeout)); } if (_waitQueueMultiple != 0.0 && _waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", _waitQueueMultiple); } if (_waitQueueSize != 0 && _waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", _waitQueueSize); } if (_waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (_guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("uuidRepresentation={0};", _guidRepresentation); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (_databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }