/// <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.Automatic) { 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 (_fsync != null) { query.AppendFormat("fsync={0};", XmlConvert.ToString(_fsync.Value)); } if (_journal != null) { query.AppendFormat("journal={0};", XmlConvert.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 (_secondaryAcceptableLatency != MongoDefaults.SecondaryAcceptableLatency) { query.AppendFormat("secondaryAcceptableLatency={0};", FormatTimeSpan(_secondaryAcceptableLatency)); } 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(); if (_scheme == ConnectionStringScheme.MongoDB) { url.Append("mongodb://"); } else { url.Append("mongodb+srv://"); } 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 || _scheme == ConnectionStringScheme.MongoDBPlusSrv) { 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 (_applicationName != null) { query.AppendFormat("appname={0};", _applicationName); } if (_ipv6) { query.AppendFormat("ipv6=true;"); } if (_scheme == ConnectionStringScheme.MongoDBPlusSrv) { if (!_useSsl) { query.AppendFormat("ssl=false;"); } } else { 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 (_readConcernLevel != null) { query.AppendFormat("readConcernLevel={0};", MongoUtils.ToCamelCase(_readConcernLevel.Value.ToString())); } 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 (_readPreference.MaxStaleness.HasValue) { query.AppendFormat("maxStaleness={0};", FormatTimeSpan(_readPreference.MaxStaleness.Value)); } } 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 (_heartbeatInterval != ServerSettings.DefaultHeartbeatInterval) { query.AppendFormat("heartbeatInterval={0};", FormatTimeSpan(_heartbeatInterval)); } if (_heartbeatTimeout != ServerSettings.DefaultHeartbeatTimeout) { query.AppendFormat("heartbeatTimeout={0};", FormatTimeSpan(_heartbeatTimeout)); } 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 (_serverSelectionTimeout != MongoDefaults.ServerSelectionTimeout) { query.AppendFormat("serverSelectionTimeout={0};", FormatTimeSpan(_serverSelectionTimeout)); } 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 (_retryWrites.GetValueOrDefault(false)) { query.AppendFormat("retryWrites=true;"); } 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.Equals("MONGODB-CR", StringComparison.InvariantCultureIgnoreCase)) { query.AppendFormat("authMechanism={0};", _authenticationMechanism); } if (_gssapiServiceName != null) { query.AppendFormat("gssapiServiceName={0};", _gssapiServiceName); } 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};", XmlConvert.ToString(_fsync.Value)); } if (_journal != null) { query.AppendFormat("journal={0};", XmlConvert.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 (_secondaryAcceptableLatency != MongoDefaults.SecondaryAcceptableLatency) { query.AppendFormat("secondaryAcceptableLatency={0};", FormatTimeSpan(_secondaryAcceptableLatency)); } 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()); }