using System; using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; using DysonNetwork.Drive.Models; namespace DysonNetwork.Drive.Interfaces; public interface IFileService { Task GetFileAsync(Guid fileId, CancellationToken cancellationToken = default); Task DownloadFileAsync(Guid fileId, CancellationToken cancellationToken = default); Task UploadFileAsync(Stream fileStream, string fileName, string contentType, IDictionary? metadata = null, CancellationToken cancellationToken = default); Task DeleteFileAsync(Guid fileId, CancellationToken cancellationToken = default); Task UpdateFileMetadataAsync(Guid fileId, IDictionary metadata, CancellationToken cancellationToken = default); Task FileExistsAsync(Guid fileId, CancellationToken cancellationToken = default); Task GetFileUrlAsync(Guid fileId, TimeSpan? expiry = null, CancellationToken cancellationToken = default); Task GetFileThumbnailUrlAsync(Guid fileId, int? width = null, int? height = null, TimeSpan? expiry = null, CancellationToken cancellationToken = default); Task CopyFileAsync(Guid sourceFileId, string? newName = null, IDictionary? newMetadata = null, CancellationToken cancellationToken = default); Task MoveFileAsync(Guid sourceFileId, string? newName = null, IDictionary? newMetadata = null, CancellationToken cancellationToken = default); Task RenameFileAsync(Guid fileId, string newName, CancellationToken cancellationToken = default); Task GetFileSizeAsync(Guid fileId, CancellationToken cancellationToken = default); Task GetFileHashAsync(Guid fileId, CancellationToken cancellationToken = default); Task GetFileThumbnailAsync(Guid fileId, int? width = null, int? height = null, CancellationToken cancellationToken = default); Task SetFileVisibilityAsync(Guid fileId, bool isPublic, CancellationToken cancellationToken = default); }