SaveDataFilter

This commit is contained in:
2025-04-10 15:42:39 +05:00
parent 95c0403362
commit d5b6061cc7
8 changed files with 101 additions and 28 deletions
@@ -18,6 +18,15 @@ internal class GetSaveDataHandler : RouteHandlerBase
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken, idOrError.Error!);
string id = idOrError.Value!;
if(!Program._saveMetadataStorage.TryGetValue(id, out var meta))
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken,
new ErrorMessage(HttpStatusCode.NotFound,
$"Save with id {id} not found"));
if(meta.status != SaveFileProcessingStatus.Done)
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken,
new ErrorMessage(HttpStatusCode.BadRequest,
$"Save with id {id} has status {meta.status}"));
IOPath dataFilePath = PathHelper.GetParsedSaveFilePath(id);
if (!File.Exists(dataFilePath))
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken,
@@ -2,22 +2,23 @@
using System.Net;
using ParadoxSaveParser.WebAPI.BackgroundTasks;
using ParadoxSaveParser.WebAPI.HttpHelpers;
using ParadoxSaveParser.WebAPI.SaveDataFilters;
namespace ParadoxSaveParser.WebAPI.Routes;
public class UploadSaveHandler : RouteHandlerBase
{
private readonly BackgroundJobManager _bgJobManager;
private readonly Dictionary<Game, ISearchExpression> _searchQueries;
private readonly Dictionary<Game, ISaveDataFilter> _saveFilters;
public UploadSaveHandler(
CancellationToken cancelAllToken,
BackgroundJobManager bgJobManager,
Dictionary<Game, ISearchExpression> searchQueries)
Dictionary<Game, ISaveDataFilter> saveFilters)
: base(cancelAllToken)
{
_bgJobManager = bgJobManager;
_searchQueries = searchQueries;
_saveFilters = saveFilters;
}
public override async Task<HttpStatusCode> HandleRequest(
@@ -53,7 +54,7 @@ public class UploadSaveHandler : RouteHandlerBase
await remoteStream.CopyToAsync(saveFile, _cancelAllToken);
meta.status = SaveFileProcessingStatus.Uploaded;
_bgJobManager.StartNewParsingOperation(meta, _searchQueries[meta.game], _cancelAllToken);
_bgJobManager.StartNewParsingOperation(meta, _saveFilters[meta.game], _cancelAllToken);
dynamic responseData = new { saveId };
return await ReturnHelper.ResponseJson(ctx, requestLogger, _cancelAllToken, responseData);
}