コード例 #1
0
 static internal 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;
     }
 }
コード例 #2
0
        private static void RegisterSmtpEmailMessagingService(ContainerBuilder builder, ConfigurationService configuration)
        {
            MailSender mailSenderFactory()
            {
                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 => mailSenderFactory())
            .AsSelf()
            .As <IMailSender>()
            .InstancePerDependency();

            builder.RegisterType <BackgroundMarkdownMessageService>()
            .AsSelf()
            .As <IMessageService>()
            .InstancePerDependency();
        }
コード例 #3
0
        internal MailSender(SmtpClient smtpClient, MailSenderConfiguration configuration)
        {
            if (smtpClient == null)
            {
                throw new ArgumentNullException("smtpClient");
            }

            if (configuration != null)
            {
                ConfigureSmtpClient(smtpClient, configuration);
            }

            this._smtpClient = smtpClient;
        }
コード例 #4
0
ファイル: AlertService.cs プロジェクト: pngouin/CK-Glouton
        public bool TryGetConfiguration(IActivityMonitor activityMonitor, string key, out IAlertSenderConfiguration configuration)
        {
            configuration = null;
            switch (key)
            {
            case "Mail":
                configuration = _defaultMailSenderConfiguration
                                ?? (_defaultMailSenderConfiguration = (MailSenderConfiguration) new MailSenderConfiguration().Default());
                return(true);

            case "Http":
                configuration = _defaultHttpSenderConfiguration
                                ?? (_defaultHttpSenderConfiguration = (HttpSenderConfiguration) new HttpSenderConfiguration().Default());
                return(true);

            default:
                activityMonitor.Error($"Configuration key {key} is unknown.");
                return(false);
            }
        }
コード例 #5
0
        public void RegisterDependencies(IDependencyRegistry dependencyRegistry)
        {
            dependencyRegistry.RegisterCreator <IMailSender>(() =>
            {
                var mailSenderConfiguration = new MailSenderConfiguration
                {
                    DeliveryMethod          = SmtpDeliveryMethod.SpecifiedPickupDirectory,
                    PickupDirectoryLocation = HttpContext.Current.Server.MapPath("~/App_Data/Mail")
                };

                //var mailSenderConfiguration = new MailSenderConfiguration() {
                //    DeliveryMethod = SmtpDeliveryMethod.Network,
                //    EnableSsl = true,
                //    Host = "smtp.gmail.com",
                //    Port = 587,
                //    UseDefaultCredentials = false,
                //    Credentials = new NetworkCredential("<your-gmail-address>", "<your-gmail-password>")
                //};

                return(new MarkdownSharpMailSender(mailSenderConfiguration));
            });
        }
        protected override void Load(ContainerBuilder builder)
        {
            var configuration = new ConfigurationService();

            builder.RegisterInstance(configuration)
            .AsSelf()
            .As <PoliteCaptcha.IConfigurationSource>();
            builder.Register(c => configuration.Current)
            .AsSelf()
            .As <IAppConfiguration>();

            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 <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 <PackageStatistics> >()
            .AsSelf()
            .As <IEntityRepository <PackageStatistics> >()
            .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.RegisterType <UserService>()
            .AsSelf()
            .As <IUserService>()
            .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);
                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);

            builder.RegisterType <DiagnosticsService>()
            .AsSelf()
            .As <IDiagnosticsService>()
            .SingleInstance();
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        protected override void Load(ContainerBuilder builder)
        {
            var telemetryClient = TelemetryClientWrapper.Instance;

            builder.RegisterInstance(telemetryClient)
            .AsSelf()
            .As <ITelemetryClient>()
            .SingleInstance();

            var diagnosticsService = new DiagnosticsService(telemetryClient);

            builder.RegisterInstance(diagnosticsService)
            .AsSelf()
            .As <IDiagnosticsService>()
            .SingleInstance();

            var configuration = new ConfigurationService(new SecretReaderFactory(diagnosticsService));

            UrlExtensions.SetConfigurationService(configuration);

            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.Register(c => configuration.PackageDelete)
            .As <IPackageDeleteConfiguration>();

            builder.RegisterType <TelemetryService>().As <ITelemetryService>().SingleInstance();
            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);

            builder.RegisterType <DateTimeProvider>().AsSelf().As <IDateTimeProvider>().SingleInstance();

            builder.RegisterType <HttpContextCacheService>()
            .AsSelf()
            .As <ICacheService>()
            .InstancePerLifetimeScope();

            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 <ReservedNamespace> >()
            .AsSelf()
            .As <IEntityRepository <ReservedNamespace> >()
            .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 <AccountDelete> >()
            .AsSelf()
            .As <IEntityRepository <AccountDelete> >()
            .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 <DeleteAccountService>()
            .AsSelf()
            .As <IDeleteAccountService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <PackageOwnerRequestService>()
            .AsSelf()
            .As <IPackageOwnerRequestService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <FormsAuthenticationService>()
            .As <IFormsAuthenticationService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <CookieTempDataProvider>()
            .As <ITempDataProvider>()
            .InstancePerLifetimeScope();

            builder.RegisterType <StatusService>()
            .AsSelf()
            .As <IStatusService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <SecurityPolicyService>()
            .AsSelf()
            .As <ISecurityPolicyService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <ReservedNamespaceService>()
            .AsSelf()
            .As <IReservedNamespaceService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <PackageUploadService>()
            .AsSelf()
            .As <IPackageUploadService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <PackageOwnershipManagementService>()
            .AsSelf()
            .As <IPackageOwnershipManagementService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <ValidationService>()
            .AsSelf()
            .As <IValidationService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <ReadMeService>()
            .AsSelf()
            .As <IReadMeService>()
            .InstancePerLifetimeScope();

            builder.RegisterType <ApiScopeEvaluator>()
            .AsSelf()
            .As <IApiScopeEvaluator>()
            .InstancePerLifetimeScope();

            builder.RegisterType <SecurePushSubscription>()
            .SingleInstance();

            builder.RegisterType <RequireSecurePushForCoOwnersPolicy>()
            .SingleInstance();

            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();

            IAuditingService defaultAuditingService = null;

            switch (configuration.Current.StorageType)
            {
            case StorageType.FileSystem:
            case StorageType.NotSpecified:
                ConfigureForLocalFileSystem(builder, configuration);
                defaultAuditingService = GetAuditingServiceForLocalFileSystem(configuration);
                break;

            case StorageType.AzureStorage:
                ConfigureForAzureStorage(builder, configuration, telemetryClient);
                defaultAuditingService = GetAuditingServiceForAzureStorage(builder, configuration);
                break;
            }

            RegisterAsynchronousValidation(builder, configuration);

            RegisterAuditingServices(builder, defaultAuditingService);

            RegisterCookieComplianceService(builder, configuration, diagnosticsService);

            // 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();

            if (configuration.Current.Environment == Constants.DevelopmentEnvironment)
            {
                builder.RegisterType <AllowLocalHttpRedirectPolicy>()
                .As <ISourceDestinationRedirectPolicy>()
                .InstancePerLifetimeScope();
            }
            else
            {
                builder.RegisterType <NoLessSecureDestinationRedirectPolicy>()
                .As <ISourceDestinationRedirectPolicy>()
                .InstancePerLifetimeScope();
            }

            ConfigureAutocomplete(builder, configuration);
        }
コード例 #9
0
        public override void Load()
        {
            var configuration = new ConfigurationService();

            Bind <ConfigurationService>().ToMethod(context => configuration);
            Bind <IAppConfiguration>().ToMethod(context => configuration.Current);
            Bind <IConfigurationSource>().ToMethod(context => configuration);

            Bind <AuditingService>().ToConstant(AuditingService.None);

            Bind <ErrorLog>()
            .ToMethod(_ => new SqlErrorLog(configuration.Current.SqlConnectionString))
            .InSingletonScope();

            Bind <ICacheService>().To <HttpContextCacheService>().InRequestScope();
            Bind <ICustomerService>().To <CustomerService>().InRequestScope();
            Bind <IProductService>().To <ProductService>().InRequestScope();
            Bind <IUserService>().To <UserService>().InRequestScope();

            Bind <IControllerFactory>()
            .To <CustomControllerFactory>()
            .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);

            // ViewModel bindings
            Bind <INewLicenseViewModel>().To <CustomerSelectionViewModel>();
            Bind <INewLicenseViewModel>().To <FeatureSelectionViewModel>();
            Bind <INewLicenseViewModel>().To <LicenseExpirationViewModel>();
            //Bind<INewLicenseViewModel>().To<ProductNameSelectionViewModel>();
        }
コード例 #10
0
        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>();
        }
コード例 #11
0
        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();

            ConfigureSearch(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 <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 <INuGetExeDownloaderService>()
            .To <NuGetExeDownloaderService>()
            .InRequestScope();

            Bind <IStatusService>()
            .To <StatusService>()
            .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 <IPackageIdsQuery>()
            .To <PackageIdsQuery>()
            .InRequestScope();
            Bind <IPackageVersionsQuery>()
            .To <PackageVersionsQuery>()
            .InRequestScope();
        }
コード例 #12
0
        public override void Load()
        {
            var configuration = new Configuration();

            Bind <IConfiguration>()
            .ToMethod(context => configuration);
            Bind <PoliteCaptcha.IConfigurationSource>()
            .ToMethod(context => Configuration.GetPoliteCaptchaConfiguration());

            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 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
            {
                // 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 <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 <PackageAuthor> >()
            .To <EntityRepository <PackageAuthor> >()
            .InRequestScope();

            Bind <IEntityRepository <PackageDependency> >()
            .To <EntityRepository <PackageDependency> >()
            .InRequestScope();

            Bind <IEntityRepository <PackageStatistics> >()
            .To <EntityRepository <PackageStatistics> >()
            .InRequestScope();

            Bind <ICuratedFeedService>()
            .To <CuratedFeedService>()
            .InRequestScope();

            Bind <IUserService>()
            .To <UserService>()
            .InRequestScope();
            //modified by fwang5 2013/5/15
            Bind <ILdapService>()
            .To <LdapService>()
            .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 <IConfiguration>();
                if (settings.UseSmtp)
                {
                    var mailSenderConfiguration = new MailSenderConfiguration
                    {
                        DeliveryMethod = SmtpDeliveryMethod.Network,
                        Host           = settings.SmtpHost,
                        Port           = settings.SmtpPort,
                        //modified by fwang5 2013/5/15
                        EnableSsl = false
                    };

                    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(
                    _ => new CloudBlobClientWrapper(configuration.AzureStorageConnectionString))
                .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 <IAggregateStatsService>()
            .To <AggregateStatsService>()
            .InRequestScope();
            Bind <IPackageIdsQuery>()
            .To <PackageIdsQuery>()
            .InRequestScope();
            Bind <IPackageVersionsQuery>()
            .To <PackageVersionsQuery>()
            .InRequestScope();
        }
コード例 #13
0
 public MailSender(MailSenderConfiguration configuration) : this(new SmtpClient(), configuration)
 {
 }
コード例 #14
0
        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();
        }
コード例 #15
0
        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();
        }