using System.Collections;
using Elsa.Http.Abstractions;
using Elsa.Http.Contexts;
using Elsa.Http.Models;
namespace Elsa.Http.DownloadableContentHandlers;
///
/// Handles content that represents a list of downloadable objects.
///
public class MultiDownloadableContentHandler : DownloadableContentHandlerBase
{
///
public override bool GetSupportsContent(object content) => content is IEnumerable and not string and not byte[];
///
protected override IEnumerable>> GetDownloadablesAsync(DownloadableContext context)
{
var collectedDownloadables = new List>>();
var content = context.Content;
var enumerable = (IEnumerable) content;
var manager = context.Manager;
foreach (var item in enumerable)
{
var downloadables = manager.GetDownloadablesAsync(item, context.Options, context.CancellationToken);
collectedDownloadables.AddRange(downloadables);
}
return collectedDownloadables;
}
}