diff --git a/Watcher/Program.cs b/Watcher/Program.cs index 60e3133..466d1f1 100644 --- a/Watcher/Program.cs +++ b/Watcher/Program.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.EntityFrameworkCore; +using Microsoft.OpenApi.Models; using Serilog; @@ -36,11 +37,17 @@ builder.Services.AddHttpContextAccessor(); // Storage Singleton builder.Services.AddSingleton(); +builder.Services.AddSingleton(); // Background Services builder.Services.AddHostedService(); builder.Services.AddHostedService(); +// Swagger API-Dokumentation +builder.Services.AddSwaggerGen(options => +{ + options.SwaggerDoc("v1", new OpenApiInfo { Title = "Watcher-Server API", Version = "v1" }); +}); // ---------- Konfiguration ---------- DotNetEnv.Env.Load(); @@ -204,22 +211,30 @@ using (var scope = app.Services.CreateScope()) if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } - app.UseHttpsRedirection(); +app.UseStaticFiles(); + app.UseRouting(); +// 🔹 Swagger aktivieren +app.UseSwagger(); +app.UseSwaggerUI(options => +{ + options.SwaggerEndpoint("/swagger/v1/swagger.json", "Watcher-Server API v1"); + options.RoutePrefix = "api/v1/swagger"; +}); + +// 🔹 Authentifizierung & Autorisierung app.UseAuthentication(); app.UseAuthorization(); -app.UseStaticFiles(); - +// 🔹 MVC-Routing app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}" - ); +); -app.Run(); \ No newline at end of file +app.Run(); diff --git a/Watcher/Services/ISystemStore.cs b/Watcher/Services/ISystemStore.cs new file mode 100644 index 0000000..1ee6d22 --- /dev/null +++ b/Watcher/Services/ISystemStore.cs @@ -0,0 +1,9 @@ +namespace Watcher.Services; + +public interface ISystemStore +{ + Boolean NewVersionAvailable { get; set; } + + Double DatabaseSize { get; set; } + +} \ No newline at end of file diff --git a/Watcher/Services/SystemMangement.cs b/Watcher/Services/SystemMangement.cs new file mode 100644 index 0000000..efd8dcc --- /dev/null +++ b/Watcher/Services/SystemMangement.cs @@ -0,0 +1,42 @@ +using System.Net.Http; + +namespace Watcher.Services; + +public class SystemManagement : BackgroundService +{ + private readonly ILogger _logger; + + private ISystemStore _SystemStore; + + public SystemManagement(ILogger logger, ISystemStore SystemStore) + { + _logger = logger; + _SystemStore = SystemStore; + + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + // Todo: Umstellen auf einmal alle 24h + var timer = new PeriodicTimer(TimeSpan.FromSeconds(30)); + + while (await timer.WaitForNextTickAsync(stoppingToken)) + { + // Hintergrundprozess abwarten + await checkForNewDockerImageVersion(); + + // 5 Sekdunden Offset + await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken); + } + } + + public Task checkForNewDockerImageVersion() + { + return Task.CompletedTask; + } + + public Task createDailySqliteBackup() + { + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/Watcher/Services/SystemStore.cs b/Watcher/Services/SystemStore.cs new file mode 100644 index 0000000..34fce64 --- /dev/null +++ b/Watcher/Services/SystemStore.cs @@ -0,0 +1,9 @@ +namespace Watcher.Services; + +public class SystemStore: ISystemStore +{ + public Boolean NewVersionAvailable { get; set; } + + public Double DatabaseSize { get; set; } + +} \ No newline at end of file diff --git a/Watcher/Watcher.csproj b/Watcher/Watcher.csproj index 7eb3182..4ec814e 100644 --- a/Watcher/Watcher.csproj +++ b/Watcher/Watcher.csproj @@ -23,6 +23,7 @@ +