updated to accept only .tar.zstd uploads
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Text.Json.Serialization;
|
||||
using ParadoxSaveParser.WebAPI.Database;
|
||||
@@ -14,6 +12,7 @@ public class SaveParsingOperation
|
||||
|
||||
private readonly SaveFileMetadata _meta;
|
||||
private readonly ISaveDataFilter _filter;
|
||||
private readonly long _maxGameDataBytes;
|
||||
private readonly ContextLogger _logger;
|
||||
private readonly CancellationToken _ct;
|
||||
|
||||
@@ -26,11 +25,12 @@ public class SaveParsingOperation
|
||||
};
|
||||
|
||||
public SaveParsingOperation(long operationId, SaveFileMetadata meta, ISaveDataFilter filter,
|
||||
ContextLogger logger, CancellationToken ct)
|
||||
long maxGameDataBytes, ContextLogger logger, CancellationToken ct)
|
||||
{
|
||||
OperationId = operationId;
|
||||
_meta = meta;
|
||||
_filter = filter;
|
||||
_maxGameDataBytes = maxGameDataBytes;
|
||||
_logger = logger;
|
||||
_ct = ct;
|
||||
}
|
||||
@@ -76,17 +76,10 @@ public class SaveParsingOperation
|
||||
Dictionary<string, object> parsedData;
|
||||
await using (var gamestateStream = PathHelper.CreateTempFile())
|
||||
{
|
||||
// TODO: ckeck if it is zip archive or plain text like in Search.cs
|
||||
using (var zipArchive = ZipFile.Open(_meta.GetSaveFilePath().Str, ZipArchiveMode.Read))
|
||||
{
|
||||
var zipEntry = zipArchive.Entries.FirstOrDefault(e => e.Name == "gamestate");
|
||||
if (zipEntry is null)
|
||||
throw new Exception("Invalid save format: no 'gamestate' file found");
|
||||
await SaveArchive.ExtractGameData(_meta.GetSaveFilePath(), _meta.game, gamestateStream,
|
||||
_maxGameDataBytes, _ct);
|
||||
gamestateStream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
await zipEntry.Open().CopyToAsync(gamestateStream, _ct);
|
||||
gamestateStream.Seek(0, SeekOrigin.Begin);
|
||||
}
|
||||
|
||||
await Program.DB.UpdateMetadataStatus(_meta, SaveFileProcessingStatus.Parsing);
|
||||
var parser = new SaveParserEU4(gamestateStream, _filter.SearchExpression);
|
||||
parsedData = parser.Parse();
|
||||
|
||||
Reference in New Issue
Block a user