using Piwigo.Client.Contract;
namespace Piwigo.Client;
public interface IImageApi
{
///
/// Adds an image to piwigo after all parts have been uploaded.
///
/// The metadata of the uploaded image
///
///
///
/// Information about the uploaded image
/// Ensure that you called for every chunk of the image.
Task AddAsync(ImageUpload imageUpload, CancellationToken cancellationToken = default);
///
/// Updates an image to piwigo after all parts have been uploaded.
///
/// The image id to update
/// The metadata of the uploaded image
///
///
///
/// Information about the uploaded image
/// Ensure that you called for every chunk of the image.
Task UpdateAsync(int imageId, ImageUpload imageUpload, CancellationToken cancellationToken = default);
///
/// Adds a comment to the given image.
///
/// The id of the image
/// The author
/// The content
///
/// The key to post: The key can read from and
///
///
///
///
/// The id of the new comment
Task AddCommentAsync(int imageId, string? author, string content, string key, CancellationToken cancellationToken = default);
///
/// Adds a chunk of an image to piwigo.
/// This enables uploading of large images using multiple chunks of data.
///
/// The chunk to upload
/// The original image checksum
/// The chunk position
///
///
///
Task AddChunkAsync(byte[] data, string originalSum, int position, CancellationToken cancellationToken = default);
///
/// Checks if piwigo is ready to get images uploaded.
///
///
///
///
/// true if ready; otherwise false
Task ReadyForUploadAsync(CancellationToken cancellationToken = default);
///
/// Gets detailed information about the image.
///
/// The image id to read
/// The requested comments page
/// Number of comments per page
///
///
///
/// The metadata of a given image id
Task GetInfoAsync(int imageId, int? commentsPage, int? commentsPerPage, CancellationToken cancellationToken = default);
///
/// Gets a list of images for a given album.
///
/// The album id
/// true to get images from sub-albums
/// Information about the paging
/// Filter criteria applied to the returned images
/// How the list should be sorted
///
///
///
/// a paged list of the images of a given album
Task GetImages(int albumId, bool recursive, PagingInfo page, ImageFilter filter, ImageOrder order = ImageOrder.Name,
CancellationToken cancellationToken = default);
/*
checkFiles
delete
deleteOrphans
emptyLounge
exist
-> formats
delete
searchImage
rate
search
setInfo
setMd5sum
setPrivacyLevel
setRank
syncMetadata
upload
uploadAsync
uploadCompleted
*/
}