diff --git a/ParadoxSaveParser.WebAPI/ParadoxSaveParser.WebAPI.csproj b/ParadoxSaveParser.WebAPI/ParadoxSaveParser.WebAPI.csproj
index c12050e..a278f18 100644
--- a/ParadoxSaveParser.WebAPI/ParadoxSaveParser.WebAPI.csproj
+++ b/ParadoxSaveParser.WebAPI/ParadoxSaveParser.WebAPI.csproj
@@ -13,23 +13,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/ParadoxSaveParser.WebAPI/Program.cs b/ParadoxSaveParser.WebAPI/Program.cs
index 4353c7c..6b70f2f 100644
--- a/ParadoxSaveParser.WebAPI/Program.cs
+++ b/ParadoxSaveParser.WebAPI/Program.cs
@@ -28,7 +28,11 @@ public class Program
{
private static readonly IOPath _configPath = "./config.dtsod";
private static Config _config = new();
- private static readonly ILogger _loggerRoot = new ConsoleLogger();
+
+ private static readonly ILogger _loggerRoot = new CompositeLogger(
+ new ConsoleLogger(),
+ new FileLogger("logs", "ParadoxSaveParser.WebAPI"));
+
private static readonly CancellationTokenSource _mainCancel = new();
private static ConcurrentDictionary _saveMetadataStorage = new();
@@ -44,9 +48,11 @@ public class Program
{
Console.InputEncoding = Encoding.UTF8;
Console.OutputEncoding = Encoding.UTF8;
+ Console.CursorVisible = false;
ContextLogger logger = new ContextLogger(nameof(Main), _loggerRoot);
- Console.CancelKeyPress += (_, _) =>
+ Console.CancelKeyPress += (_, e) =>
{
+ e.Cancel = true;
logger.LogInfo("Ctrl+C Pressed");
_mainCancel.Cancel();
};
@@ -104,7 +110,8 @@ public class Program
throw new Exception("Guid collision!");
}
}
-
+
+ // ReSharper disable once NotAccessedPositionalProperty.Global
public record ErrorMessage(string errorMessage);
private static async TaskReturnResponse(HttpListenerContext ctx, HttpStatusCode statusCode, object response)
@@ -187,7 +194,7 @@ public class Program
new ErrorMessage("Invalid save format: no 'gamestate' file found"));
string extractedGamestatePath = PathHelper.GetSaveFilePath(meta.id) + ".gamestate";
- zipEntry.ExtractToFile(extractedGamestatePath);
+ zipEntry.ExtractToFile(extractedGamestatePath, true);
var gamestateStream = File.OpenRead(extractedGamestatePath);
meta.status = SaveFileProcessingStatus.Parsing;
diff --git a/TODO.txt b/TODO.txt
index 4a8458b..8f0e74f 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,6 +1,3 @@
-DTLib.Web:
- Add elapsed time to response status log message: `responded 200 (OK) in 0.03 s`
-
Main:
Add temporary files deletion