using AIStudio.Tools.Rust;
namespace AIStudio.Tools.Services;
public sealed partial class RustService
{
///
/// Validates and optionally optimizes a local image in the Rust runtime.
///
///
/// The runtime rejects files whose content does not match their extension, so the returned MIME
/// type always describes the actual bytes.
///
/// The absolute path of a PNG, JPEG, or WebP image.
/// Whether the maximum-edge policy and re-encoding are applied.
/// The cancellation token.
/// The prepared image, dimensions, and stable MIME type.
public async Task PrepareImageAsync(
string path,
bool optimize,
CancellationToken token = default)
{
using var response = await this.http.PostAsJsonAsync("/image/prepare", new { path, optimize }, this.jsonRustSerializerOptions, token);
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions, token)
?? throw new InvalidDataException("The Rust image preparation returned an empty response.");
}
}