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)); }
/// <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); }
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" } }; }
public BlobStorageServiceTests() { _configurationHelper = new ConfigurationHelper(); _storageSettings = _configurationHelper.GetConfiguration <AzureStorageAccountOptions>(nameof(AzureStorageAccountOptions)); }
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); }
public AzureStorageService(AzureStorageAccountOptions storageAccountOptions) { _storageAccountOptions = storageAccountOptions; _blobServiceClient = new BlobServiceClient(_storageAccountOptions.ConnectionString); }