diff --git a/Moonlight.ApiServer/Moonlight.ApiServer.csproj b/Moonlight.ApiServer/Moonlight.ApiServer.csproj
index 329d8602..41c8799c 100644
--- a/Moonlight.ApiServer/Moonlight.ApiServer.csproj
+++ b/Moonlight.ApiServer/Moonlight.ApiServer.csproj
@@ -24,7 +24,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/Moonlight.ApiServer/Startup.cs b/Moonlight.ApiServer/Startup.cs
index 177c3291..3c63e59d 100644
--- a/Moonlight.ApiServer/Startup.cs
+++ b/Moonlight.ApiServer/Startup.cs
@@ -6,23 +6,20 @@ using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using MoonCore.Configuration;
+using MoonCore.EnvConfiguration;
using MoonCore.Extended.Abstractions;
using MoonCore.Extended.Extensions;
using MoonCore.Extended.Helpers;
using MoonCore.Extended.JwtInvalidation;
using MoonCore.Extensions;
using MoonCore.Helpers;
-using MoonCore.PluginFramework.Extensions;
-using MoonCore.Plugins;
using MoonCore.Services;
using Moonlight.ApiServer.Configuration;
using Moonlight.ApiServer.Database.Entities;
using Moonlight.ApiServer.Helpers;
-using Moonlight.ApiServer.Interfaces.OAuth2;
using Moonlight.ApiServer.Interfaces.Startup;
using Moonlight.ApiServer.Models;
using Moonlight.ApiServer.Services;
-using Moonlight.Client.Services;
namespace Moonlight.ApiServer;
@@ -42,8 +39,7 @@ public class Startup
// Configuration
private AppConfiguration Configuration;
- private ConfigurationService ConfigurationService;
- private ConfigurationOptions ConfigurationOptions;
+ private IConfigurationRoot ConfigurationRoot;
// WebApplication Stuff
private WebApplication WebApplication;
@@ -80,7 +76,6 @@ public class Startup
await RegisterBase();
await RegisterDatabase();
await RegisterAuth();
- await RegisterCaching();
await HookPluginBuild();
await RegisterPluginAssets();
@@ -121,7 +116,6 @@ public class Startup
private Task CreateStorage()
{
Directory.CreateDirectory("storage");
- Directory.CreateDirectory(PathBuilder.Dir("storage", "logs"));
Directory.CreateDirectory(PathBuilder.Dir("storage", "plugins"));
return Task.CompletedTask;
@@ -374,43 +368,32 @@ public class Startup
#region Configurations
- private Task SetupAppConfiguration()
+ private async Task SetupAppConfiguration()
{
- ConfigurationService = new ConfigurationService();
+ // Configure configuration (wow)
+ var configurationBuilder = new ConfigurationBuilder();
+
+ // Ensure configuration file exists
+ var jsonFilePath = PathBuilder.File(Directory.GetCurrentDirectory(), "storage", "app.json");
- // Setup options
- ConfigurationOptions = new ConfigurationOptions();
+ if (!File.Exists(jsonFilePath))
+ await File.WriteAllTextAsync(jsonFilePath, JsonSerializer.Serialize(new AppConfiguration()));
- ConfigurationOptions.AddConfiguration("app");
- ConfigurationOptions.Path = PathBuilder.Dir("storage");
- ConfigurationOptions.EnvironmentPrefix = "MOONLIGHT";
-
- // Create minimal logger
- var loggerFactory = new LoggerFactory();
-
- loggerFactory.AddMoonCore(configuration =>
- {
- configuration.Console.Enable = true;
- configuration.Console.EnableAnsiMode = true;
- configuration.FileLogging.Enable = false;
- });
-
- var logger = loggerFactory.CreateLogger();
-
- // Retrieve configuration
- Configuration = ConfigurationService.GetConfiguration(
- ConfigurationOptions,
- logger
+ configurationBuilder.AddJsonFile(
+ jsonFilePath
);
- return Task.CompletedTask;
+ configurationBuilder.AddEnvironmentVariables(prefix: "MOONLIGHT_", separator: "_");
+
+ ConfigurationRoot = configurationBuilder.Build();
+
+ // Retrieve configuration
+ Configuration = ConfigurationRoot.Get()!;
}
private Task RegisterAppConfiguration()
{
- ConfigurationService.RegisterInDi(ConfigurationOptions, WebApplicationBuilder.Services);
- WebApplicationBuilder.Services.AddSingleton(ConfigurationService);
-
+ WebApplicationBuilder.Services.AddSingleton(Configuration);
return Task.CompletedTask;
}
@@ -497,13 +480,15 @@ public class Startup
#region Database
- private async Task RegisterDatabase()
+ private Task RegisterDatabase()
{
WebApplicationBuilder.Services.AddDatabaseMappings();
WebApplicationBuilder.Services.AddServiceCollectionAccessor();
WebApplicationBuilder.Services.AddScoped(typeof(DatabaseRepository<>));
WebApplicationBuilder.Services.AddScoped(typeof(CrudHelper<,>));
+
+ return Task.CompletedTask;
}
private async Task PrepareDatabase()
@@ -572,14 +557,4 @@ public class Startup
}
#endregion
-
- #region Caching
-
- private Task RegisterCaching()
- {
- WebApplicationBuilder.Services.AddMemoryCache();
- return Task.CompletedTask;
- }
-
- #endregion
}
\ No newline at end of file
diff --git a/Moonlight.Client/Moonlight.Client.csproj b/Moonlight.Client/Moonlight.Client.csproj
index dea6d9b3..aab9339e 100644
--- a/Moonlight.Client/Moonlight.Client.csproj
+++ b/Moonlight.Client/Moonlight.Client.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/Moonlight.Client/Startup.cs b/Moonlight.Client/Startup.cs
index b83d19c1..5c8cb94a 100644
--- a/Moonlight.Client/Startup.cs
+++ b/Moonlight.Client/Startup.cs
@@ -9,8 +9,6 @@ using MoonCore.Blazor.Tailwind.Extensions;
using MoonCore.Blazor.Tailwind.Auth;
using MoonCore.Extensions;
using MoonCore.Helpers;
-using MoonCore.Plugins;
-using Moonlight.Client.Implementations;
using Moonlight.Client.Interfaces;
using Moonlight.Client.Services;
using Moonlight.Shared.Misc;