mirror of
https://github.com/AlexMacocian/ServerManagementUtils.git
synced 2026-07-15 15:19:58 +00:00
44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using System.Core.Extensions;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Nest;
|
|
using Robin.Services.Monitoring;
|
|
using Robin.Services.Persistence;
|
|
using Robin.Services.Publishing;
|
|
|
|
namespace Robin.Services;
|
|
|
|
public static class BuilderExtensions
|
|
{
|
|
public static IHostApplicationBuilder AddRobinServices(this IHostApplicationBuilder builder)
|
|
{
|
|
var elasticClientOptions = builder
|
|
.Configuration.GetSection(ElasticOptions.SectionName)
|
|
.Get<ElasticOptions>();
|
|
|
|
if (elasticClientOptions is null)
|
|
{
|
|
throw new InvalidOperationException(
|
|
"ElasticOptions section is missing in configuration."
|
|
);
|
|
}
|
|
|
|
builder.ThrowIfNull();
|
|
builder.Services.AddHostedService<MonitoringService>();
|
|
builder.Services.AddSingleton<IElasticClient>(
|
|
new ElasticClient(
|
|
new ConnectionSettings(elasticClientOptions.Uri)
|
|
.BasicAuthentication(
|
|
elasticClientOptions.Username,
|
|
elasticClientOptions.Password
|
|
)
|
|
.DefaultIndex(elasticClientOptions.Index)
|
|
)
|
|
);
|
|
builder.Services.AddSingleton<IPublishingService, ElasticPublishingService>();
|
|
builder.Services.AddSingleton<PositionPersistenceService>();
|
|
return builder;
|
|
}
|
|
}
|