using System.Text.Json; using System.Text.Json.Nodes; using StabilityMatrix.Core.Api; using StabilityMatrix.Core.Models.Api.OpenArt; using StabilityMatrix.Core.Models.Progress; using StabilityMatrix.Core.Services; namespace StabilityMatrix.Core.Models.PackageModification; public class DownloadOpenArtWorkflowStep( IOpenArtApi openArtApi, OpenArtSearchResult workflow, ISettingsManager settingsManager ) : IPackageStep { public async Task ExecuteAsync(IProgress? progress = null) { var workflowData = await openArtApi .DownloadWorkflowAsync(new OpenArtDownloadRequest { WorkflowId = workflow.Id }) .ConfigureAwait(false); var workflowJson = JsonSerializer.SerializeToNode(workflow); Directory.CreateDirectory(settingsManager.WorkflowDirectory); var filePath = Path.Combine(settingsManager.WorkflowDirectory, $"{workflowData.Filename}.json"); var jsonObject = JsonNode.Parse(workflowData.Payload) as JsonObject; jsonObject?.Add("sm_workflow_data", workflowJson); await File.WriteAllTextAsync(filePath, JsonSerializer.Serialize(jsonObject)).ConfigureAwait(false); progress?.Report(new ProgressReport(1f, "Downloaded OpenArt Workflow")); } public string ProgressTitle => "Downloading OpenArt Workflow"; }