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