From b0c537fef874ddae31dcffce345da0cd2a0d1b2e Mon Sep 17 00:00:00 2001 From: Christian Kauer Date: Thu, 28 Dec 2023 14:29:21 +0100 Subject: [PATCH] dev --- GameData.UnitTests/UnitTest1.cs | 2 +- GameData/GameData.csproj | 1 + GameData/Repository/ExpenseRepository.cs | 11 +++- GameModel/Settings/AppSettings.cs | 2 +- KoogleCli/KoogleCli.csproj | 6 +- KoogleCli/Program.cs | 78 +++++++++++++++--------- KoogleCli/appsettings.json | 2 +- 7 files changed, 68 insertions(+), 34 deletions(-) diff --git a/GameData.UnitTests/UnitTest1.cs b/GameData.UnitTests/UnitTest1.cs index 19e71d1..edc82e8 100644 --- a/GameData.UnitTests/UnitTest1.cs +++ b/GameData.UnitTests/UnitTest1.cs @@ -14,7 +14,7 @@ namespace GameData.UnitTests [Test] public void Test1() { - var client = new ExpenseRepository(); + var client = new ExpenseRepository(null); var test = client.GetAll(); } } diff --git a/GameData/GameData.csproj b/GameData/GameData.csproj index 8d810f8..ac88806 100644 --- a/GameData/GameData.csproj +++ b/GameData/GameData.csproj @@ -8,6 +8,7 @@ + diff --git a/GameData/Repository/ExpenseRepository.cs b/GameData/Repository/ExpenseRepository.cs index 4049940..41c0e5f 100644 --- a/GameData/Repository/ExpenseRepository.cs +++ b/GameData/Repository/ExpenseRepository.cs @@ -1,5 +1,7 @@ using GameModel; using GameModel.Contract; +using GameModel.Settings; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; @@ -10,13 +12,18 @@ namespace GameData.Repository { public class ExpenseRepository : IExpenseRepository { + readonly ILogger _log; private ApiClient _client; - + private AppSettings _appSettings; string Url => "items/expense"; - public ExpenseRepository() + public ExpenseRepository(ILogger log, AppSettings appSettings) { + _appSettings = appSettings; + _log = log; _client = new ApiClient(); + + _log?.LogWarning("TESTWARN"); } public IEnumerable GetAll() diff --git a/GameModel/Settings/AppSettings.cs b/GameModel/Settings/AppSettings.cs index e033ce6..6e2b24f 100644 --- a/GameModel/Settings/AppSettings.cs +++ b/GameModel/Settings/AppSettings.cs @@ -8,6 +8,6 @@ namespace GameModel.Settings { public class AppSettings { - public string Test { get; set; } + public string ApiToken { get; set; } } } diff --git a/KoogleCli/KoogleCli.csproj b/KoogleCli/KoogleCli.csproj index 8255d0c..57f0999 100644 --- a/KoogleCli/KoogleCli.csproj +++ b/KoogleCli/KoogleCli.csproj @@ -18,11 +18,15 @@ + - + + + + diff --git a/KoogleCli/Program.cs b/KoogleCli/Program.cs index 1a2d38c..4589338 100644 --- a/KoogleCli/Program.cs +++ b/KoogleCli/Program.cs @@ -1,5 +1,7 @@ // See https://aka.ms/new-console-template for more information using Autofac; +using Autofac.Core; +using AutofacSerilogIntegration; using CommandLine; using GameData; using GameData.Repository; @@ -13,7 +15,8 @@ using GameModel.Settings; using KoogleCli.Model; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Serilog; using Spectre.Console; using Spectre.Console.Json; using static System.Runtime.InteropServices.JavaScript.JSType; @@ -28,9 +31,12 @@ AnsiConsole.MarkupLine("Welcome to [green]koogle[/]"); var container = Register(); -var serviceCollection = new ServiceCollection(); +//var serviceCollection = new ServiceCollection(); //serviceCollection.AddLogging(); +var loggerFactory = container.Resolve(); +loggerFactory.AddSerilog(); + var scope = container.BeginLifetimeScope(RootLifetimeTag, b => { @@ -40,37 +46,18 @@ var scope = container.BeginLifetimeScope(RootLifetimeTag, b => Autofac.IContainer Register() { - - var configurationBuilder = new ConfigurationBuilder() - .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - //.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true) - //.AddEnvironmentVariables() - //.AddCommandLine(args); - ; - - // Add your custom configuration provider here if needed - // .Add(new CustomConfigurationSource()); - - IConfiguration configuration = configurationBuilder.Build(); - - - - var someSettings = configuration.GetSection(typeof(AppSettings).Name).Get(); - - var builder = new ContainerBuilder(); - builder.RegisterInstance(someSettings); + + //builder.Populate(serviceCollection); + RegisterAppsettings(builder); + + RegisterLogging(builder); + builder.RegisterType().As(); return builder.Build(); } - -var test = container.Resolve(); -Console.WriteLine( test.Test); -Console.ReadLine(); - ShowMainMenu(); void ShowMainMenu() { @@ -135,7 +122,7 @@ void NewGameAction() void StartGameAction(string gameName) { - _gs = new GameService(); + _gs = new GameService(container); var bs = _gs.Start(new[] { 1,2,3,4}, GetGameSettings(gameName), gameName ); @@ -335,4 +322,39 @@ static void GetRow(int row, out Text text1, out Text text2, out Text text3, out //pacCol3 = new Padder(text3); //.PadLeft(16).PadBottom(0).PadTop(0); //padCol4 = new Padder(text4); //.PadLeft(16).PadBottom(0).PadTop(0); //padCol5 = new Padder(text5); //.PadLeft(16).PadBottom(0).PadTop(0); +} + +static void RegisterAppsettings(ContainerBuilder builder) +{ + var configurationBuilder = new ConfigurationBuilder() + .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + //.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true) + //.AddEnvironmentVariables() + //.AddCommandLine(args); + ; + + // Add your custom configuration provider here if needed + // .Add(new CustomConfigurationSource()); + + IConfiguration configuration = configurationBuilder.Build(); + var someSettings = configuration.GetSection(typeof(AppSettings).Name).Get(); + builder.RegisterInstance(someSettings); +} + +static void RegisterLogging(ContainerBuilder builder) +{ + string basedir = AppDomain.CurrentDomain.BaseDirectory; + + // create root logger + Log.Logger = new LoggerConfiguration() + .WriteTo.File(basedir + "/Logs/log-.txt", rollingInterval: RollingInterval.Day) + .CreateLogger(); + + // https://stackoverflow.com/questions/41414796/how-to-get-microsoft-extensions-loggingt-in-console-application-using-serilog + builder.RegisterInstance(new LoggerFactory()) + .As(); + builder.RegisterGeneric(typeof(Logger<>)) + .As(typeof(ILogger<>)) + .SingleInstance(); } \ No newline at end of file diff --git a/KoogleCli/appsettings.json b/KoogleCli/appsettings.json index 7700910..e2eb482 100644 --- a/KoogleCli/appsettings.json +++ b/KoogleCli/appsettings.json @@ -1,5 +1,5 @@ { "AppSettings": { - "Test": "value" + "ApiToken": "LT9iPa1EuaaRB0h2VL45fVPLLK7Rt0wb" } }