Ejemplo n.º 1
0
        public static void AddBankIntegration(this IServiceCollection services, BankIntegrationSettings banksSettings)
        {
            services.AddScoped <IBankService, BankService>();
            services.AddScoped <IBankIntegrationServiceResolver, BankIntegrationServiceResolver>();

            services.AddMonobankIntegration(banksSettings);
            services.AddPrivatbankIntegration(banksSettings);
        }
Ejemplo n.º 2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddOptions();
            services.AddCors(options => options.AddPolicy("AllowAll", policy => policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));

            services.AddMvc(options =>
            {
                options.Filters.Add(typeof(ValidateModelStateAttribute));
            })
            .ConfigureApiBehaviorOptions(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            })
            .AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver            = new CamelCasePropertyNamesContractResolver())
            .AddJsonOptions(options => options.JsonSerializerOptions.PropertyNameCaseInsensitive = true);

            DbSettings dbSettings = new DbSettings();

            Configuration.GetSection("DbSettings").Bind(dbSettings);
            dbSettings.DbConnectionString = Configuration.GetConnectionString("DbConnectionString");

            services.Configure <DbSettings>(settings =>
            {
                Configuration.GetSection("DbSettings").Bind(settings);
                settings.DbConnectionString = Configuration.GetConnectionString("DbConnectionString");
            });

            AuthSettings authSettings = new AuthSettings();

            Configuration.GetSection("AuthSettings").Bind(authSettings);
            authSettings.UsersDbConnectionString = Configuration.GetConnectionString("UsersDbConnectionString");

            services.Configure <AuthSettings>(settings =>
            {
                Configuration.GetSection("AuthSettings").Bind(settings);
                settings.UsersDbConnectionString = Configuration.GetConnectionString("UsersDbConnectionString");
            });

            BankIntegrationSettings banksSettings = new BankIntegrationSettings();

            Configuration.GetSection("BankIntegrationSettings").Bind(banksSettings);
            services.Configure <BankIntegrationSettings>(Configuration.GetSection("BankIntegrationSettings"));

            services.Configure <ExchangeRateSettings>(Configuration.GetSection("ExchangeRateSettings"));

            services.AddApplicationAuth(authSettings);
            services.AddApplicationServices();
            services.AddEntityFrameworkDataAccess(dbSettings);
            services.AddExchangeRatesIntegration();
            services.AddBankIntegration(banksSettings);

            services.AddSwagger();
        }
Ejemplo n.º 3
0
        private static void AddMonobankIntegration(this IServiceCollection services, BankIntegrationSettings banksSettings)
        {
            BankSettings settings = banksSettings.Banks.FirstOrDefault(b => MonobankConfig.BANK_NAME.Equals(b.Name, StringComparison.OrdinalIgnoreCase));

            if (settings == null || string.IsNullOrWhiteSpace(settings.ApiUri))
            {
                throw new Exception($"Missing settings for {MonobankConfig.BANK_NAME} integration.");
            }

            services.AddHttpClient <MonobankHttpClient>(c =>
            {
                c.BaseAddress = new Uri(settings.ApiUri);
            });

            services.AddScoped <MonobankAccountService>();
            services.AddScoped <MonobankExchangeRateService>();

            services.AddScoped <IBankIntegrationService, MonobankIntegrationService>();
        }