implemented /getSaveData route

This commit is contained in:
Timerix 2025-04-06 15:56:19 +05:00
parent da27f84d68
commit daa8305dde
3 changed files with 40 additions and 4 deletions

View File

@ -108,7 +108,9 @@ public static class Program
var router = new SimpleRouter(loggerRoot); var router = new SimpleRouter(loggerRoot);
router.DefaultRoute = new ServeFilesRouteHandler("public"); router.DefaultRoute = new ServeFilesRouteHandler("public");
router.MapRoute("/getSaveStatus", HttpMethod.GET, new GetSaveStatusHandler(_mainCancel.Token)); router.MapRoute("/getSaveStatus", HttpMethod.GET, new GetSaveStatusHandler(_mainCancel.Token));
router.MapRoute("/uploadSave/eu4", HttpMethod.POST, new UploadSaveHandler(_mainCancel.Token, bgJobManager, saveParsingSearchExpressions)); router.MapRoute("/uploadSave/eu4", HttpMethod.POST, new UploadSaveHandler(_mainCancel.Token,
bgJobManager, saveParsingSearchExpressions));
router.MapRoute("/getSaveData", HttpMethod.GET, new GetSaveDataHandler(_mainCancel.Token));
var app = new WebApp(_config.BaseUrl, loggerRoot, router, _mainCancel.Token); var app = new WebApp(_config.BaseUrl, loggerRoot, router, _mainCancel.Token);
app.Run().GetAwaiter().GetResult(); app.Run().GetAwaiter().GetResult();

View File

@ -0,0 +1,33 @@
using System.Net;
using ParadoxSaveParser.WebAPI.HttpHelpers;
namespace ParadoxSaveParser.WebAPI.Routes;
internal class GetSaveDataHandler : RouteHandlerBase
{
public GetSaveDataHandler(CancellationToken cancelAllToken)
: base(cancelAllToken)
{
}
public override async Task<HttpStatusCode> HandleRequest(
HttpListenerContext ctx, ContextLogger requestLogger)
{
var idOrError = RequestHelper.GetQueryValue(ctx, "id");
if (idOrError.HasError)
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken, idOrError.Error!);
string id = idOrError.Value!;
IOPath dataFilePath = PathHelper.GetParsedSaveFilePath(id);
if (!File.Exists(dataFilePath))
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken,
new ErrorMessage(HttpStatusCode.InternalServerError,
$"Save with id {id} not found")
);
await using var dataFile = File.OpenRead(dataFilePath);
return await ReturnHelper.ResponseStream(ctx, requestLogger, _cancelAllToken,
dataFile, contentType: "application/json");
}
}

View File

@ -16,11 +16,12 @@ internal class GetSaveStatusHandler : RouteHandlerBase
var idOrError = RequestHelper.GetQueryValue(ctx, "id"); var idOrError = RequestHelper.GetQueryValue(ctx, "id");
if (idOrError.HasError) if (idOrError.HasError)
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken, idOrError.Error!); return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken, idOrError.Error!);
string id = idOrError.Value!;
if (!Program._saveMetadataStorage.TryGetValue(idOrError.Value!, out var meta)) if (!Program._saveMetadataStorage.TryGetValue(id, out var meta))
return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken, return await ReturnHelper.ResponseError(ctx, requestLogger, _cancelAllToken,
new ErrorMessage(HttpStatusCode.InternalServerError, new ErrorMessage(HttpStatusCode.InternalServerError,
$"Save with id {idOrError.Value} not found") $"Save with id {id} not found")
); );
return await ReturnHelper.ResponseJson(ctx, requestLogger, _cancelAllToken, meta); return await ReturnHelper.ResponseJson(ctx, requestLogger, _cancelAllToken, meta);