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 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"); } }