public async Task <FileInfo> Handle(PresetFileRequest request, CancellationToken cancellationToken) { var preset = new WingmanPreset() { Mods = request.Mods, ModParameters = request.TemplateInputs, Version = request.Version ?? 1, EngineVersion = _engineInfo.GetEngineVersion() }; var tempFile = Path.GetTempFileName(); var opts = new JsonSerializerOptions(_parser.Options) { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, IgnoreNullValues = true }; var json = JsonSerializer.Serialize(preset, opts); await File.WriteAllTextAsync(tempFile, json, Encoding.ASCII, cancellationToken); var name = request.PresetName ?? $"preset-{System.DateTime.UtcNow.Ticks}"; var finalTarget = Path.Combine(Path.GetTempPath(), $"{Path.ChangeExtension(name, ".dtp")}"); var fi = new FileInfo(finalTarget); File.Move(tempFile, fi.FullName); return(fi); }
public static bool IsSupportedBy(this WingmanPreset preset, IEngineInfoProvider engineInfo) { var presetRequested = preset.EngineVersion; var engineVersion = engineInfo.GetEngineVersion(); if (!string.IsNullOrWhiteSpace(presetRequested) && !string.IsNullOrWhiteSpace(engineVersion)) { if (Version.TryParse(engineVersion, true, out var engineVersionInfo) && Version.TryParse(presetRequested, true, out var presetVersionInfo)) { var supported = engineVersionInfo == Version.Parse("0.0.0") || engineVersionInfo >= presetVersionInfo; return(supported); } return(false); } return(true); }