Example #1
0
        private static BlobContainerClient GetBlobContainerClient(AzureStorageAccountOptions storageSettings)
        {
            var blobClientOptions = new BlobClientOptions();

            blobClientOptions.Retry.MaxRetries = storageSettings.BlobAccessOptions.RetryCount;
            blobClientOptions.Retry.Mode       = Azure.Core.RetryMode.Exponential;
            blobClientOptions.Retry.Delay      = storageSettings.BlobAccessOptions.Delay;

            return(new BlobContainerClient(storageSettings.ConnectionString, storageSettings.BlobAccessOptions.XmlStorageContainer, blobClientOptions));
        }
Example #2
0
        /// <summary>
        /// Adds services for the current feature to the specified <see cref="IServiceCollection" />.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection" /> to add the feature's services to.</param>
        /// <param name="config">The configuration.</param>
        /// <returns>
        /// A reference to this instance after the operation has completed.
        /// </returns>
        public static IServiceCollection AddFeatureServices(this IServiceCollection services, IConfiguration config)
        {
            var feedReaderConfig = new FeedReaderOptions();

            config.GetSection(nameof(FeedReaderOptions)).Bind(feedReaderConfig);

            var storageSettings = new AzureStorageAccountOptions();

            config.GetSection(nameof(AzureStorageAccountOptions)).Bind(storageSettings);

            services.Configure <AzureStorageAccountOptions>(config.GetSection(nameof(AzureStorageAccountOptions)));
            services.Configure <SchemaValidationSettings>(config.GetSection(nameof(SchemaValidationSettings)));
            services.Configure <AzureStorageAccountOptions>(config.GetSection(nameof(AzureStorageAccountOptions)));

            if (CloudStorageAccount.TryParse(storageSettings.ConnectionString, out var cloudStorageAccount))
            {
                services.AddScoped(s => CreateCloudTableClient(cloudStorageAccount, storageSettings));
                services.AddScoped(s => s.GetRequiredService <CloudTableClient>()?.GetTableReference(storageSettings.TableAccessOptions.ConfigTableName));
            }

            services.AddScoped <IFeedProcessor, Implementations.FeedProcessor>();
            services.AddScoped <IContractEventSessionQueuePopulator, ContractEventSessionQueuePopulator>();
            services.AddScoped <IContractEventProcessor, ContractEventProcessor>();
            services.AddScoped <IFeedProcessorConfiguration, FeedProcessorConfiguration>();
            services.AddScoped <IConfigReader, AzureTableStorageConfigReader>();

            var policies       = new Configuration.PolicyType[] { Configuration.PolicyType.Retry, Configuration.PolicyType.CircuitBreaker };
            var policyRegistry = services.AddPolicyRegistry();

            services
            .AddPolicies <IFcsFeedReaderService>(feedReaderConfig.HttpPolicyOptions, policyRegistry)
            .AddHttpClient <IFcsFeedReaderService, FcsFeedReaderService, FeedReaderOptions>(config, policies);

            services.AddTransient(typeof(IAuthenticationService <>), typeof(AuthenticationService <>));
            services.AddSingleton <IDateTimeProvider, DateTimeProvider>();

            services.AddAuditApiClient(config, policyRegistry);

            services.AddScoped <IDeserilizationService <ContractProcessResult>, Deserializer_v1103>();
            services.AddScoped <IBlobStorageService, BlobStorageService>((serviceProvider) =>
            {
                return(new BlobStorageService(GetBlobContainerClient(storageSettings), serviceProvider.GetRequiredService <ILoggerAdapter <BlobStorageService> >()));
            });
            services.AddScoped <IContractEventValidationService, ContractEventValidationService>();

            services.AddAutoMapper(typeof(FeatureServiceCollectionExtensions).Assembly);

            return(services);
        }
Example #3
0
 public AzureTableStorageConfigReaderTests()
 {
     _mockConfig = new AzureStorageAccountOptions()
     {
         BlobAccessOptions = new BlobAccessOptions()
         {
             Delay               = TimeSpan.FromSeconds(15),
             RetryCount          = 3,
             XmlStorageContainer = "xmlContainer"
         },
         ConnectionString   = "constr",
         TableAccessOptions = new TableAccessOptions()
         {
             ConfigTableName = "tblName",
             DeltaBackOff    = TimeSpan.FromSeconds(15),
             MaxAttempts     = 3,
             PartitionKey    = "paritionkey"
         }
     };
 }
Example #4
0
 public BlobStorageServiceTests()
 {
     _configurationHelper = new ConfigurationHelper();
     _storageSettings     = _configurationHelper.GetConfiguration <AzureStorageAccountOptions>(nameof(AzureStorageAccountOptions));
 }
Example #5
0
        private static CloudTableClient CreateCloudTableClient(CloudStorageAccount cloudStorageAccount, AzureStorageAccountOptions storageSettings)
        {
            var tableClient = cloudStorageAccount.CreateCloudTableClient();

            tableClient.DefaultRequestOptions = new TableRequestOptions
            {
                RetryPolicy = new ExponentialRetry(storageSettings.TableAccessOptions.DeltaBackOff, storageSettings.TableAccessOptions.MaxAttempts)
            };

            return(tableClient);
        }
Example #6
0
 public AzureStorageService(AzureStorageAccountOptions storageAccountOptions)
 {
     _storageAccountOptions = storageAccountOptions;
     _blobServiceClient     = new BlobServiceClient(_storageAccountOptions.ConnectionString);
 }