internal void ConfigureSmtpClient( ISmtpClient smtpClient, MailSenderConfiguration configuration) { if (configuration.Host != null) { smtpClient.Host = configuration.Host; } if (configuration.Port.HasValue) { smtpClient.Port = configuration.Port.Value; } if (configuration.EnableSsl.HasValue) { smtpClient.EnableSsl = configuration.EnableSsl.Value; } if (configuration.DeliveryMethod.HasValue) { smtpClient.DeliveryMethod = configuration.DeliveryMethod.Value; } if (configuration.UseDefaultCredentials.HasValue) { smtpClient.UseDefaultCredentials = configuration.UseDefaultCredentials.Value; } if (configuration.Credentials != null) { smtpClient.Credentials = configuration.Credentials; } if (configuration.PickupDirectoryLocation != null) { smtpClient.PickupDirectoryLocation = configuration.PickupDirectoryLocation; } }
internal MailSender(SmtpClient smtpClient, MailSenderConfiguration configuration) { if (smtpClient == null) throw new ArgumentNullException("smtpClient"); if (configuration != null) ConfigureSmtpClient(smtpClient, configuration); _smtpClient = smtpClient; }
internal static void ConfigureSmtpClient(SmtpClient smtpClient, MailSenderConfiguration configuration) { if (configuration.Host != null) smtpClient.Host = configuration.Host; if (configuration.Port.HasValue) smtpClient.Port = configuration.Port.Value; if (configuration.EnableSsl.HasValue) smtpClient.EnableSsl = configuration.EnableSsl.Value; if (configuration.DeliveryMethod.HasValue) smtpClient.DeliveryMethod = configuration.DeliveryMethod.Value; if (configuration.UseDefaultCredentials.HasValue) smtpClient.UseDefaultCredentials = configuration.UseDefaultCredentials.Value; if (configuration.Credentials != null) smtpClient.Credentials = configuration.Credentials; if (configuration.PickupDirectoryLocation != null) smtpClient.PickupDirectoryLocation = configuration.PickupDirectoryLocation; }
internal MailSender( ISmtpClient smtpClient, MailSenderConfiguration configuration) { if (smtpClient == null) { throw new ArgumentNullException("smtpClient"); } if (configuration != null) { ConfigureSmtpClient(smtpClient, configuration); } this.smtpClient = smtpClient; }
public override void Load() { IConfiguration configuration = new Configuration(); Bind<IConfiguration>() .ToMethod(context => configuration); Lazy<GallerySetting> gallerySetting = new Lazy<GallerySetting>(() => { using (var entitiesContext = new EntitiesContext()) { var settingsRepo = new EntityRepository<GallerySetting>(entitiesContext); return settingsRepo.GetAll().FirstOrDefault(); } }); Bind<GallerySetting>().ToMethod(c => gallerySetting.Value); Bind<EntitiesContext>() .ToMethod(context => new EntitiesContext()) .InRequestScope(); Bind<IEntityRepository<User>>() .To<EntityRepository<User>>() .InRequestScope(); Bind<IEntityRepository<PackageRegistration>>() .To<EntityRepository<PackageRegistration>>() .InRequestScope(); Bind<IEntityRepository<Package>>() .To<EntityRepository<Package>>() .InRequestScope(); Bind<IEntityRepository<PackageAuthor>>() .To<EntityRepository<PackageAuthor>>() .InRequestScope(); Bind<IEntityRepository<PackageDependency>>() .To<EntityRepository<PackageDependency>>() .InRequestScope(); Bind<IEntityRepository<PackageStatistics>>() .To<EntityRepository<PackageStatistics>>() .InRequestScope(); Bind<IUserService>() .To<UserService>() .InRequestScope(); Bind<IPackageService>() .To<PackageService>() .InRequestScope(); Bind<ICryptographyService>() .To<CryptographyService>() .InRequestScope(); Bind<IFormsAuthenticationService>() .To<FormsAuthenticationService>() .InSingletonScope(); Bind<IControllerFactory>() .To<NuGetControllerFactory>() .InRequestScope(); Lazy<IMailSender> mailSenderThunk = new Lazy<IMailSender>(() => { var settings = Kernel.Get<GallerySetting>(); if (settings.UseSmtp) { var mailSenderConfiguration = new MailSenderConfiguration() { DeliveryMethod = SmtpDeliveryMethod.Network, Host = settings.SmtpHost, Port = settings.SmtpPort, EnableSsl = true, UseDefaultCredentials = false, Credentials = new NetworkCredential( settings.SmtpUsername, settings.SmtpPassword) }; return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration() { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); Bind<IMailSender>() .ToMethod(context => mailSenderThunk.Value); Bind<IMessageService>() .To<MessageService>(); Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.PackageStoreType) { case PackageStoreType.FileSystem: case PackageStoreType.NotSpecified: Bind<IFileSystemService>() .To<FileSystemService>() .InSingletonScope(); Bind<IFileStorageService>() .To<FileSystemFileStorageService>() .InSingletonScope(); break; case PackageStoreType.AzureStorageBlob: Bind<ICloudBlobClient>() .ToMethod(context => new CloudBlobClientWrapper(new CloudBlobClient( new Uri(configuration.AzureStorageBlobUrl, UriKind.Absolute), new StorageCredentialsAccountAndKey(configuration.AzureStorageAccountName, configuration.AzureStorageAccessKey)))) .InSingletonScope(); Bind<IFileStorageService>() .To<CloudBlobFileStorageService>() .InSingletonScope(); break; } Bind<IPackageFileService>() .To<PackageFileService>(); Bind<IEntityRepository<PackageOwnerRequest>>() .To<EntityRepository<PackageOwnerRequest>>() .InRequestScope(); Bind<IUploadFileService>() .To<UploadFileService>(); }
/// <summary> /// Loads the module into the kernel. /// </summary> public void RegisterComponents(Container container) { IConfiguration configuration = new Configuration(); container.Register(() => configuration, Lifestyle.Singleton); //var gallerySetting = new Lazy<GallerySetting>( // () => // { // using (var entitiesContext = new EntitiesContext()) // { // var settingsRepo = new EntityRepository<GallerySetting>(entitiesContext); // return settingsRepo.GetAll().FirstOrDefault(); // } // }); //container.Register(() => gallerySetting.Value); //Bind<GallerySetting>().ToMethod(c => gallerySetting.Value); if (configuration.UseCaching) { var cacheProvider = AppServices.Cache; Cache.InitializeWith(cacheProvider); container.Register(() => cacheProvider, Lifestyle.Singleton); } container.RegisterPerWebRequest<ISearchService, LuceneSearchService>(); container.RegisterPerWebRequest<IEntitiesContext>(() => new EntitiesContext()); container.RegisterPerWebRequest<IEntityRepository<User>, EntityRepository<User>>(); container.RegisterPerWebRequest<IEntityRepository<PackageRegistration>, EntityRepository<PackageRegistration>>(); container.RegisterPerWebRequest<IEntityRepository<Package>, EntityRepository<Package>>(); container.RegisterPerWebRequest<IEntityRepository<PackageAuthor>, EntityRepository<PackageAuthor>>(); container.RegisterPerWebRequest<IEntityRepository<PackageFramework>, EntityRepository<PackageFramework>>(); container.RegisterPerWebRequest<IEntityRepository<PackageDependency>, EntityRepository<PackageDependency>>(); container.RegisterPerWebRequest<IEntityRepository<PackageFile>, EntityRepository<PackageFile>>(); container.RegisterPerWebRequest<IEntityRepository<PackageStatistics>, EntityRepository<PackageStatistics>>(); container.RegisterPerWebRequest<IEntityRepository<PackageOwnerRequest>, EntityRepository<PackageOwnerRequest>>(); container.RegisterPerWebRequest<IUserService, UserService>(); container.RegisterPerWebRequest<IPackageService, PackageService>(); container.RegisterPerWebRequest<ICryptographyService, CryptographyService>(); container.Register<IIndexingService, LuceneIndexingService>(Lifestyle.Singleton); container.Register<IFormsAuthenticationService, FormsAuthenticationService>(Lifestyle.Singleton); container.RegisterPerWebRequest<IControllerFactory, NuGetControllerFactory>(); container.RegisterPerWebRequest<INuGetExeDownloaderService, NuGetExeDownloaderService>(); var mailSenderThunk = new Lazy<IMailSender>( () => { var settings = container.GetInstance<IConfiguration>(); if (settings.UseSmtp) { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.Network, Host = settings.SmtpHost, Port = settings.SmtpPort, EnableSsl = configuration.SmtpEnableSsl, }; if (!String.IsNullOrWhiteSpace(settings.SmtpUsername)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential(settings.SmtpUsername, settings.SmtpPassword); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); container.Register(() => mailSenderThunk.Value, Lifestyle.Singleton); container.Register<IMessageService, MessageService>(Lifestyle.Singleton); container.Register<IFileSystemService, FileSystemService>(Lifestyle.Singleton); container.RegisterPerWebRequest(() => HttpContext.Current.User); //Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.PackageStoreType) { case PackageStoreType.FileSystem: case PackageStoreType.NotSpecified: container.Register<IFileStorageService, FileSystemFileStorageService>(Lifestyle.Singleton); break; case PackageStoreType.AzureStorageBlob: container.Register<ICloudBlobClient>( () => new CloudBlobClientWrapper( new CloudBlobClient( new Uri(configuration.AzureStorageBlobUrl, UriKind.Absolute), new StorageCredentialsAccountAndKey(configuration.AzureStorageAccountName, configuration.AzureStorageAccessKey))), Lifestyle.Singleton); container.Register<IFileStorageService, CloudBlobFileStorageService>(Lifestyle.Singleton); break; case PackageStoreType.AmazonS3Storage: container.Register<IAmazonS3Client, AmazonS3ClientWrapper>(Lifestyle.Singleton); container.Register<IFileStorageService, AmazonS3FileStorageService>(Lifestyle.Singleton); break; } switch (configuration.PackageStatisticsStoreType) { case PackageStatisticsStoreType.AmazonSqs: container.Register<IAmazonSqsClient, AmazonSqsClientWrapper>(Lifestyle.Singleton); container.Register<IPackageStatisticsService, AmazonSqsPackageStatisticsService>(Lifestyle.Singleton); break; default: container.RegisterPerWebRequest<IPackageStatisticsService, DatabasePackageStatisticsService>(); break; } container.Register<IPackageFileService, PackageFileService>(Lifestyle.Singleton); container.Register<IUploadFileService, UploadFileService>(); // todo: bind all package curators by convention container.Register<IAutomaticPackageCurator, WebMatrixPackageCurator>(Lifestyle.Singleton); container.Register<IAutomaticPackageCurator, Windows8PackageCurator>(Lifestyle.Singleton); // todo: bind all commands by convention container.RegisterPerWebRequest<IAutomaticallyCuratePackageCommand, AutomaticallyCuratePackageCommand>(); container.RegisterPerWebRequest<ICreateCuratedPackageCommand, CreateCuratedPackageCommand>(); container.RegisterPerWebRequest<IDeleteCuratedPackageCommand, DeleteCuratedPackageCommand>(); container.RegisterPerWebRequest<IModifyCuratedPackageCommand, ModifyCuratedPackageCommand>(); // todo: bind all queries by convention container.RegisterPerWebRequest<ICuratedFeedByKeyQuery, CuratedFeedByKeyQuery>(); container.RegisterPerWebRequest<ICuratedFeedByNameQuery, CuratedFeedByNameQuery>(); container.RegisterPerWebRequest<ICuratedFeedsByManagerQuery, CuratedFeedsByManagerQuery>(); container.RegisterPerWebRequest<IPackageRegistrationByKeyQuery, PackageRegistrationByKeyQuery>(); container.RegisterPerWebRequest<IPackageRegistrationByIdQuery, PackageRegistrationByIdQuery>(); container.RegisterPerWebRequest<IUserByUsernameQuery, UserByUsernameQuery>(); container.RegisterPerWebRequest<IPackageIdsQuery, PackageIdsQuery>(); container.RegisterPerWebRequest<IPackageVersionsQuery, PackageVersionsQuery>(); container.RegisterPerWebRequest<IAggregateStatsService, AggregateStatsService>(); RegisterChocolateySpecific(container); }
public override void Load() { var configuration = new ConfigurationService(); Bind<ConfigurationService>() .ToMethod(context => configuration); Bind<IAppConfiguration>() .ToMethod(context => configuration.Current); Bind<PoliteCaptcha.IConfigurationSource>() .ToMethod(context => configuration); Bind<Lucene.Net.Store.Directory>() .ToMethod(_ => LuceneCommon.GetDirectory(configuration.Current.LuceneIndexLocation)) .InSingletonScope(); Bind<ISearchService>() .To<LuceneSearchService>() .InRequestScope(); if (!String.IsNullOrEmpty(configuration.Current.AzureStorageConnectionString)) { Bind<ErrorLog>() .ToMethod(_ => new TableErrorLog(configuration.Current.AzureStorageConnectionString)) .InSingletonScope(); } else { Bind<ErrorLog>() .ToMethod(_ => new SqlErrorLog(configuration.Current.SqlConnectionString)) .InSingletonScope(); } Bind<ICacheService>() .To<HttpContextCacheService>() .InRequestScope(); Bind<IContentService>() .To<ContentService>() .InSingletonScope(); Bind<IEntitiesContext>() .ToMethod(context => new EntitiesContext(configuration.Current.SqlConnectionString, readOnly: configuration.Current.ReadOnlyMode)) .InRequestScope(); Bind<IEntityRepository<User>>() .To<EntityRepository<User>>() .InRequestScope(); Bind<IEntityRepository<CuratedFeed>>() .To<EntityRepository<CuratedFeed>>() .InRequestScope(); Bind<IEntityRepository<CuratedPackage>>() .To<EntityRepository<CuratedPackage>>() .InRequestScope(); Bind<IEntityRepository<PackageRegistration>>() .To<EntityRepository<PackageRegistration>>() .InRequestScope(); Bind<IEntityRepository<Package>>() .To<EntityRepository<Package>>() .InRequestScope(); Bind<IEntityRepository<PackageDependency>>() .To<EntityRepository<PackageDependency>>() .InRequestScope(); Bind<IEntityRepository<PackageStatistics>>() .To<EntityRepository<PackageStatistics>>() .InRequestScope(); Bind<IEntityRepository<Credential>>() .To<EntityRepository<Credential>>() .InRequestScope(); Bind<ICuratedFeedService>() .To<CuratedFeedService>() .InRequestScope(); Bind<IUserService>() .To<UserService>() .InRequestScope(); Bind<IPackageService>() .To<PackageService>() .InRequestScope(); Bind<EditPackageService>().ToSelf(); Bind<IFormsAuthenticationService>() .To<FormsAuthenticationService>() .InSingletonScope(); Bind<IControllerFactory>() .To<NuGetControllerFactory>() .InRequestScope(); Bind<IIndexingService>() .To<LuceneIndexingService>() .InRequestScope(); Bind<INuGetExeDownloaderService>() .To<NuGetExeDownloaderService>() .InRequestScope(); var mailSenderThunk = new Lazy<IMailSender>( () => { var settings = Kernel.Get<ConfigurationService>(); if (settings.Current.SmtpUri != null && settings.Current.SmtpUri.IsAbsoluteUri) { var smtpUri = new SmtpUri(settings.Current.SmtpUri); var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.Network, Host = smtpUri.Host, Port = smtpUri.Port, EnableSsl = smtpUri.Secure }; if (!String.IsNullOrWhiteSpace(smtpUri.UserName)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential( smtpUri.UserName, smtpUri.Password); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); Bind<IMailSender>() .ToMethod(context => mailSenderThunk.Value); Bind<IMessageService>() .To<MessageService>(); Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.Current.StorageType) { case StorageType.FileSystem: case StorageType.NotSpecified: ConfigureForLocalFileSystem(); break; case StorageType.AzureStorage: ConfigureForAzureStorage(configuration); break; } Bind<IFileSystemService>() .To<FileSystemService>() .InSingletonScope(); Bind<IPackageFileService>() .To<PackageFileService>(); Bind<IEntityRepository<PackageOwnerRequest>>() .To<EntityRepository<PackageOwnerRequest>>() .InRequestScope(); Bind<IUploadFileService>() .To<UploadFileService>(); // todo: bind all package curators by convention Bind<IAutomaticPackageCurator>() .To<WebMatrixPackageCurator>(); Bind<IAutomaticPackageCurator>() .To<Windows8PackageCurator>(); // todo: bind all commands by convention Bind<IAutomaticallyCuratePackageCommand>() .To<AutomaticallyCuratePackageCommand>() .InRequestScope(); Bind<IAggregateStatsService>() .To<AggregateStatsService>() .InRequestScope(); Bind<IPackageIdsQuery>() .To<PackageIdsQuery>() .InRequestScope(); Bind<IPackageVersionsQuery>() .To<PackageVersionsQuery>() .InRequestScope(); }
public override void Load() { IConfiguration configuration = new Configuration(); Bind<IConfiguration>() .ToMethod(context => configuration); Lazy<GallerySetting> gallerySetting = new Lazy<GallerySetting>(() => { using (var entitiesContext = new EntitiesContext()) { var settingsRepo = new EntityRepository<GallerySetting>(entitiesContext); return settingsRepo.GetAll().FirstOrDefault(); } }); Bind<GallerySetting>().ToMethod(c => gallerySetting.Value); Bind<ISearchService>() .To<LuceneSearchService>() .InRequestScope(); Bind<IEntitiesContext>() .ToMethod(context => new EntitiesContext()) .InRequestScope(); Bind<IEntityRepository<User>>() .To<EntityRepository<User>>() .InRequestScope(); Bind<IEntityRepository<PackageRegistration>>() .To<EntityRepository<PackageRegistration>>() .InRequestScope(); Bind<IEntityRepository<Package>>() .To<EntityRepository<Package>>() .InRequestScope(); Bind<IEntityRepository<PackageAuthor>>() .To<EntityRepository<PackageAuthor>>() .InRequestScope(); Bind<IEntityRepository<PackageDependency>>() .To<EntityRepository<PackageDependency>>() .InRequestScope(); Bind<IEntityRepository<PackageStatistics>>() .To<EntityRepository<PackageStatistics>>() .InRequestScope(); Bind<IUserService>() .To<UserService>() .InRequestScope(); Bind<IPackageService>() .To<PackageService>() .InRequestScope(); Bind<ICryptographyService>() .To<CryptographyService>() .InRequestScope(); Bind<IFormsAuthenticationService>() .To<FormsAuthenticationService>() .InSingletonScope(); Bind<IControllerFactory>() .To<NuGetControllerFactory>() .InRequestScope(); Bind<IIndexingService>() .To<LuceneIndexingService>() .InRequestScope(); Bind<INuGetExeDownloaderService>() .To<NuGetExeDownloaderService>() .InRequestScope(); Lazy<IMailSender> mailSenderThunk = new Lazy<IMailSender>(() => { var settings = Kernel.Get<GallerySetting>(); if (settings.UseSmtp) { var mailSenderConfiguration = new MailSenderConfiguration() { DeliveryMethod = SmtpDeliveryMethod.Network, Host = settings.SmtpHost, Port = settings.SmtpPort, EnableSsl = configuration.SmtpEnableSsl, }; if (!String.IsNullOrWhiteSpace(settings.SmtpUsername)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential( settings.SmtpUsername, settings.SmtpPassword); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration() { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); Bind<IMailSender>() .ToMethod(context => mailSenderThunk.Value); Bind<IMessageService>() .To<MessageService>(); Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.PackageStoreType) { case PackageStoreType.FileSystem: case PackageStoreType.NotSpecified: Bind<IFileSystemService>() .To<FileSystemService>() .InSingletonScope(); Bind<IFileStorageService>() .To<FileSystemFileStorageService>() .InSingletonScope(); break; case PackageStoreType.AzureStorageBlob: Bind<ICloudBlobClient>() .ToMethod(context => new CloudBlobClientWrapper(new CloudBlobClient( new Uri(configuration.AzureStorageBlobUrl, UriKind.Absolute), new StorageCredentialsAccountAndKey(configuration.AzureStorageAccountName, configuration.AzureStorageAccessKey)))) .InSingletonScope(); Bind<IFileStorageService>() .To<CloudBlobFileStorageService>() .InSingletonScope(); break; case PackageStoreType.AmazonS3Storage: Bind<IAmazonS3Client>() .To<AmazonS3ClientWrapper>() .InSingletonScope(); Bind<IFileStorageService>() .To<AmazonS3FileStorageService>() .InSingletonScope(); break; } Bind<IPackageFileService>() .To<PackageFileService>(); Bind<IEntityRepository<PackageOwnerRequest>>() .To<EntityRepository<PackageOwnerRequest>>() .InRequestScope(); Bind<IUploadFileService>() .To<UploadFileService>(); // todo: bind all package curators by convention Bind<IAutomaticPackageCurator>() .To<WebMatrixPackageCurator>(); Bind<IAutomaticPackageCurator>() .To<Windows8PackageCurator>(); // todo: bind all commands by convention Bind<IAutomaticallyCuratePackageCommand>() .To<AutomaticallyCuratePackageCommand>() .InRequestScope(); Bind<ICreateCuratedPackageCommand>() .To<CreateCuratedPackageCommand>() .InRequestScope(); Bind<IDeleteCuratedPackageCommand>() .To<DeleteCuratedPackageCommand>() .InRequestScope(); Bind<IModifyCuratedPackageCommand>() .To<ModifyCuratedPackageCommand>() .InRequestScope(); // todo: bind all queries by convention Bind<ICuratedFeedByKeyQuery>() .To<CuratedFeedByKeyQuery>() .InRequestScope(); Bind<ICuratedFeedByNameQuery>() .To<CuratedFeedByNameQuery>() .InRequestScope(); Bind<ICuratedFeedsByManagerQuery>() .To<CuratedFeedsByManagerQuery>() .InRequestScope(); Bind<IPackageRegistrationByKeyQuery>() .To<PackageRegistrationByKeyQuery>() .InRequestScope(); Bind<IPackageRegistrationByIdQuery>() .To<PackageRegistrationByIdQuery>() .InRequestScope(); Bind<IUserByUsernameQuery>() .To<UserByUsernameQuery>() .InRequestScope(); Bind<IAggregateStatsService>() .To<AggregateStatsService>() .InRequestScope(); Bind<IPackageIdsQuery>() .To<PackageIdsQuery>() .InRequestScope(); Bind<IPackageVersionsQuery>() .To<PackageVersionsQuery>() .InRequestScope(); BindChocolateySpecific(); }
public override void Load() { IConfiguration configuration = new Configuration(); Bind<IConfiguration>() .ToMethod(context => configuration); var gallerySetting = new Lazy<GallerySetting>( () => { using (var entitiesContext = new EntitiesContext(configuration.SqlConnectionString, configuration.ReadOnlyMode)) { var settingsRepo = new EntityRepository<GallerySetting>(entitiesContext); return settingsRepo.GetAll().FirstOrDefault(); } }); Bind<GallerySetting>().ToMethod(c => gallerySetting.Value); Bind<Lucene.Net.Store.Directory>() .ToMethod(_ => LuceneCommon.GetDirectory()) .InSingletonScope(); Bind<ISearchService>() .To<LuceneSearchService>() .InRequestScope(); if (!String.IsNullOrEmpty(configuration.AzureDiagnosticsConnectionString)) { Bind<ErrorLog>() .ToMethod(_ => new TableErrorLog(configuration.AzureDiagnosticsConnectionString)) .InSingletonScope(); } else { Bind<ErrorLog>() .ToMethod(_ => new SqlErrorLog(configuration.SqlConnectionString)) .InSingletonScope(); } if (IsDeployedToCloud) { // when running on Windows Azure, use the Azure Cache local storage Bind<IPackageCacheService>() .To<CloudPackageCacheService>() .InSingletonScope(); // when running on Windows Azure, use the Azure Cache service if available if (!String.IsNullOrEmpty(configuration.AzureCacheEndpoint)) { Bind<ICacheService>() .To<CloudCacheService>() .InSingletonScope(); } else { Bind<ICacheService>() .To<HttpContextCacheService>() .InRequestScope(); } // when running on Windows Azure, pull the statistics from the warehouse via storage Bind<IReportService>() .ToMethod(context => new CloudReportService(configuration.AzureStatisticsConnectionString)) .InSingletonScope(); Bind<IStatisticsService>() .To<JsonStatisticsService>() .InSingletonScope(); } else { Bind<IPackageCacheService>() .To<NullPackageCacheService>() .InSingletonScope(); // when running locally on dev box, use the built-in ASP.NET Http Cache Bind<ICacheService>() .To<HttpContextCacheService>() .InRequestScope(); } Bind<IEntitiesContext>() .ToMethod(context => new EntitiesContext(configuration.SqlConnectionString, readOnly: configuration.ReadOnlyMode)) .InRequestScope(); Bind<IEntityRepository<User>>() .To<EntityRepository<User>>() .InRequestScope(); Bind<IEntityRepository<PackageRegistration>>() .To<EntityRepository<PackageRegistration>>() .InRequestScope(); Bind<IEntityRepository<Package>>() .To<EntityRepository<Package>>() .InRequestScope(); Bind<IEntityRepository<PackageAuthor>>() .To<EntityRepository<PackageAuthor>>() .InRequestScope(); Bind<IEntityRepository<PackageDependency>>() .To<EntityRepository<PackageDependency>>() .InRequestScope(); Bind<IEntityRepository<PackageStatistics>>() .To<EntityRepository<PackageStatistics>>() .InRequestScope(); Bind<IUserService>() .To<UserService>() .InRequestScope(); Bind<IPackageSource>() .To<PackageSource>() .InRequestScope(); Bind<IPackageService>() .To<PackageService>() .InRequestScope(); Bind<ICryptographyService>() .To<CryptographyService>() .InRequestScope(); Bind<IFormsAuthenticationService>() .To<FormsAuthenticationService>() .InSingletonScope(); Bind<IControllerFactory>() .To<NuGetControllerFactory>() .InRequestScope(); Bind<IIndexingService>() .To<LuceneIndexingService>() .InRequestScope(); Bind<INuGetExeDownloaderService>() .To<NuGetExeDownloaderService>() .InRequestScope(); var mailSenderThunk = new Lazy<IMailSender>( () => { var settings = Kernel.Get<GallerySetting>(); if (settings.UseSmtp) { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.Network, Host = settings.SmtpHost, Port = settings.SmtpPort, EnableSsl = true }; if (!String.IsNullOrWhiteSpace(settings.SmtpUsername)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential( settings.SmtpUsername, settings.SmtpPassword); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); Bind<IMailSender>() .ToMethod(context => mailSenderThunk.Value); Bind<IMessageService>() .To<MessageService>(); Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.PackageStoreType) { case PackageStoreType.FileSystem: case PackageStoreType.NotSpecified: Bind<IFileStorageService>() .To<FileSystemFileStorageService>() .InSingletonScope(); break; case PackageStoreType.AzureStorageBlob: Bind<ICloudBlobClient>() .ToMethod( context => new CloudBlobClientWrapper(CloudStorageAccount.Parse(configuration.AzureStorageConnectionString).CreateCloudBlobClient())) .InSingletonScope(); Bind<IFileStorageService>() .To<CloudBlobFileStorageService>() .InSingletonScope(); break; } Bind<IFileSystemService>() .To<FileSystemService>() .InSingletonScope(); Bind<IPackageFileService>() .To<PackageFileService>(); Bind<IEntityRepository<PackageOwnerRequest>>() .To<EntityRepository<PackageOwnerRequest>>() .InRequestScope(); Bind<IUploadFileService>() .To<UploadFileService>(); // todo: bind all package curators by convention Bind<IAutomaticPackageCurator>() .To<WebMatrixPackageCurator>(); Bind<IAutomaticPackageCurator>() .To<Windows8PackageCurator>(); // todo: bind all commands by convention Bind<IAutomaticallyCuratePackageCommand>() .To<AutomaticallyCuratePackageCommand>() .InRequestScope(); Bind<ICreateCuratedPackageCommand>() .To<CreateCuratedPackageCommand>() .InRequestScope(); Bind<IDeleteCuratedPackageCommand>() .To<DeleteCuratedPackageCommand>() .InRequestScope(); Bind<IModifyCuratedPackageCommand>() .To<ModifyCuratedPackageCommand>() .InRequestScope(); // todo: bind all queries by convention Bind<ICuratedFeedByKeyQuery>() .To<CuratedFeedByKeyQuery>() .InRequestScope(); Bind<ICuratedFeedByNameQuery>() .To<CuratedFeedByNameQuery>() .InRequestScope(); Bind<ICuratedFeedsByManagerQuery>() .To<CuratedFeedsByManagerQuery>() .InRequestScope(); Bind<IPackageRegistrationByKeyQuery>() .To<PackageRegistrationByKeyQuery>() .InRequestScope(); Bind<IPackageRegistrationByIdQuery>() .To<PackageRegistrationByIdQuery>() .InRequestScope(); Bind<IUserByUsernameQuery>() .To<UserByUsernameQuery>() .InRequestScope(); Bind<IAggregateStatsService>() .To<AggregateStatsService>() .InRequestScope(); Bind<IPackageIdsQuery>() .To<PackageIdsQuery>() .InRequestScope(); Bind<IPackageVersionsQuery>() .To<PackageVersionsQuery>() .InRequestScope(); }
protected override void Load(ContainerBuilder builder) { var diagnosticsService = new DiagnosticsService(); builder.RegisterInstance(diagnosticsService) .AsSelf() .As<IDiagnosticsService>() .SingleInstance(); var configuration = new ConfigurationService(new SecretReaderFactory(diagnosticsService)); builder.RegisterInstance(configuration) .AsSelf() .As<PoliteCaptcha.IConfigurationSource>(); builder.RegisterInstance(configuration) .AsSelf() .As<IGalleryConfigurationService>(); builder.Register(c => configuration.Current) .AsSelf() .As<IAppConfiguration>(); // Force the read of this configuration, so it will be initialized on startup builder.Register(c => configuration.Features) .AsSelf() .As<FeatureConfiguration>(); builder.RegisterType<CredentialBuilder>().As<ICredentialBuilder>().SingleInstance(); builder.RegisterType<CredentialValidator>().As<ICredentialValidator>().SingleInstance(); builder.RegisterInstance(LuceneCommon.GetDirectory(configuration.Current.LuceneIndexLocation)) .As<Lucene.Net.Store.Directory>() .SingleInstance(); ConfigureSearch(builder, configuration); if (!string.IsNullOrEmpty(configuration.Current.AzureStorageConnectionString)) { builder.RegisterInstance(new TableErrorLog(configuration.Current.AzureStorageConnectionString)) .As<ErrorLog>() .SingleInstance(); } else { builder.RegisterInstance(new SqlErrorLog(configuration.Current.SqlConnectionString)) .As<ErrorLog>() .SingleInstance(); } builder.RegisterType<DateTimeProvider>().AsSelf().As<IDateTimeProvider>().SingleInstance(); builder.RegisterType<HttpContextCacheService>() .AsSelf() .As<ICacheService>() .InstancePerLifetimeScope(); builder.RegisterType<ContentService>() .AsSelf() .As<IContentService>() .SingleInstance(); builder.Register(c => new EntitiesContext(configuration.Current.SqlConnectionString, readOnly: configuration.Current.ReadOnlyMode)) .AsSelf() .As<IEntitiesContext>() .As<DbContext>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<User>>() .AsSelf() .As<IEntityRepository<User>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<CuratedFeed>>() .AsSelf() .As<IEntityRepository<CuratedFeed>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<CuratedPackage>>() .AsSelf() .As<IEntityRepository<CuratedPackage>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<PackageRegistration>>() .AsSelf() .As<IEntityRepository<PackageRegistration>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<Package>>() .AsSelf() .As<IEntityRepository<Package>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<PackageDependency>>() .AsSelf() .As<IEntityRepository<PackageDependency>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<PackageDelete>>() .AsSelf() .As<IEntityRepository<PackageDelete>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<Credential>>() .AsSelf() .As<IEntityRepository<Credential>>() .InstancePerLifetimeScope(); builder.RegisterType<EntityRepository<PackageOwnerRequest>>() .AsSelf() .As<IEntityRepository<PackageOwnerRequest>>() .InstancePerLifetimeScope(); builder.RegisterType<CuratedFeedService>() .AsSelf() .As<ICuratedFeedService>() .InstancePerLifetimeScope(); builder.Register(c => new SupportRequestDbContext(configuration.Current.SqlConnectionStringSupportRequest)) .AsSelf() .As<ISupportRequestDbContext>() .InstancePerLifetimeScope(); builder.RegisterType<SupportRequestService>() .AsSelf() .As<ISupportRequestService>() .InstancePerLifetimeScope(); builder.RegisterType<UserService>() .AsSelf() .As<IUserService>() .InstancePerLifetimeScope(); builder.RegisterType<PackageNamingConflictValidator>() .AsSelf() .As<IPackageNamingConflictValidator>() .InstancePerLifetimeScope(); builder.RegisterType<PackageService>() .AsSelf() .As<IPackageService>() .InstancePerLifetimeScope(); builder.RegisterType<PackageDeleteService>() .AsSelf() .As<IPackageDeleteService>() .InstancePerLifetimeScope(); builder.RegisterType<EditPackageService>() .AsSelf() .InstancePerLifetimeScope(); builder.RegisterType<FormsAuthenticationService>() .As<IFormsAuthenticationService>() .InstancePerLifetimeScope(); builder.RegisterType<CookieTempDataProvider>() .As<ITempDataProvider>() .InstancePerLifetimeScope(); builder.RegisterType<NuGetExeDownloaderService>() .AsSelf() .As<INuGetExeDownloaderService>() .InstancePerLifetimeScope(); builder.RegisterType<StatusService>() .AsSelf() .As<IStatusService>() .InstancePerLifetimeScope(); var mailSenderThunk = new Lazy<IMailSender>( () => { var settings = configuration; if (settings.Current.SmtpUri != null && settings.Current.SmtpUri.IsAbsoluteUri) { var smtpUri = new SmtpUri(settings.Current.SmtpUri); var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.Network, Host = smtpUri.Host, Port = smtpUri.Port, EnableSsl = smtpUri.Secure }; if (!string.IsNullOrWhiteSpace(smtpUri.UserName)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential( smtpUri.UserName, smtpUri.Password); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); builder.Register(c => mailSenderThunk.Value) .AsSelf() .As<IMailSender>() .InstancePerLifetimeScope(); builder.RegisterType<MessageService>() .AsSelf() .As<IMessageService>() .InstancePerLifetimeScope(); builder.Register(c => HttpContext.Current.User) .AsSelf() .As<IPrincipal>() .InstancePerLifetimeScope(); switch (configuration.Current.StorageType) { case StorageType.FileSystem: case StorageType.NotSpecified: ConfigureForLocalFileSystem(builder, configuration); break; case StorageType.AzureStorage: ConfigureForAzureStorage(builder, configuration); break; } builder.RegisterType<FileSystemService>() .AsSelf() .As<IFileSystemService>() .SingleInstance(); builder.RegisterType<PackageFileService>() .AsSelf() .As<IPackageFileService>() .InstancePerLifetimeScope(); builder.RegisterType<UploadFileService>() .AsSelf() .As<IUploadFileService>() .InstancePerLifetimeScope(); // todo: bind all package curators by convention builder.RegisterType<WebMatrixPackageCurator>() .AsSelf() .As<IAutomaticPackageCurator>() .InstancePerLifetimeScope(); builder.RegisterType<Windows8PackageCurator>() .AsSelf() .As<IAutomaticPackageCurator>() .InstancePerLifetimeScope(); // todo: bind all commands by convention builder.RegisterType<AutomaticallyCuratePackageCommand>() .AsSelf() .As<IAutomaticallyCuratePackageCommand>() .InstancePerLifetimeScope(); ConfigureAutocomplete(builder, configuration); }
public MailSender(MailSenderConfiguration configuration) : this(new SmtpClient(), configuration) { }
public MailSender(MailSenderConfiguration configuration) : this(new SmtpClientWrapper(new SmtpClient()), configuration) { }
public override void Load() { var configuration = new ConfigurationService(); Bind<ConfigurationService>() .ToMethod(context => configuration); Bind<IAppConfiguration>() .ToMethod(context => configuration.Current); Bind<IConfigurationSource>() .ToMethod(context => configuration); if (!String.IsNullOrEmpty(configuration.Current.AzureStorageConnectionString)) { Bind<ErrorLog>() .ToMethod(_ => new TableErrorLog(configuration.Current.AzureStorageConnectionString)) .InSingletonScope(); } else { Bind<ErrorLog>() .ToMethod(_ => new SqlErrorLog(configuration.Current.SqlConnectionString)) .InSingletonScope(); } Bind<ICacheService>() .To<HttpContextCacheService>() .InRequestScope(); Bind<IContentService>() .To<ContentService>() .InSingletonScope(); Bind<IEntitiesContext>() .ToMethod(context => new EntitiesContext(configuration.Current.SqlConnectionString, readOnly: configuration.Current.ReadOnlyMode)) .InRequestScope(); Bind<IEntityRepository<User>>() .To<EntityRepository<User>>() .InRequestScope(); Bind<IEntityRepository<ProjectRegistration>>() .To<EntityRepository<ProjectRegistration>>() .InRequestScope(); Bind<IEntityRepository<Project>>() .To<EntityRepository<Project>>() .InRequestScope(); Bind<IEntityRepository<Credential>>() .To<EntityRepository<Credential>>() .InRequestScope(); Bind<IUserService>() .To<UserService>() .InRequestScope(); Bind<IProjectService>() .To<ProjectService>() .InRequestScope(); Bind<IFormsAuthenticationService>() .To<FormsAuthenticationService>() .InSingletonScope(); Bind<IControllerFactory>() .To<OssFinderControllerFactory>() .InRequestScope(); var mailSenderThunk = new Lazy<IMailSender>( () => { var settings = Kernel.Get<ConfigurationService>(); if (settings.Current.SmtpUri != null && settings.Current.SmtpUri.IsAbsoluteUri) { var smtpUri = new SmtpUri(settings.Current.SmtpUri); var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.Network, Host = smtpUri.Host, Port = smtpUri.Port, EnableSsl = smtpUri.Secure }; if (!String.IsNullOrWhiteSpace(smtpUri.UserName)) { mailSenderConfiguration.UseDefaultCredentials = false; mailSenderConfiguration.Credentials = new NetworkCredential( smtpUri.UserName, smtpUri.Password); } return new MailSender(mailSenderConfiguration); } else { var mailSenderConfiguration = new MailSenderConfiguration { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory, PickupDirectoryLocation = HostingEnvironment.MapPath("~/App_Data/Mail") }; return new MailSender(mailSenderConfiguration); } }); Bind<IMailSender>() .ToMethod(context => mailSenderThunk.Value); Bind<IMessageService>() .To<MessageService>(); Bind<IPrincipal>().ToMethod(context => HttpContext.Current.User); switch (configuration.Current.StorageType) { case StorageType.FileSystem: case StorageType.NotSpecified: ConfigureForLocalFileSystem(); break; case StorageType.AzureStorage: ConfigureForAzureStorage(configuration); break; } Bind<IFileSystemService>() .To<FileSystemService>() .InSingletonScope(); }