コード例 #1
0
        // 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);
            });
        }
コード例 #2
0
    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);
    }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public CustomJsonSerializer(IOptions <Settings> options)
 {
     _settings = options.Value.ElasticSettings;
 }
コード例 #6
0
 static Settings()
 {
     Elastic = GetParametersFromConfigurationRoot();
 }