74 lines
3.0 KiB
C#
74 lines
3.0 KiB
C#
using YandexMusic.API.Common;
|
||
using YandexMusic.API.Models.Common;
|
||
using YandexMusic.API.Models.Queue;
|
||
using YandexMusic.API.Requests.Queue;
|
||
|
||
namespace YandexMusic.API
|
||
{
|
||
/// <summary>
|
||
/// API для взаимодействия с очередями
|
||
/// </summary>
|
||
public partial class YQueueAPI : YCommonAPI
|
||
{
|
||
public YQueueAPI(YandexMusicApi yandex) : base(yandex)
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// Получение всех очередей треков с разных устройств для синхронизации между ними
|
||
/// </summary>
|
||
/// <param name="storage">Хранилище</param>
|
||
/// <param name="device">Устройство</param>
|
||
/// <returns></returns>
|
||
public Task<YResponse<YQueueItemsContainer>> ListAsync(AuthStorage storage, string device = null)
|
||
{
|
||
return new YQueuesListBuilder(api, storage)
|
||
.Build(device)
|
||
.GetResponseAsync();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Получение очереди
|
||
/// </summary>
|
||
/// <param name="storage">Хранилище</param>
|
||
/// <param name="queueId">Идентификатор очереди</param>
|
||
/// <returns></returns>
|
||
public Task<YResponse<YQueue>> GetAsync(AuthStorage storage, string queueId)
|
||
{
|
||
return new YGetQueueBuilder(api, storage)
|
||
.Build(queueId)
|
||
.GetResponseAsync();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Создание новой очереди треков
|
||
/// </summary>
|
||
/// <param name="storage">Хранилище</param>
|
||
/// <param name="queue">Очередь треков</param>
|
||
/// <param name="device">Устройство</param>
|
||
/// <returns></returns>
|
||
public Task<YResponse<YNewQueue>> CreateAsync(AuthStorage storage, YQueue queue, string device = null)
|
||
{
|
||
return new YQueueCreateBuilder(api, storage, device)
|
||
.Build(queue)
|
||
.GetResponseAsync();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Установка текущего индекса проигрываемого трека в очереди треков
|
||
/// </summary>
|
||
/// <param name="storage">Хранилище</param>
|
||
/// <param name="queueId">Идентификатор очереди</param>
|
||
/// <param name="currentIndex">Текущий индекс</param>
|
||
/// <param name="isInteractive">Флаг интерактивности</param>
|
||
/// <param name="device">Устройство</param>
|
||
/// <returns></returns>
|
||
public Task<YResponse<YUpdatedQueue>> UpdatePositionAsync(AuthStorage storage, string queueId, int currentIndex, bool isInteractive, string device = null)
|
||
{
|
||
return new YQueueUpdatePositionBuilder(api, storage, device)
|
||
.Build((queueId, currentIndex, isInteractive))
|
||
.GetResponseAsync();
|
||
}
|
||
}
|
||
}
|