@@ -78,6 +78,8 @@ public static class BindingKeys
7878 public const string EmailPublisherTopic = "EmailPublisherBindingKey" ;
7979
8080 public const string PreviewSearchClient = "PreviewSearchClientBindingKey" ;
81+
82+ public const string AuditKey = "AuditKey" ;
8183 }
8284
8385 public static class ParameterNames
@@ -468,24 +470,20 @@ protected override void Load(ContainerBuilder builder)
468470 . As < IPrincipal > ( )
469471 . InstancePerLifetimeScope ( ) ;
470472
471- IAuditingService defaultAuditingService = null ;
472-
473473 switch ( configuration . Current . StorageType )
474474 {
475475 case StorageType . FileSystem :
476476 case StorageType . NotSpecified :
477477 ConfigureForLocalFileSystem ( builder , configuration ) ;
478- defaultAuditingService = GetAuditingServiceForLocalFileSystem ( configuration ) ;
479478 break ;
480479 case StorageType . AzureStorage :
481480 ConfigureForAzureStorage ( builder , configuration , telemetryService ) ;
482- defaultAuditingService = GetAuditingServiceForAzureStorage ( builder , configuration ) ;
483481 break ;
484482 }
485483
486484 RegisterAsynchronousValidation ( builder , loggerFactory , configuration , secretInjector ) ;
487485
488- RegisterAuditingServices ( builder , defaultAuditingService ) ;
486+ RegisterAuditingServices ( builder , configuration . Current . StorageType ) ;
489487
490488 RegisterCookieComplianceService ( configuration , loggerFactory ) ;
491489
@@ -1376,10 +1374,10 @@ private static void ConfigureForLocalFileSystem(ContainerBuilder builder, IGalle
13761374 . SingleInstance ( ) ;
13771375 }
13781376
1379- private static IAuditingService GetAuditingServiceForLocalFileSystem ( IGalleryConfigurationService configuration )
1377+ private static IAuditingService GetAuditingServiceForLocalFileSystem ( IAppConfiguration configuration )
13801378 {
13811379 var auditingPath = Path . Combine (
1382- FileSystemFileStorageService . ResolvePath ( configuration . Current . FileStorageDirectory ) ,
1380+ FileSystemFileStorageService . ResolvePath ( configuration . FileStorageDirectory ) ,
13831381 FileSystemAuditingService . DefaultContainerName ) ;
13841382
13851383 return new FileSystemAuditingService ( auditingPath , AuditActor . GetAspNetOnBehalfOfAsync ) ;
@@ -1449,17 +1447,6 @@ private static void ConfigureForAzureStorage(ContainerBuilder builder, IGalleryC
14491447 . SingleInstance ( ) ;
14501448 }
14511449
1452- private static IAuditingService GetAuditingServiceForAzureStorage ( ContainerBuilder builder , IGalleryConfigurationService configuration )
1453- {
1454- var service = new CloudAuditingService ( configuration . Current . AzureStorage_Auditing_ConnectionString , configuration . Current . AzureStorageReadAccessGeoRedundant , AuditActor . GetAspNetOnBehalfOfAsync ) ;
1455-
1456- builder . RegisterInstance ( service )
1457- . As < ICloudStorageStatusDependency > ( )
1458- . SingleInstance ( ) ;
1459-
1460- return service ;
1461- }
1462-
14631450 private static IAuditingService CombineAuditingServices ( IEnumerable < IAuditingService > services )
14641451 {
14651452 if ( ! services . Any ( ) )
@@ -1491,19 +1478,54 @@ private static IEnumerable<T> GetAddInServices<T>(Action<RuntimeServiceProvider>
14911478 }
14921479 }
14931480
1494- private static void RegisterAuditingServices ( ContainerBuilder builder , IAuditingService defaultAuditingService )
1481+ private static void RegisterAuditingServices ( ContainerBuilder builder , string storageType )
14951482 {
1496- var auditingServices = GetAddInServices < IAuditingService > ( ) ;
1497- var services = new List < IAuditingService > ( auditingServices ) ;
1498-
1499- if ( defaultAuditingService != null )
1483+ if ( storageType == StorageType . AzureStorage )
15001484 {
1501- services . Add ( defaultAuditingService ) ;
1485+ builder . Register ( c =>
1486+ {
1487+ var configuration = c . Resolve < IAppConfiguration > ( ) ;
1488+ return new CloudBlobClientWrapper ( configuration . AzureStorage_Auditing_ConnectionString , configuration . AzureStorageReadAccessGeoRedundant ) ;
1489+ } )
1490+ . SingleInstance ( )
1491+ . Keyed < ICloudBlobClient > ( BindingKeys . AuditKey ) ;
1492+
1493+ builder . Register ( c =>
1494+ {
1495+ var blobClientFactory = c . ResolveKeyed < Func < ICloudBlobClient > > ( BindingKeys . AuditKey ) ;
1496+ return new CloudAuditingService ( blobClientFactory , AuditActor . GetAspNetOnBehalfOfAsync ) ;
1497+ } )
1498+ . SingleInstance ( )
1499+ . AsSelf ( )
1500+ . As < ICloudStorageStatusDependency > ( ) ;
15021501 }
15031502
1504- var service = CombineAuditingServices ( services ) ;
1503+ builder . Register ( c =>
1504+ {
1505+ var configuration = c . Resolve < IAppConfiguration > ( ) ;
1506+ IAuditingService defaultAuditingService = null ;
1507+ switch ( storageType )
1508+ {
1509+ case StorageType . FileSystem :
1510+ case StorageType . NotSpecified :
1511+ defaultAuditingService = GetAuditingServiceForLocalFileSystem ( configuration ) ;
1512+ break ;
1513+
1514+ case StorageType . AzureStorage :
1515+ defaultAuditingService = c . Resolve < CloudAuditingService > ( ) ;
1516+ break ;
1517+ }
1518+
1519+ var auditingServices = GetAddInServices < IAuditingService > ( ) ;
1520+ var services = new List < IAuditingService > ( auditingServices ) ;
1521+
1522+ if ( defaultAuditingService != null )
1523+ {
1524+ services . Add ( defaultAuditingService ) ;
1525+ }
15051526
1506- builder . RegisterInstance ( service )
1527+ return CombineAuditingServices ( services ) ;
1528+ } )
15071529 . AsSelf ( )
15081530 . As < IAuditingService > ( )
15091531 . SingleInstance ( ) ;
0 commit comments