public DopplerCurrencyService(
     IHttpClientFactory httpClientFactory,
     IOptionsMonitor <DopplerCurrencyServiceSettings> dopplerCurrencySettings,
     ILogger <DopplerCurrencyService> logger,
     TimeZoneJobConfigurations jobConfig,
     IDbConnectionFactory dbConnectionFactory,
     IJwtTokenGenerator jwtTokenGenerator)
 {
     _dopplerCurrencySettings = dopplerCurrencySettings.CurrentValue;
     _jobConfig           = jobConfig;
     _logger              = logger;
     _httpClientFactory   = httpClientFactory;
     _dbConnectionFactory = dbConnectionFactory;
     _jwtTokenGenerator   = jwtTokenGenerator;
 }
Ejemplo n.º 2
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHangfire(x =>
            {
                x.UseSQLiteStorage();
            });

            var httpClientPolicies = new HttpClientPoliciesSettings();

            Configuration.GetSection("HttpClient:Client").Bind(httpClientPolicies);
            services.AddSingleton(httpClientPolicies);

            var handlerHttpClient = new HttpClientHandler
            {
                ClientCertificateOptions = ClientCertificateOption.Automatic,
                SslProtocols             = SslProtocols.Tls12
            };

            services.AddHttpClient(httpClientPolicies.ClientName, c => { })
            .ConfigurePrimaryHttpMessageHandler(() => handlerHttpClient)
            .AddTransientHttpErrorPolicy(builder => GetRetryPolicy(httpClientPolicies.Policies.RetryAttemps));

            services.Configure <DopplerCurrencyServiceSettings>(Configuration.GetSection(nameof(DopplerCurrencyServiceSettings)));

            var jobsConfig = new TimeZoneJobConfigurations
            {
                TimeZoneJobs = TimeZoneHelper.GetTimeZoneByOperativeSystem(Configuration["TimeZoneJobs"])
            };

            services.AddSingleton(jobsConfig);
            services.AddTransient <IDopplerCurrencyService, DopplerCurrencyService>();

            services.Configure <DopplerSapConfiguration>(Configuration.GetSection(nameof(DopplerSapConfiguration)));
            services.AddTransient <IDopplerSapService, DopplerSapService>();

            services.AddTransient <IDbConnectionFactory, DbConnectionFactory>();
            services.Configure <DopplerBillingJobSettings>(Configuration.GetSection("Jobs:DopplerBillingJobSettings"));
            services.Configure <DopplerBillingUsJobSettings>(Configuration.GetSection("Jobs:DopplerBillingUsJobSettings"));
            services.AddTransient <IDopplerRepository, DopplerRepository>();

            ConfigureJobsScheduler();

            services.AddTransient <JwtSecurityTokenHandler>();
            services.Configure <JwtOptions>(Configuration.GetSection(nameof(JwtOptions)));
            services.AddJwtToken();
            services.AddSingleton <IJwtTokenGenerator, JwtTokenGenerator>();
        }
        public static DopplerCurrencyService CreateSut(
            IHttpClientFactory httpClientFactory = null,
            IOptionsMonitor <DopplerCurrencyServiceSettings> dopplerCurrencySettings = null,
            ILogger <DopplerCurrencyService> loggerCurrencyService = null,
            TimeZoneJobConfigurations timeZoneJobConfigurations    = null,
            IDbConnectionFactory dbConnectionFactory        = null,
            IOptions <JwtOptions> jwtOptions                = null,
            SigningCredentials signingCredentials           = null,
            JwtSecurityTokenHandler jwtSecurityTokenHandler = null)
        {
            return(new DopplerCurrencyService(
                       httpClientFactory,
                       dopplerCurrencySettings,
                       loggerCurrencyService ?? Mock.Of <ILogger <DopplerCurrencyService> >(),

                       timeZoneJobConfigurations ?? new TimeZoneJobConfigurations
            {
                TimeZoneJobs = TimeZoneHelper.GetTimeZoneByOperativeSystem("Argentina Standard Time")
            },
                       dbConnectionFactory,
                       Mock.Of <IJwtTokenGenerator>()));
        }