/// <summary> /// This method provides a factory for instantiating a MongoDB connection from Docker Secrets or Environment Variables /// </summary> /// <typeparam name="TConfiguration"></typeparam> /// <returns></returns> public static ClientBuilder FromConfiguration <TConfiguration>() where TConfiguration : Configuration, new() { // Check the configuration type for Docker Secrets if (typeof(TConfiguration) == typeof(IDockerConfiguration)) { return(new ClientBuilder( Core.Convert.MapWithValueGetter <TConfiguration, DockerSecretNameAttribute>( (attribute, type, value) => Docker.Get(attribute.Name)))); } // Check the configuration type for the Environment if (typeof(TConfiguration) == typeof(IEnvironmentConfiguration)) { return(new ClientBuilder( Core.Convert.MapWithValueGetter <TConfiguration, EnvironmentVariableAttribute>( ((attribute, type, value) => Environment.Get(attribute.Name))))); } // If we're here, just return a new instance return(new ClientBuilder()); }
/// <summary> /// This method instantiates the connection from the environment /// </summary> public DockerConnection() { // Localize the docker settings construct DockerConnectionSettings connectionSettings = Convert.MapWithValueGetter <DockerConnectionSettings, DockerSecretNameAttribute>((attribute, type, currentValue) => Docker.Get(attribute.Name)); // Setup the instance WithAllowAdminFlag(connectionSettings.AllowAdmin) .WithDatabaseAtIndex(connectionSettings.Database) .WithHost(connectionSettings.Host) .WithPassword(connectionSettings.Password) .WithPort(connectionSettings.Port) .WithSerializerSettings() .WithSocketFlag(connectionSettings.IsUnixSocket) .WithSslFlag(connectionSettings.UseSsl) .WithUsername(connectionSettings.Username); }