Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public static ICameraBotBuilder AddMessenger <TMessenger>(this ICameraBotBuilder builder)
     where TMessenger : class, IMessenger
 {
     builder.Services.AddSingleton <IMessenger, TMessenger>();
     return(builder);
 }
Ejemplo n.º 5
0
 public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder)
 {
     builder.Services.AddOptions();
     return(builder.AddMessenger <Messenger>());
 }
Ejemplo n.º 6
0
 public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder, IConfiguration configuration)
 {
     builder.Services.Configure <TelegramOptions>(configuration);
     return(builder.AddTelegram());
 }
Ejemplo n.º 7
0
 public static ICameraBotBuilder AddTelegram(this ICameraBotBuilder builder, Action <TelegramOptions> setupAction)
 {
     builder.Services.Configure(setupAction);
     return(builder.AddTelegram());
 }