GetSystemVersion
parent
8b6aa4878c
commit
3267cc8a0d
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="$(AutoMapperPackageVersion)" />
|
<PackageReference Include="AutoMapper" Version="$(AutoMapperPackageVersion)" />
|
||||||
|
<PackageReference Include="MediatR" Version="$(MediatRPackageVersion)" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(MicrosoftExtensionsPackageVersion)" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(MicrosoftExtensionsPackageVersion)" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsPackageVersion)" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsPackageVersion)" />
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
using MediatR;
|
||||||
|
|
||||||
|
namespace ProxmoxConnector.Server.Application.Queries
|
||||||
|
{
|
||||||
|
public abstract class Query<TResponse> : IRequest<TResponse>, IBaseRequest
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
using MediatR;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProxmoxConnector.Server.Application.Queries.System
|
||||||
|
{
|
||||||
|
public class GetSystemVersion
|
||||||
|
{
|
||||||
|
public class Query : Query<Model>
|
||||||
|
{
|
||||||
|
public Query()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Model
|
||||||
|
{
|
||||||
|
public string Version { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class QueryHandler : IRequestHandler<Query, Model>
|
||||||
|
{
|
||||||
|
public QueryHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<Model> Handle(Query request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var version = GetVersion();
|
||||||
|
var result = new Model { Version = version };
|
||||||
|
return await Task.FromResult(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetVersion() =>
|
||||||
|
Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,10 @@
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using MediatR;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using ProxmoxConnector.Server.Application.Queries.System;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ProxmoxConnector.Server.Controllers
|
namespace ProxmoxConnector.Server.Controllers
|
||||||
{
|
{
|
||||||
|
@ -11,10 +14,12 @@ namespace ProxmoxConnector.Server.Controllers
|
||||||
public class HealthController : ControllerBase
|
public class HealthController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<HealthController> _logger;
|
private readonly ILogger<HealthController> _logger;
|
||||||
|
private readonly IMediator _mediator;
|
||||||
|
|
||||||
public HealthController(ILogger<HealthController> logger)
|
public HealthController(ILogger<HealthController> logger, IMediator mediator)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_mediator = mediator;
|
||||||
}
|
}
|
||||||
|
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
|
@ -22,7 +27,15 @@ namespace ProxmoxConnector.Server.Controllers
|
||||||
public IActionResult Ping()
|
public IActionResult Ping()
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Ping");
|
_logger.LogInformation("Ping");
|
||||||
return Ok($"System datetime: {DateTime.Now}");
|
return Ok($"Ping success. System datetime: {DateTime.Now}");
|
||||||
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpGet("version")]
|
||||||
|
public async Task<IActionResult> GetSystemVersion([FromRoute] GetSystemVersion.Query query)
|
||||||
|
{
|
||||||
|
var result = await _mediator.Send(query);
|
||||||
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<PackageReference Include="NDB.Security.Authentication.Identity" Version="$(NDBSecurityAuthenticationIdentityPackageVersion)" />
|
<PackageReference Include="NDB.Security.Authentication.Identity" Version="$(NDBSecurityAuthenticationIdentityPackageVersion)" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="$(SerilogAspNetCorePackageVersion)" />
|
<PackageReference Include="Serilog.AspNetCore" Version="$(SerilogAspNetCorePackageVersion)" />
|
||||||
<PackageReference Include="Serilog.Sinks.SQLite" Version="$(SerilogSinksSQLitePackageVersion)" />
|
<PackageReference Include="Serilog.Sinks.SQLite" Version="$(SerilogSinksSQLitePackageVersion)" />
|
||||||
|
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="$(MediatRPackageVersion)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
|
using MediatR;
|
||||||
|
using MediatR.Pipeline;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using Microsoft.OpenApi.Models;
|
|
||||||
using NDB.Extensions.Swagger;
|
using NDB.Extensions.Swagger;
|
||||||
using NDB.Extensions.Swagger.Constants;
|
using NDB.Extensions.Swagger.Constants;
|
||||||
using NDB.Infrastructure.DatabaseMigration;
|
using NDB.Infrastructure.DatabaseMigration;
|
||||||
|
@ -14,10 +12,7 @@ using Newtonsoft.Json;
|
||||||
using ProxmoxConnector.Server.Application;
|
using ProxmoxConnector.Server.Application;
|
||||||
using ProxmoxConnector.Server.Domain.Abstractions;
|
using ProxmoxConnector.Server.Domain.Abstractions;
|
||||||
using ProxmoxConnector.Server.Services;
|
using ProxmoxConnector.Server.Services;
|
||||||
using System;
|
using System.Reflection;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace ProxmoxConnector.Server
|
namespace ProxmoxConnector.Server
|
||||||
{
|
{
|
||||||
|
@ -38,6 +33,11 @@ namespace ProxmoxConnector.Server
|
||||||
// Add basic authentication
|
// Add basic authentication
|
||||||
services.AddIdentityAuthentication(_configuration.GetSection("IdentityServer")["BaseAddress"]);
|
services.AddIdentityAuthentication(_configuration.GetSection("IdentityServer")["BaseAddress"]);
|
||||||
|
|
||||||
|
// MediatR
|
||||||
|
services.AddMediatR(GetMediatRAssemblies());
|
||||||
|
services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPreProcessorBehavior<,>));
|
||||||
|
services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>));
|
||||||
|
|
||||||
services.AddHttpContextAccessor();
|
services.AddHttpContextAccessor();
|
||||||
services.AddScoped<IUserService, UserService>();
|
services.AddScoped<IUserService, UserService>();
|
||||||
services.AddSwagger("ProxmoxConnector.Server", AuthorizationType.InhouseIdentity);
|
services.AddSwagger("ProxmoxConnector.Server", AuthorizationType.InhouseIdentity);
|
||||||
|
@ -69,5 +69,11 @@ namespace ProxmoxConnector.Server
|
||||||
|
|
||||||
app.UseMigration();
|
app.UseMigration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Assembly[] GetMediatRAssemblies()
|
||||||
|
{
|
||||||
|
var assembly = typeof(Application.Queries.System.GetSystemVersion).Assembly;
|
||||||
|
return new Assembly[] { assembly };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue