47 lines
2.0 KiB
C#
47 lines
2.0 KiB
C#
namespace RobotNet10.MapManager.Services;
|
|
|
|
/// <summary>
|
|
/// Interface for image storage operations (Minio or FileSystem)
|
|
/// </summary>
|
|
public interface IImageStorageService
|
|
{
|
|
/// <summary>
|
|
/// Save image for a layout level
|
|
/// </summary>
|
|
/// <param name="layoutLevelId">Layout level ID</param>
|
|
/// <param name="imageStream">Image stream (PNG format)</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
Task SaveImageAsync(Guid layoutLevelId, Stream imageStream, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Get image for a layout level
|
|
/// </summary>
|
|
/// <param name="layoutLevelId">Layout level ID</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Image stream or null if not found</returns>
|
|
Task<Stream?> GetImageAsync(Guid layoutLevelId, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Delete image for a layout level
|
|
/// </summary>
|
|
/// <param name="layoutLevelId">Layout level ID</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
Task<bool> DeleteImageAsync(Guid layoutLevelId, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Check if image exists for a layout level
|
|
/// </summary>
|
|
/// <param name="layoutLevelId">Layout level ID</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
Task<bool> ImageExistsAsync(Guid layoutLevelId, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Extract image dimensions from stream
|
|
/// </summary>
|
|
/// <param name="imageStream">Image stream (PNG format)</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Tuple of (width, height) in pixels</returns>
|
|
Task<(int width, int height)> GetImageDimensionsAsync(Stream imageStream, CancellationToken cancellationToken = default);
|
|
}
|
|
|