public void UpdateConfiguration(MongoDbServiceInfo si, MongoDbConnectorOptions configuration) { if (si == null) { return; } if (!string.IsNullOrEmpty(si.Uri)) { configuration.Uri = si.Uri; // the rest of this is unlikely to really be needed when a uri is available // but the properties are here, so let's go ahead and set them just in case configuration.Port = si.Port; if (configuration.UrlEncodedCredentials) { configuration.Username = WebUtility.UrlDecode(si.UserName); configuration.Password = WebUtility.UrlDecode(si.Password); } else { configuration.Username = si.UserName; configuration.Password = si.Password; } configuration.Server = si.Host; configuration.Database = si.Path; } }
private Connection GetConnection(MongoDbServiceInfo info, IConfiguration configuration) { var mongoConfig = new MongoDbConnectorOptions(configuration); var configurer = new MongoDbProviderConfigurer(); return(new Connection(configurer.Configure(info, mongoConfig), "MongoDb", info)); }
public static IHealthContributor GetMongoDbHealthContributor(IConfiguration configuration, ILogger <MongoDbHealthContributor> logger = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var info = configuration.GetSingletonServiceInfo <MongoDbServiceInfo>(); var mongoOptions = new MongoDbConnectorOptions(configuration); var factory = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoClient); return(new MongoDbHealthContributor(factory, logger)); }
private static void DoAdd(IServiceCollection services, MongoDbServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime, bool addSteeltoeHealthChecks = false) { var mongoClient = MongoDbTypeLocator.MongoClient; var mongoOptions = new MongoDbConnectorOptions(config); var clientFactory = new MongoDbConnectorFactory(info, mongoOptions, mongoClient); services.Add(new ServiceDescriptor(MongoDbTypeLocator.IMongoClient, clientFactory.Create, contextLifetime)); services.Add(new ServiceDescriptor(mongoClient, clientFactory.Create, contextLifetime)); if (!services.Any(s => s.ServiceType == typeof(HealthCheckService)) || addSteeltoeHealthChecks) { services.Add(new ServiceDescriptor(typeof(IHealthContributor), ctx => new MongoDbHealthContributor(clientFactory, ctx.GetService <ILogger <MongoDbHealthContributor> >()), ServiceLifetime.Singleton)); } var mongoInfo = ReflectionHelpers.FindType(MongoDbTypeLocator.Assemblies, MongoDbTypeLocator.MongoConnectionInfo); var urlFactory = new MongoDbConnectorFactory(info, mongoOptions, mongoInfo); services.Add(new ServiceDescriptor(mongoInfo, urlFactory.Create, contextLifetime)); }
public static IHealthContributor GetMongoDbHealthContributor(IConfiguration configuration, ILogger <MongoDbHealthContributor> logger = null) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var info = configuration.GetSingletonServiceInfo <MongoDbServiceInfo>(); var mongoOptions = new MongoDbConnectorOptions(configuration); var factory = new MongoDbConnectorFactory(info, mongoOptions, MongoDbTypeLocator.MongoClient); var timeout = 5000; if (mongoOptions.Options.TryGetValue("connectTimeoutMS", out var value)) { int.TryParse(value, out timeout); } var contributor = new MongoDbHealthContributor(factory, logger, timeout); return(contributor); }
public MongoDbConnectorFactory(MongoDbServiceInfo sinfo, MongoDbConnectorOptions config, Type type) { _info = sinfo; _config = config ?? throw new ArgumentNullException(nameof(config)); ConnectorType = type; }
public string Configure(MongoDbServiceInfo si, MongoDbConnectorOptions configuration) { UpdateConfiguration(si, configuration); return(configuration.ToString()); }