From c84077ef588f2b534c86ef25718d2c90b182ed57 Mon Sep 17 00:00:00 2001 From: Daniel Gerst Date: Thu, 15 Jul 2021 22:28:26 +0200 Subject: [PATCH] Add configurations and update packages --- .../Extensions/IConfigurationExtensions.cs | 29 +++++++++ ...iConfiguration.EntityFrameworkMigration.cs | 27 +++++++++ ...bApiConfiguration.OpenApiSecurityScheme.cs | 34 +++++++++++ .../WebApiConfiguration.OpenId.Validation.cs | 34 +++++++++++ .../WebApiConfiguration.OpenId.cs | 36 +++++++++++ .../WebApiConfiguration.Server.CorsPolicy.cs | 32 ++++++++++ .../WebApiConfiguration.Server.Headers.cs | 30 ++++++++++ .../WebApiConfiguration.Server.cs | 36 +++++++++++ .../WebApiConfiguration.Swagger.License.cs | 29 +++++++++ .../WebApiConfiguration.Swagger.cs} | 43 +++++++------- .../Configurations/WebApiConfiguration.cs | 35 +++++++++++ .../Configuration/LicenseConfiguration.cs | 15 ----- .../SwaggerSecurityConfiguration.cs | 19 ------ .../GerstITS.Examples.Api.csproj | 22 +++---- .../GerstITS.Examples.Api.csproj.DotSettings | 1 + .../Module.Configurations.cs | 22 +++++++ GerstITS.Examples.Api/Module.Swagger.cs | 18 ------ GerstITS.Examples.Api/Module.cs | 2 +- GerstITS.Examples.Api/appsettings.json | 59 ++++++++++++++++++- ...erstITS.Examples.Jobs.SayHelloWorld.csproj | 8 +-- .../GerstITS.Examples.Logic.csproj | 10 ++-- ...GerstITS.Examples.WebClient.Console.csproj | 6 +- ...TS.Examples.WebClients.Examples.Api.csproj | 6 +- 23 files changed, 451 insertions(+), 102 deletions(-) create mode 100644 GerstITS.Examples.Api/Common/Configurations/Extensions/IConfigurationExtensions.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.EntityFrameworkMigration.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenApiSecurityScheme.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.Validation.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.CorsPolicy.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.Headers.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.cs create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.License.cs rename GerstITS.Examples.Api/Common/{Swagger/Configuration/WebApiConfiguration.cs => Configurations/WebApiConfiguration.Swagger.cs} (52%) create mode 100644 GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.cs delete mode 100644 GerstITS.Examples.Api/Common/Swagger/Configuration/LicenseConfiguration.cs delete mode 100644 GerstITS.Examples.Api/Common/Swagger/Configuration/SwaggerSecurityConfiguration.cs create mode 100644 GerstITS.Examples.Api/Module.Configurations.cs delete mode 100644 GerstITS.Examples.Api/Module.Swagger.cs diff --git a/GerstITS.Examples.Api/Common/Configurations/Extensions/IConfigurationExtensions.cs b/GerstITS.Examples.Api/Common/Configurations/Extensions/IConfigurationExtensions.cs new file mode 100644 index 0000000..e5ca66e --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/Extensions/IConfigurationExtensions.cs @@ -0,0 +1,29 @@ +using System; +using System.Linq; +using Microsoft.Extensions.Configuration; + +namespace GerstITS.Examples.Api.Configurations +{ + public static class IConfigurationExtensions + { + #region Methods + + public static TEnum GetFlaggedEnum(this IConfiguration configuration, string key) + where TEnum : struct, IConvertible + { + ThrowsAnExceptionIfTypeIsNotAnEnumeration(); + + return (TEnum)(object)(configuration.GetSection(key)? + .Get() ?? Enumerable.Empty()) + .Sum(i => (int)(object)i); + } + + private static void ThrowsAnExceptionIfTypeIsNotAnEnumeration() where TEnum : struct, IConvertible + { + if (!typeof(TEnum).IsEnum) + throw new InvalidOperationException($"{typeof(TEnum)} is not supported."); + } + + #endregion + } +} diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.EntityFrameworkMigration.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.EntityFrameworkMigration.cs new file mode 100644 index 0000000..530307d --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.EntityFrameworkMigration.cs @@ -0,0 +1,27 @@ +using GerstITS.Data.EntityFramework; +using GerstITS.System.Configurations; +using Microsoft.Extensions.Configuration; + +namespace GerstITS.Examples.Api.Configurations +{ + internal sealed class EntityFrameworkMigrationConfiguration : IEntityFrameworkMigrationConfiguration + { + #region Constructors + + public EntityFrameworkMigrationConfiguration(string parentPrefix, + Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + AutoMigrate = configuration.GetValue($"{prefix}:{nameof(AutoMigrate)}"); + } + + #endregion + + #region IMigrationConfiguration + + public bool AutoMigrate { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenApiSecurityScheme.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenApiSecurityScheme.cs new file mode 100644 index 0000000..a42c5fe --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenApiSecurityScheme.cs @@ -0,0 +1,34 @@ +using GerstITS.Web.Api.Swagger; +using Microsoft.Net.Http.Headers; +using Microsoft.OpenApi.Models; + +namespace BakeTronic.Web.Api.Configurations +{ + internal sealed class OpenApiSecuritySchemeConfiguration : IOpenApiSecuritySchemeConfiguration + { + #region Properties + + public bool AllowAnonymous { get; } + public string HttpHeaderKey { get; } + public string Scheme { get; } + public SecuritySchemeType SchemeType { get; } + public ParameterLocation ParameterLocation { get; } + public string Description { get; } + + #endregion + + #region Constructors + + public OpenApiSecuritySchemeConfiguration() + { + AllowAnonymous = false; + HttpHeaderKey = HeaderNames.Authorization; + Scheme = "Bearer"; + SchemeType = SecuritySchemeType.Http; + ParameterLocation = ParameterLocation.Header; + Description = "Authorization header using the Bearer scheme (Value: Bearer {{access_token}})."; + } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.Validation.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.Validation.cs new file mode 100644 index 0000000..77deb07 --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.Validation.cs @@ -0,0 +1,34 @@ +using GerstITS.Authentication.OpenId; +using Microsoft.Extensions.Configuration; + +namespace BakeTronic.Web.Api.Configurations +{ + internal class OpenIdValidationConfiguration : IOpenIdValidationConfiguration + { + #region Constructors + + public OpenIdValidationConfiguration(string parentPrefix, + IConfiguration configuration) + { + var prefix = $"{parentPrefix}:Validate"; + + Issuer = configuration.GetValue($"{prefix}:{nameof(Issuer)}"); + Audience = configuration.GetValue($"{prefix}:{nameof(Audience)}"); + RsaPublicKey = configuration.GetValue($"{prefix}:{nameof(RsaPublicKey)}"); + RequiredClaimType = configuration.GetValue($"{prefix}:{nameof(RequiredClaimType)}"); + ValidateLifetime = configuration.GetValue($"{prefix}:{nameof(ValidateLifetime)}"); + } + + #endregion + + #region IOpenIdValidationConfiguration + + public string Issuer { get; } + public string Audience { get; } + public string RsaPublicKey { get; } + public string RequiredClaimType { get; } + public bool ValidateLifetime { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.cs new file mode 100644 index 0000000..595b943 --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.OpenId.cs @@ -0,0 +1,36 @@ +using BakeTronic.Web.Api.Configurations; +using GerstITS.Authentication.OpenId; +using GerstITS.System.Configurations; +using Microsoft.Extensions.Configuration; + +namespace GerstITS.Examples.Api.Configurations +{ + internal class OpenIdConfiguration : IOpenIdConfiguration + { + #region Constructors + + public OpenIdConfiguration(string parentPrefix, + Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + Authority = configuration.GetValue($"{prefix}:{nameof(Authority)}"); + RequireHttpsMetadata = configuration.GetValue($"{prefix}:{nameof(RequireHttpsMetadata)}"); + SaveToken = configuration.GetValue($"{prefix}:{nameof(SaveToken)}"); + + Validate = new OpenIdValidationConfiguration(prefix, configuration); + } + + #endregion + + #region IOpenIdConfiguration + + public string Authority { get; } + public bool RequireHttpsMetadata { get; } + public bool SaveToken { get; } + + public IOpenIdValidationConfiguration Validate { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.CorsPolicy.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.CorsPolicy.cs new file mode 100644 index 0000000..0441d8c --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.CorsPolicy.cs @@ -0,0 +1,32 @@ +using GerstITS.System.Configurations; +using GerstITS.Web.Api.Builder; +using Microsoft.Extensions.Configuration; + +namespace BakeTronic.Web.Api.Configurations +{ + internal sealed class CorsPolicyConfiguration : ICorsPolicy, GerstITS.System.Configurations.IConfiguration + { + #region Constructors + + public CorsPolicyConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + AllowCredentials = configuration.GetValue($"{prefix}:{nameof(AllowCredentials)}", false); + AllowedOrigins = configuration.GetSection($"{prefix}:{nameof(AllowedOrigins)}").Get() ?? new string[0]; + AllowedHeaders = configuration.GetSection($"{prefix}:{nameof(AllowedHeaders)}").Get() ?? new string[0]; + AllowedMethods = configuration.GetSection($"{prefix}:{nameof(AllowedMethods)}").Get() ?? new string[0]; + } + + #endregion + + #region ICorsPolicy + + public bool AllowCredentials { get; } + public string[] AllowedOrigins { get; set; } + public string[] AllowedHeaders { get; set; } + public string[] AllowedMethods { get; set; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.Headers.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.Headers.cs new file mode 100644 index 0000000..a1a874a --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.Headers.cs @@ -0,0 +1,30 @@ +using GerstITS.System.Configurations; +using GerstITS.Web.Api.Builder; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.HttpOverrides; + +namespace GerstITS.Examples.Api.Configurations +{ + internal sealed class WebApiHeadersConfiguration : IHeaderConfiguration, IConfiguration + { + #region Constructors + + public WebApiHeadersConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + ForwardedHeaders = new ForwardedHeadersOptions + { + ForwardedHeaders = configuration.GetFlaggedEnum($"{prefix}:{nameof(ForwardedHeadersOptions)}:{nameof(ForwardedHeadersOptions.ForwardedHeaders)}") + }; + } + + #endregion + + #region IHeaderConfiguration + + public ForwardedHeadersOptions ForwardedHeaders { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.cs new file mode 100644 index 0000000..3b350e1 --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Server.cs @@ -0,0 +1,36 @@ +using GerstITS.Examples.Api.Configurations; +using GerstITS.System.Configurations; +using GerstITS.Web.Api.Builder; +using Microsoft.Extensions.Configuration; + +namespace BakeTronic.Web.Api.Configurations +{ + internal sealed class ServerConfiguration : IServerConfiguration + { + #region Constructors + + public ServerConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + UseHttpsRedirection = configuration.GetValue($"{prefix}:{nameof(UseHttpsRedirection)}"); + UseHsts = configuration.GetValue($"{prefix}:{nameof(UseHsts)}"); + UseCors = configuration.GetValue($"{prefix}:{nameof(UseCors)}"); + + Headers = new WebApiHeadersConfiguration(prefix, configuration); + CorsPolicy = new CorsPolicyConfiguration(prefix, configuration); + } + + #endregion + + #region IServerConfiguration + + public bool UseHttpsRedirection { get; } + public bool UseHsts { get; } + public bool UseCors { get; } + public IHeaderConfiguration Headers { get; } + public ICorsPolicy CorsPolicy { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.License.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.License.cs new file mode 100644 index 0000000..e78963e --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.License.cs @@ -0,0 +1,29 @@ +using System; +using GerstITS.System.Configurations; +using GerstITS.Web.Api.Swagger; +using Microsoft.Extensions.Configuration; + +namespace BakeTronic.Web.Api.Configurations +{ + internal sealed class LicenseConfiguration : ILicense, GerstITS.System.Configurations.IConfiguration + { + #region Constructors + + public LicenseConfiguration(string parentPrefix, Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + + Name = configuration.GetValue($"{prefix}:{nameof(Name)}"); + Url = configuration.GetValue($"{prefix}:{nameof(Url)}"); + } + + #endregion + + #region ILicence + + public string Name { get; } + public Uri Url { get; } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Swagger/Configuration/WebApiConfiguration.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.cs similarity index 52% rename from GerstITS.Examples.Api/Common/Swagger/Configuration/WebApiConfiguration.cs rename to GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.cs index 2662a22..f826c43 100644 --- a/GerstITS.Examples.Api/Common/Swagger/Configuration/WebApiConfiguration.cs +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.Swagger.cs @@ -1,49 +1,46 @@ -using System; +using System; using System.Diagnostics; +using GerstITS.Examples.Api.Configurations; using GerstITS.System.Configurations; using GerstITS.Web.Api.Swagger; +using Microsoft.Extensions.Configuration; -namespace GerstITS.Examples.Api.Swagger +namespace BakeTronic.Web.Api.Configurations { - internal class WebApiConfiguration : ISwaggerConfiguration, IConfiguration + internal sealed class SwaggerConfiguration : ISwaggerConfiguration { #region Constructors - public WebApiConfiguration() + public SwaggerConfiguration(string parentPrefix, + Microsoft.Extensions.Configuration.IConfiguration configuration) { + var prefix = $"{parentPrefix}:{this.ToConfigurationPrefix()}"; + var currentAssembly = typeof(WebApiConfiguration).Assembly; var fileVersionInfo = FileVersionInfo.GetVersionInfo(currentAssembly.Location); - - Company = fileVersionInfo.CompanyName; + Name = fileVersionInfo.ProductName; + Company = fileVersionInfo.CompanyName; + SupportEMail = configuration.GetValue($"{prefix}:{nameof(SupportEMail)}"); + TermsOfService = configuration.GetValue($"{prefix}:{nameof(TermsOfService)}"); + Release = currentAssembly.GetName().Version; - - TermsOfService = new Uri("https://en.wikipedia.org/wiki/Terms_of_service"); - License = new LicenseConfiguration - { - Name = "MIT", - Url = new Uri("https://opensource.org/licenses/MIT") - }; - SupportEMail = "info@examples.net"; - - Security = new SwaggerSecurityConfiguration - { - AllowAnonymous = true - }; + License = new LicenseConfiguration(prefix, configuration); + Security = new OpenApiSecuritySchemeConfiguration(); } #endregion - + #region ISwaggerConfiguration public string Name { get; } public string Company { get; } public string SupportEMail { get; } public Uri TermsOfService { get; } - public ILicense License { get; } public Version Release { get; } - public IOpenApiSecuritySchemeConfiguration Security { get; } - + public ILicense License { get; } + public IOpenApiSecuritySchemeConfiguration Security { get; } + #endregion } } \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.cs b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.cs new file mode 100644 index 0000000..2f31f16 --- /dev/null +++ b/GerstITS.Examples.Api/Common/Configurations/WebApiConfiguration.cs @@ -0,0 +1,35 @@ +using BakeTronic.Web.Api.Configurations; +using GerstITS.Authentication.OpenId; +using GerstITS.Data.EntityFramework; +using GerstITS.System.Configurations; +using GerstITS.Web.Api.Builder; +using GerstITS.Web.Api.Swagger; + +namespace GerstITS.Examples.Api.Configurations +{ + internal sealed class WebApiConfiguration : IConfiguration + { + #region Properties + + public IServerConfiguration Server { get; } + public IOpenIdConfiguration OpenId { get; } + public ISwaggerConfiguration Swagger { get; set; } + public IEntityFrameworkMigrationConfiguration EntityFrameworkMigration { get; set; } + + #endregion + + #region Constructors + + public WebApiConfiguration(Microsoft.Extensions.Configuration.IConfiguration configuration) + { + var prefix = this.ToConfigurationPrefix(); + + EntityFrameworkMigration = new EntityFrameworkMigrationConfiguration(prefix, configuration); + OpenId = new OpenIdConfiguration(prefix, configuration); + Server = new ServerConfiguration(prefix, configuration); + Swagger = new SwaggerConfiguration(prefix, configuration); + } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Swagger/Configuration/LicenseConfiguration.cs b/GerstITS.Examples.Api/Common/Swagger/Configuration/LicenseConfiguration.cs deleted file mode 100644 index 85098f5..0000000 --- a/GerstITS.Examples.Api/Common/Swagger/Configuration/LicenseConfiguration.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using GerstITS.Web.Api.Swagger; - -namespace GerstITS.Examples.Api.Swagger -{ - internal class LicenseConfiguration : ILicense - { - #region Properties - - public string Name { get; set; } - public Uri Url { get; set; } - - #endregion - } -} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Common/Swagger/Configuration/SwaggerSecurityConfiguration.cs b/GerstITS.Examples.Api/Common/Swagger/Configuration/SwaggerSecurityConfiguration.cs deleted file mode 100644 index cbe6b9d..0000000 --- a/GerstITS.Examples.Api/Common/Swagger/Configuration/SwaggerSecurityConfiguration.cs +++ /dev/null @@ -1,19 +0,0 @@ -using GerstITS.Web.Api.Swagger; -using Microsoft.OpenApi.Models; - -namespace GerstITS.Examples.Api.Swagger -{ - internal sealed class SwaggerSecurityConfiguration : IOpenApiSecuritySchemeConfiguration - { - #region Properties - - public bool AllowAnonymous { get; set; } - public string HttpHeaderKey { get; set; } - public string Scheme { get; set; } - public SecuritySchemeType SchemeType { get; set; } - public ParameterLocation ParameterLocation { get; set; } - public string Description { get; set; } - - #endregion - } -} \ No newline at end of file diff --git a/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj b/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj index 083efbc..38fab2c 100644 --- a/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj +++ b/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj @@ -37,27 +37,29 @@ + - - - + + + + - - + + - - + + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj.DotSettings b/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj.DotSettings index b9d2022..527d2d3 100644 --- a/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj.DotSettings +++ b/GerstITS.Examples.Api/GerstITS.Examples.Api.csproj.DotSettings @@ -1,5 +1,6 @@  True + True True True False diff --git a/GerstITS.Examples.Api/Module.Configurations.cs b/GerstITS.Examples.Api/Module.Configurations.cs new file mode 100644 index 0000000..7f7c915 --- /dev/null +++ b/GerstITS.Examples.Api/Module.Configurations.cs @@ -0,0 +1,22 @@ +using GerstITS.Examples.Api.Configurations; +using Microsoft.Extensions.DependencyInjection; + +namespace GerstITS.Examples.Api +{ + public sealed partial class Module + { + #region Methods + + private static void RegisterConfigurations(IServiceCollection container) + { + container.AddSingleton(); + + container.AddSingleton(c => c.GetService().EntityFrameworkMigration); + container.AddSingleton(c => c.GetService().OpenId); + container.AddSingleton(c => c.GetService().Server); + container.AddSingleton(c => c.GetService().Swagger); + } + + #endregion + } +} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Module.Swagger.cs b/GerstITS.Examples.Api/Module.Swagger.cs deleted file mode 100644 index 2e3e444..0000000 --- a/GerstITS.Examples.Api/Module.Swagger.cs +++ /dev/null @@ -1,18 +0,0 @@ -using GerstITS.Examples.Api.Swagger; -using GerstITS.Web.Api.Swagger; -using Microsoft.Extensions.DependencyInjection; - -namespace GerstITS.Examples.Api -{ - public sealed partial class Module - { - #region Methods - - private static void RegisterSwagger(IServiceCollection container) - { - container.AddSingleton(); - } - - #endregion - } -} \ No newline at end of file diff --git a/GerstITS.Examples.Api/Module.cs b/GerstITS.Examples.Api/Module.cs index 0fa9519..f166407 100644 --- a/GerstITS.Examples.Api/Module.cs +++ b/GerstITS.Examples.Api/Module.cs @@ -9,10 +9,10 @@ namespace GerstITS.Examples.Api public void RegisterComponents(IServiceCollection container) { + RegisterConfigurations(container); RegisterExceptionHandling(container); RegisterMvc(container); RegisterStartupTasks(container); - RegisterSwagger(container); } #endregion diff --git a/GerstITS.Examples.Api/appsettings.json b/GerstITS.Examples.Api/appsettings.json index ef1c343..860218a 100644 --- a/GerstITS.Examples.Api/appsettings.json +++ b/GerstITS.Examples.Api/appsettings.json @@ -8,7 +8,64 @@ }, "AllowedHosts": "*", "WebApi": { - "SupportEMail": "support@someone.de" + "Swagger": { + "SupportEMail": "support@baketronic.com", + "TermsOfService": "https://www.baketronic.com/impressum/", + "Licence": { + "Name": "MIT", + "Url": "https://opensource.org/licenses/MIT" + } + }, + "EntityFrameworkmigration": { + "AutoMigrate": true + }, + "Server": { + "UseCors": true, + "CorsPolicy": { + "AllowCredentials": true, + "AllowedHeaders": [ + "*" + ], + "AllowedMethods": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE", + "OPTIONS" + ], + "AllowedOrigins": [ + "https://www.example.com:443", + "https://localhost:4200", + "http://localhost:4200" + ] + }, + "UseHttpsRedirection": true, + "UseHsts": false, + "Headers": { + "ForwardedHeadersOptions": { + "ForwardedHeaders": [ + "XForwardedFor", + "XForwardedProto" + ] + } + } + }, + "OpenId": { + "Authority": "https://openid.example.com/auth/realms/example", + "RequireHttpsMetadata": true, + "SaveToken": true, + "Validate": { + "Issuer": "https://openid.example.com/auth/realms/example", + "Audience": "audience", + "RequiredClaimType": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", + "ValidateLifetime": true, + "RsaPublicKey": "RsaToken" + } + } + }, + "NotifyOvenJob": { + "CronExpression": "*/30 * * * * ? *" }, "SayHelloWorldJob": { "CronExpression": "*/30 * * * * ? *", diff --git a/GerstITS.Examples.Jobs.SayHelloWorld/GerstITS.Examples.Jobs.SayHelloWorld.csproj b/GerstITS.Examples.Jobs.SayHelloWorld/GerstITS.Examples.Jobs.SayHelloWorld.csproj index 87b5fc5..8f8d399 100644 --- a/GerstITS.Examples.Jobs.SayHelloWorld/GerstITS.Examples.Jobs.SayHelloWorld.csproj +++ b/GerstITS.Examples.Jobs.SayHelloWorld/GerstITS.Examples.Jobs.SayHelloWorld.csproj @@ -32,12 +32,12 @@ - - - + + + - + diff --git a/GerstITS.Examples.Logic/GerstITS.Examples.Logic.csproj b/GerstITS.Examples.Logic/GerstITS.Examples.Logic.csproj index b1afcc7..23f106d 100644 --- a/GerstITS.Examples.Logic/GerstITS.Examples.Logic.csproj +++ b/GerstITS.Examples.Logic/GerstITS.Examples.Logic.csproj @@ -34,13 +34,13 @@ - - - + + + - - + + diff --git a/GerstITS.Examples.WebClient.Console/GerstITS.Examples.WebClient.Console.csproj b/GerstITS.Examples.WebClient.Console/GerstITS.Examples.WebClient.Console.csproj index 8af9203..984d54c 100644 --- a/GerstITS.Examples.WebClient.Console/GerstITS.Examples.WebClient.Console.csproj +++ b/GerstITS.Examples.WebClient.Console/GerstITS.Examples.WebClient.Console.csproj @@ -44,9 +44,9 @@ - - - + + + diff --git a/GerstITS.WebClients.Example.Api/GerstITS.Examples.WebClients.Examples.Api.csproj b/GerstITS.WebClients.Example.Api/GerstITS.Examples.WebClients.Examples.Api.csproj index 038b1f9..98977f2 100644 --- a/GerstITS.WebClients.Example.Api/GerstITS.Examples.WebClients.Examples.Api.csproj +++ b/GerstITS.WebClients.Example.Api/GerstITS.Examples.WebClients.Examples.Api.csproj @@ -32,9 +32,9 @@ - - - + + +