public static MongoClientSettings FromUrl(MongoUrl url)
{
var clientSettings = new MongoClientSettings();
clientSettings.ConnectionMode = url.ConnectionMode;
clientSettings.ConnectTimeout = url.ConnectTimeout;
clientSettings.CredentialsStore = new MongoCredentialsStore();
clientSettings.DefaultCredentials = url.DefaultCredentials;
clientSettings.GuidRepresentation = url.GuidRepresentation;
clientSettings.IPv6 = url.IPv6;
clientSettings.MaxConnectionIdleTime = url.MaxConnectionIdleTime;
clientSettings.MaxConnectionLifeTime = url.MaxConnectionLifeTime;
clientSettings.MaxConnectionPoolSize = url.MaxConnectionPoolSize;
clientSettings.MinConnectionPoolSize = url.MinConnectionPoolSize;
clientSettings.ReadPreference = (url.ReadPreference == null) ? ReadPreference.Primary : url.ReadPreference;
clientSettings.ReplicaSetName = url.ReplicaSetName;
clientSettings.SecondaryAcceptableLatency = url.SecondaryAcceptableLatency;
clientSettings.Servers = new List<MongoServerAddress>(url.Servers);
clientSettings.SocketTimeout = url.SocketTimeout;
clientSettings.UseSsl = url.UseSsl;
clientSettings.VerifySslCertificate = url.VerifySslCertificate;
clientSettings.WaitQueueSize = url.ComputedWaitQueueSize;
clientSettings.WaitQueueTimeout = url.WaitQueueTimeout;
clientSettings.WriteConcern = url.GetWriteConcern(true); // WriteConcern is enabled by default for MongoClient
return clientSettings;
}