// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var elasticSettings = new ElasticSettings(); Configuration.GetSection("Elastic").Bind(elasticSettings); var node = new Uri("http://" + elasticSettings.ServerName.Replace("http://", "")); var settings = new ConnectionSettings(node); if (!string.IsNullOrEmpty(elasticSettings.UserName) || !string.IsNullOrEmpty(elasticSettings.Password)) { settings.BasicAuthentication(elasticSettings.UserName, elasticSettings.Password); } settings.DefaultMappingFor(typeof(ElasticIdentityUser), m => m.IndexName("users")); var elasticClient = new ElasticClient(settings); services.AddIdentity <ElasticIdentityUser, ElasticIdentityUserRole>() .AddElasticIdentity(elasticClient) .AddDefaultTokenProviders(); services.AddAuthentication(options => { options.DefaultSignInScheme = IdentityConstants.ExternalScheme; }); // Hosting doesn't add IHttpContextAccessor by default services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddOptions(); services.AddDataProtection(); // Add application services. services.AddTransient <IEmailSender, AuthMessageSender>(); services.AddTransient <ISmsSender, AuthMessageSender>(); services.AddMvc(x => { x.EnableEndpointRouting = false; }); services.AddSingleton <ITracer>(cli => { Environment.SetEnvironmentVariable("JAEGER_SERVICE_NAME", "ElasticIdentity.Sample.Mvc"); var loggerFactory = new LoggerFactory(); var config = Jaeger.Configuration.FromEnv(loggerFactory); var tracer = config.GetTracer(); if (!GlobalTracer.IsRegistered()) { // Allows code that can't use DI to also access the tracer. GlobalTracer.Register(tracer); } return(tracer); }); }
public static IServiceCollection AddElasticSearch(this IServiceCollection services, IConfiguration config) { var elasticSettings = new ElasticSettings(); config.GetSection("ElasticSettings").Bind(elasticSettings); var pool = new SingleNodeConnectionPool(new Uri(elasticSettings.ConnectionString)); var settings = new ConnectionSettings(pool) .DefaultIndex(elasticSettings.Index); var client = new ElasticClient(settings); services.AddSingleton(client); return(services); }
public ElasticProvider(HttpClient httpClient, IOptions <Settings> options, ILogger logger) { _logger = logger; _httpClient = httpClient; _settings = options.Value.ElasticSettings; if (!_settings.IsValid()) { throw new ArgumentException($"Invalid elastic search settings '{_settings}'"); } if (!IsValidElasticSearchUrl()) { throw new HttpRequestException($"Invalid elastic search url {_settings.Url}"); } var connectionSettings = new ConnectionSettings(new Uri(_settings.Url)); _elasticClient = new ElasticClient(connectionSettings); }
internal static IServiceProvider ConfigureServices(IConfiguration config) { var services = new ServiceCollection(); services.AddLogging(loggingBuilder => { loggingBuilder.AddConfiguration(config.GetSection("Logging")); loggingBuilder.AddConsole(); loggingBuilder.AddDebug(); }); services.AddSingleton(config); var indexconfig = new IndexerConfig(); config.GetSection(nameof(IndexerConfig)).Bind(indexconfig); services.AddSingleton(indexconfig); var elasticSettings = new ElasticSettings(); config.GetSection(nameof(ElasticSettings)).Bind(elasticSettings); services.AddSingleton(elasticSettings); services.AddSingleton <IndexGenerator>(); services.AddSingleton <CrossReferenceLoader>(); services.AddSingleton <PointLoader>(); services.AddSingleton <PolygonLoader>(); services.AddSingleton <PatchLoader>(); services.AddSingleton <ElasticIndexer>(); var builder = new ContainerBuilder(); builder.Populate(services); var applicationContainer = builder.Build(); var provider = new AutofacServiceProvider(applicationContainer); return(provider); }
public CustomJsonSerializer(IOptions <Settings> options) { _settings = options.Value.ElasticSettings; }
static Settings() { Elastic = GetParametersFromConfigurationRoot(); }