diff --git a/src/ApiCommons.Tests/ApiCommons.Tests.csproj b/src/ApiCommons.Tests/ApiCommons.Tests.csproj index c383a1d0bc5a7d221970e9c0d695dcd64f97a344..d55a11f2c35376f1536239bfd40eb7a9d2d9c909 100644 --- a/src/ApiCommons.Tests/ApiCommons.Tests.csproj +++ b/src/ApiCommons.Tests/ApiCommons.Tests.csproj @@ -43,8 +43,8 @@ <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.17.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.17.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.19.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.19.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> <Reference Include="Coscine.Logging, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e1ed402bc3f6525e, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Logging.1.1.0\lib\net461\Coscine.Logging.dll</HintPath> diff --git a/src/ApiCommons.Tests/packages.config b/src/ApiCommons.Tests/packages.config index 76af34611d6df667eb6b32651133310393b3dcab..44c550e9fcb6a07bde6b71f81076eb46106ae0ab 100644 --- a/src/ApiCommons.Tests/packages.config +++ b/src/ApiCommons.Tests/packages.config @@ -2,7 +2,7 @@ <packages> <package id="Consul" version="0.7.2.6" targetFramework="net461" /> <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="Coscine.Database" version="1.17.0" targetFramework="net461" /> + <package id="Coscine.Database" version="1.19.0" targetFramework="net461" /> <package id="Coscine.Logging" version="1.1.0" targetFramework="net461" /> <package id="EntityFramework" version="6.2.0" targetFramework="net461" /> <package id="linq2db" version="2.6.4" targetFramework="net461" /> diff --git a/src/ApiCommons/AbstractDefaultStartup.cs b/src/ApiCommons/AbstractDefaultStartup.cs new file mode 100644 index 0000000000000000000000000000000000000000..d2ccb8636f7c87a3e76f052f68fba972ffc61848 --- /dev/null +++ b/src/ApiCommons/AbstractDefaultStartup.cs @@ -0,0 +1,92 @@ +using Coscine.ApiCommons.Middleware; +using Coscine.ApiCommons.Utils; +using Coscine.Configuration; +using Coscine.Database.Settings; +using LinqToDB.Data; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; + +namespace Coscine.ApiCommons +{ + public abstract class AbstractDefaultStartup + { + private string _basePath; + private IConfiguration _configuration { get; set; } + + internal IConfiguration GetConfiguration() + { + return _configuration; + } + + public virtual void SetBasePath(ApplicationInformation applicationInformation) + { + _basePath = $"/{applicationInformation.PathPrefix}"; + _configuration = new ConsulConfiguration(); + } + + public virtual void ConfigureServicesExtension(IServiceCollection services) + { + + } + + public virtual void ConfigureServicesExtensionLate(IServiceCollection services) + { + + } + + public virtual void ConfigureServices(IServiceCollection services) + { + ConfigureServicesExtension(services); + + services.AddMvc(); + + ConfigureServicesExtensionLate(services); + } + + public virtual void ConfigureExtension(IApplicationBuilder app, IHostingEnvironment env) + { + + } + + public virtual void ConfigureExtensionLate(IApplicationBuilder app, IHostingEnvironment env) + { + + } + + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + ConfigureExtension(app, env); + + app.UseDeveloperExceptionPage(); + + app.UseMiddleware<LoggingMiddleware>(); + app.UseCors(builder => builder + .AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader() + .AllowCredentials()); + + app.UseAuthentication(); + + app.UsePathBase(_basePath); + app.UseMvc(); + + app.UseStatusCodePages(async context => + { + context.HttpContext.Response.ContentType = "text/plain"; + + await context.HttpContext.Response.WriteAsync( + "Status code page, status code: " + + context.HttpContext.Response.StatusCode); + }); + + DataConnection.DefaultSettings = new CoscineSettings(_configuration); + + ConfigureExtensionLate(app, env); + } + } +} diff --git a/src/ApiCommons/AbstractProgram.cs b/src/ApiCommons/AbstractProgram.cs index 1f509b9da0feb692a9ba8b38298731c6799438e8..faf3c9c506293960c5bd058f925763a33bcac52b 100644 --- a/src/ApiCommons/AbstractProgram.cs +++ b/src/ApiCommons/AbstractProgram.cs @@ -14,7 +14,7 @@ namespace Coscine.ApiCommons { public static IConfiguration Configuration = new T(); - public static void InitializeWebService<ST>() where ST : AbstractStartup, new() + public static void InitializeWebService<ST>() where ST : AbstractDefaultStartup, new() { var configurator = new Configurator(Configuration); configurator.Register(); diff --git a/src/ApiCommons/AbstractStartup.cs b/src/ApiCommons/AbstractStartup.cs index 1c0dd1e8ccdda19bf453de37b899b57b27f882ce..d5e5ceb253efd54f8266ac0d96ecabbffd1d5fa8 100644 --- a/src/ApiCommons/AbstractStartup.cs +++ b/src/ApiCommons/AbstractStartup.cs @@ -1,47 +1,29 @@ -using Coscine.ApiCommons.Middleware; -using Coscine.ApiCommons.Utils; -using Coscine.Configuration; -using Coscine.Database.Settings; -using LinqToDB.Data; +using Coscine.ApiCommons.Utils; using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Tokens; namespace Coscine.ApiCommons { - public abstract class AbstractStartup + /// <summary> + /// This Startup applies the JWT token authentification additionally. + /// </summary> + public abstract class AbstractStartup : AbstractDefaultStartup { - private string _basePath; - private IConfiguration _configuration; private JWTHandler _jWTHandler; - public void SetBasePath(ApplicationInformation applicationInformation) + public override void SetBasePath(ApplicationInformation applicationInformation) { - _basePath = $"/{applicationInformation.PathPrefix}"; - _configuration = new ConsulConfiguration(); - _jWTHandler = new JWTHandler(_configuration); + base.SetBasePath(applicationInformation); + _jWTHandler = new JWTHandler(GetConfiguration()); } - public virtual void ConfigureServicesExtension(IServiceCollection services) - { - - } - - public virtual void ConfigureServicesExtensionLate(IServiceCollection services) - { - - } - - public void ConfigureServices(IServiceCollection services) + public override void ConfigureServices(IServiceCollection services) { ConfigureServicesExtension(services); services.AddMvc(); - var key = _jWTHandler.GetSecurityKey(); services.AddAuthentication(x => { @@ -64,46 +46,5 @@ namespace Coscine.ApiCommons ConfigureServicesExtensionLate(services); } - public virtual void ConfigureExtension(IApplicationBuilder app, IHostingEnvironment env) - { - - } - - public virtual void ConfigureExtensionLate(IApplicationBuilder app, IHostingEnvironment env) - { - - } - - public void Configure(IApplicationBuilder app, IHostingEnvironment env) - { - ConfigureExtension(app, env); - - app.UseDeveloperExceptionPage(); - - app.UseMiddleware<LoggingMiddleware>(); - app.UseCors(builder => builder - .AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader() - .AllowCredentials()); - - app.UseAuthentication(); - - app.UsePathBase(_basePath); - app.UseMvc(); - - app.UseStatusCodePages(async context => - { - context.HttpContext.Response.ContentType = "text/plain"; - - await context.HttpContext.Response.WriteAsync( - "Status code page, status code: " + - context.HttpContext.Response.StatusCode); - }); - - DataConnection.DefaultSettings = new CoscineSettings(_configuration); - - ConfigureExtensionLate(app, env); - } } } diff --git a/src/ApiCommons/ApiCommons.csproj b/src/ApiCommons/ApiCommons.csproj index 0659d1208c54f3e19be479d1faf7732943fc27e0..0e3831e111082b7aecb873b2287046f780c4dbd9 100644 --- a/src/ApiCommons/ApiCommons.csproj +++ b/src/ApiCommons/ApiCommons.csproj @@ -51,8 +51,8 @@ <Reference Include="Coscine.Configuration, Version=1.5.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.5.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.17.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.17.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.19.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.19.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> <Reference Include="Coscine.Logging, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e1ed402bc3f6525e, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Logging.1.1.0\lib\net461\Coscine.Logging.dll</HintPath> @@ -378,6 +378,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="AbstractStartup.cs" /> <Compile Include="ApplicationInformation.cs" /> <Compile Include="Authenticator.cs" /> <Compile Include="Configurator.cs" /> @@ -386,7 +387,7 @@ <Compile Include="Factories\ObjectFactory.cs" /> <Compile Include="AbstractProgram.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="AbstractStartup.cs" /> + <Compile Include="AbstractDefaultStartup.cs" /> <Compile Include="Utils\JWTHandler.cs" /> <Compile Include="Middleware\LoggingMiddleware.cs" /> </ItemGroup> diff --git a/src/ApiCommons/packages.config b/src/ApiCommons/packages.config index bce5293c56bd179d972ba6c0c6490c4ee4eada54..023ff22def33c0879fe0c46b166b36cb16f6f969 100644 --- a/src/ApiCommons/packages.config +++ b/src/ApiCommons/packages.config @@ -2,7 +2,7 @@ <packages> <package id="Consul" version="0.7.2.6" targetFramework="net472" /> <package id="Coscine.Configuration" version="1.5.0" targetFramework="net461" /> - <package id="Coscine.Database" version="1.17.0" targetFramework="net461" /> + <package id="Coscine.Database" version="1.19.0" targetFramework="net461" /> <package id="Coscine.Logging" version="1.1.0" targetFramework="net461" /> <package id="EntityFramework" version="6.2.0" targetFramework="net472" /> <package id="linq2db" version="2.6.4" targetFramework="net472" />