using Hcs.ClientNet.Api.Request.Exception;
using Hcs.ClientNet.Api.Request.Nsi;
using Hcs.Service.Async.Nsi;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Hcs.ClientNet.Api
{
    // http://open-gkh.ru/NsiService/
    public class NsiApi(ClientBase client) : ApiBase(client)
    {
        /// <summary>
        /// Возвращает данные справочника поставщика информации
        /// </summary>
        /// <param name="registryNumber">Реестровый номер справочника</param>
        /// <param name="token">Токен отмены</param>
        /// <returns>Данные справочника</returns>
        public async Task<IEnumerable<NsiItemType>> ExportDataProviderNsiItemAsync(exportDataProviderNsiItemRequestRegistryNumber registryNumber, CancellationToken token = default)
        {
            try
            {
                var request = new ExportDataProviderNsiItemRequest(client);
                return await request.ExecuteAsync(registryNumber, token);
            }
            catch (NoResultsRemoteException)
            {
                return [];
            }
        }
    }
}
