using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Services;

/// <summary>
/// Интерфейс сервиса справок страниц
/// </summary>
public interface IHelpPageService
{
    /// <summary>
    /// Метод обновления или обновления файла справки
    /// </summary>
    /// <param name="urlPage"></param>
    /// <param name="idCategory"></param>
    /// <param name="fileName"></param>
    /// <param name="fileStream"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<int> AddOrUpdateAsync(string urlPage,
        int idCategory,
        string fileName,
        Stream fileStream,
        CancellationToken cancellationToken);

    /// <summary>
    /// Метод получения файла справки
    /// </summary>
    /// <param name="pageKey"></param>
    /// <param name="idCategory"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    Task<(Stream stream, string fileName)?> GetFileStreamAsync(string pageKey,
        int idCategory,
        CancellationToken cancellationToken);
}