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;
            }
        }
Example #2
0
        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));
        }
Example #4
0
        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;
 }
Example #7
0
 public string Configure(MongoDbServiceInfo si, MongoDbConnectorOptions configuration)
 {
     UpdateConfiguration(si, configuration);
     return(configuration.ToString());
 }