public static Core.BioEngine AddS3Storage(this Core.BioEngine bioEngine) { return(bioEngine.AddModule <S3StorageModule, S3StorageModuleConfig>((configuration, env) => { var uri = configuration["BE_STORAGE_PUBLIC_URI"]; var success = Uri.TryCreate(uri, UriKind.Absolute, out var publicUri); if (!success) { throw new ArgumentException($"URI {uri} is not proper URI"); } var serverUriStr = configuration["BE_STORAGE_S3_SERVER_URI"]; success = Uri.TryCreate(serverUriStr, UriKind.Absolute, out var serverUri); if (!success) { throw new ArgumentException($"S3 server URI {serverUriStr} is not proper URI"); } return new S3StorageModuleConfig(publicUri, serverUri, configuration["BE_STORAGE_S3_BUCKET"], configuration["BE_STORAGE_S3_ACCESS_KEY"], configuration["BE_STORAGE_S3_SECRET_KEY"]) { LargeThumbnailHeight = 578, LargeThumbnailWidth = 800 }; })); }
public static Core.BioEngine AddS3Client(this Core.BioEngine bioEngine) { return(bioEngine.AddModule <S3ClientModule, S3ClientModuleConfig>((configuration, env) => { var serverUriStr = configuration["BE_STORAGE_S3_SERVER_URI"]; var success = Uri.TryCreate(serverUriStr, UriKind.Absolute, out var serverUri); if (!success) { throw new ArgumentException($"S3 server URI {serverUri} is not proper URI"); } return new S3ClientModuleConfig(serverUri, configuration["BE_STORAGE_S3_BUCKET"], configuration["BE_STORAGE_S3_ACCESS_KEY"], configuration["BE_STORAGE_S3_SECRET_KEY"]); })); }
public static Core.BioEngine AddPostgresDb(this Core.BioEngine bioEngine, bool enablePooling = true) { return(bioEngine .AddEntities() .AddModule <PostgresDatabaseModule <BioContext>, PostgresDatabaseModuleConfig>( (configuration, env) => new PostgresDatabaseModuleConfig(configuration["BE_POSTGRES_HOST"], configuration["BE_POSTGRES_USERNAME"], configuration["BE_POSTGRES_DATABASE"], configuration["BE_POSTGRES_PASSWORD"], int.Parse(configuration["BE_POSTGRES_PORT"]), typeof(MigrationsManager).Assembly) { EnableNpgsqlPooling = env.IsDevelopment() }) .ConfigureServices( collection => { collection.AddHealthChecks().AddDbContextCheck <BioContext>(); })); }
public static Core.BioEngine AddBrcSite(this Core.BioEngine bioEngine) { bioEngine .AddPostgresDb() .AddBrcDomain() .AddModule <PagesSiteModule>() .AddModule <PostsSiteModule <string> >() .AddModule <BrcSiteModule, BrcSiteModuleConfig>( (configuration, env) => new BrcSiteModuleConfig(configuration["BE_PATREON_SERVICE_URL"])) .AddElasticSearch() .AddS3Storage() .AddModule <SeoModule>() .AddModule <IPBSiteModule, IPBSiteModuleConfig>((configuration, env) => { if (!Uri.TryCreate(configuration["BE_IPB_URL"], UriKind.Absolute, out var ipbUrl)) { throw new ArgumentException($"Can't parse IPB url; {configuration["BE_IPB_URL"]}"); } return(new IPBSiteModuleConfig(ipbUrl) { ApiReadonlyKey = configuration["BE_IPB_API_READONLY_KEY"] }); }) .AddIpbUsers <IPBSiteUsersModule, IPBSiteUsersModuleConfig, IPBSiteCurrentUserProvider>() .AddModule <SiteModule, SiteModuleConfig>((configuration, env) => new SiteModuleConfig( Guid.Parse(configuration["BE_SITE_ID"]))) .AddModule <AdsSiteModule>(); bioEngine.ConfigureServices((context, collection) => { if (context.HostingEnvironment.IsDevelopment()) { collection.AddScoped <IUserDataProvider <string>, TestUserDataProvider>(); } }); return(bioEngine); }
protected override Core.BioEngine ConfigureBioEngine(Core.BioEngine bioEngine) { return(base.ConfigureBioEngine(bioEngine).ConfigureServices(collection => { collection.AddScoped <FilesUploader>(); collection.AddHttpClient(); collection.AddScoped <HtmlParser>(); }).AddBrcDomain().AddModule <FileStorageModule, FileStorageModuleConfig>((configuration, environment) => { var tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); Directory.CreateDirectory(tempDirectory); return new FileStorageModuleConfig(new Uri("https://test.bioware.ru"), tempDirectory); }).AddModule <SeoModule>() .AddModule <TwitterModule>() .AddElasticSearch() .AddModule <PagesApiModule>() .AddModule <FacebookModule>().ConfigureAppConfiguration(builder => { builder.AddUserSecrets <Importer>(); builder.AddEnvironmentVariables(); }).Run <ImporterStartup>()); }
public static async Task Main(string[] args) { var bioEngine = new Core.BioEngine(args) .AddPostgresDb() .AddBrcDomain() .AddS3Storage() .AddModule <IPBSiteModule, IPBSiteModuleConfig>((configuration, env) => { if (!Uri.TryCreate(configuration["BE_IPB_URL"], UriKind.Absolute, out var ipbUrl)) { throw new ArgumentException($"Can't parse IPB url; {configuration["BE_IPB_URL"]}"); } return(new IPBSiteModuleConfig(ipbUrl) { ApiReadonlyKey = configuration["BE_IPB_API_READONLY_KEY"] }); }) .AddIpbUsers <IPBSiteUsersModule, IPBSiteUsersModuleConfig, IPBSiteCurrentUserProvider>() .AddModule <PostsSiteModule <string> >() .AddModule <JobsModule>(); await bioEngine.RunAsync <Startup>(); }
public static Core.BioEngine AddBrcDomain(this Core.BioEngine bioEngine) { return(bioEngine.AddModule <BrcDomainModule>()); }
public static Core.BioEngine AddElasticSearch(this Core.BioEngine bioEngine) { return(bioEngine.AddModule <ElasticSearchModule, ElasticSearchModuleConfig>((configuration, env) => new ElasticSearchModuleConfig(configuration["BE_ELASTICSEARCH_PREFIX"], configuration["BE_ELASTICSEARCH_URI"], enableClientLogging: env.IsDevelopment()))); }
AddIpbUsers <TUsersModule, TConfig, TCurrentUserProvider>(this Core.BioEngine bioEngine) where TUsersModule : IPBUsersModule <TConfig, TCurrentUserProvider>, new() where TConfig : IPBUsersModuleConfig, new() where TCurrentUserProvider : class, ICurrentUserProvider <string> { return(bioEngine.AddModule <TUsersModule, TConfig>((configuration, env) => { bool.TryParse(configuration["BE_IPB_API_DEV_MODE"] ?? "", out var devMode); int.TryParse(configuration["BE_IPB_API_ADMIN_GROUP_ID"], out var adminGroupId); int.TryParse(configuration["BE_IPB_API_SITE_TEAM_GROUP_ID"], out var siteTeamGroupId); var additionalGroupIds = new List <int> { siteTeamGroupId }; if (!string.IsNullOrEmpty(configuration["BE_IPB_API_ADDITIONAL_GROUP_IDS"])) { var ids = configuration["BE_IPB_API_ADDITIONAL_GROUP_IDS"].Split(','); foreach (var id in ids) { if (int.TryParse(id, out var parsedId)) { additionalGroupIds.Add(parsedId); } } } var adminPolicy = new AuthorizationPolicyBuilder().RequireClaim(ClaimTypes.Role, "admin").Build(); var siteTeamPolicy = new AuthorizationPolicyBuilder() .RequireClaim(ClaimTypes.GroupSid, siteTeamGroupId.ToString(), adminGroupId.ToString()) .Build(); var policies = new Dictionary <string, AuthorizationPolicy> { { BioPolicies.Admin, adminPolicy }, { BrcPolicies.SiteTeam, siteTeamPolicy }, // sections { BioPolicies.Sections, siteTeamPolicy }, { BioPolicies.SectionsAdd, adminPolicy }, { BioPolicies.SectionsEdit, adminPolicy }, { BioPolicies.SectionsPublish, adminPolicy }, { BioPolicies.SectionsDelete, adminPolicy }, // posts { PostsPolicies.Posts, siteTeamPolicy }, { PostsPolicies.PostsAdd, siteTeamPolicy }, { PostsPolicies.PostsEdit, siteTeamPolicy }, { PostsPolicies.PostsDelete, siteTeamPolicy }, { PostsPolicies.PostsPublish, siteTeamPolicy }, // pages { PagesPolicies.Pages, adminPolicy }, { PagesPolicies.PagesAdd, adminPolicy }, { PagesPolicies.PagesEdit, adminPolicy }, { PagesPolicies.PagesDelete, adminPolicy }, { PagesPolicies.PagesPublish, adminPolicy }, // ads { AdsPolicies.Ads, adminPolicy }, { AdsPolicies.AdsAdd, adminPolicy }, { AdsPolicies.AdsEdit, adminPolicy }, { AdsPolicies.AdsDelete, adminPolicy }, { AdsPolicies.AdsPublish, adminPolicy } }; var config = new TConfig { DevMode = devMode, AdminGroupId = adminGroupId, AdditionalGroupIds = additionalGroupIds.Distinct().ToArray(), CallbackPath = "/login/ipb", ApiClientId = configuration["BE_IPB_OAUTH_CLIENT_ID"], ApiClientSecret = configuration["BE_IPB_OAUTH_CLIENT_SECRET"], AuthorizationEndpoint = configuration["BE_IPB_AUTHORIZATION_ENDPOINT"], TokenEndpoint = configuration["BE_IPB_TOKEN_ENDPOINT"], DataProtectionPath = configuration["BE_IPB_DATA_PROTECTION_PATH"] }; foreach (var policy in policies) { config.Policies.Add(policy.Key, policy.Value); } return config; })); }
public static async Task Main(string[] args) { var bioEngine = new Core.BioEngine(args).AddBrcSite(); await bioEngine.RunAsync <Startup>(); }