You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.3 KiB
36 lines
1.3 KiB
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<ProgressReport>? 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"; |
|
}
|
|
|