internal static ICameraBotBuilder AddCoreServices(this ICameraBotBuilder builder) { builder.Services.AddOptions(); builder.Services.AddHostedService <BotService>(); builder.Services.AddSingleton <ICameraRegistry, CameraRegistry>(); return(builder); }
public static ICameraBotBuilder AddCameraBot(this IServiceCollection services) { ICameraBotBuilder builder = services.AddCameraBotBuilder(); builder .AddCoreServices() .AddHttpClient(); return(builder); }
internal static ICameraBotBuilder AddHttpClient(this ICameraBotBuilder builder) { using ServiceProvider serviceProvider = builder.Services.BuildServiceProvider(false); CameraBotOptions options = serviceProvider.GetRequiredService <IOptions <CameraBotOptions> >().Value; AsyncRetryPolicy <HttpResponseMessage> retryPolicy = HttpPolicyExtensions .HandleTransientHttpError() .Or <TimeoutRejectedException>() .RetryAsync(options.RetryCount); AsyncTimeoutPolicy <HttpResponseMessage> timeoutPolicy = Policy.TimeoutAsync <HttpResponseMessage>(TimeSpan.FromMilliseconds(options.TimeoutMilliseconds)); builder.Services .AddHttpClient <ICameraService, CameraService>() .AddPolicyHandler(retryPolicy) .AddPolicyHandler(timeoutPolicy); return(builder); }
public static ICameraBotBuilder AddMessenger <TMessenger>(this ICameraBotBuilder builder) where TMessenger : class, IMessenger { builder.Services.AddSingleton <IMessenger, TMessenger>(); return(builder); }
public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder) { builder.Services.AddOptions(); return(builder.AddMessenger <Messenger>()); }
public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder, IConfiguration configuration) { builder.Services.Configure <TelegramOptions>(configuration); return(builder.AddTelegram()); }
public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder, Action <TelegramOptions> setupAction) { builder.Services.Configure(setupAction); return(builder.AddTelegram()); }