using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using zero.Core.Api;
using zero.Core.Entities;
using zero.Core.Routing;
using zero.Core.Extensions;
namespace zero.Web.ViewHelpers
{
public class ZeroMediaHelper : IZeroMediaHelper
{
HttpContext HttpContext;
IMediaApi MediaApi;
public ZeroMediaHelper(IHttpContextAccessor httpContextAccessor, IMediaApi mediaApi)
{
HttpContext = httpContextAccessor.HttpContext;
MediaApi = mediaApi;
}
///
public async Task GetById(string id)
{
if (id.IsNullOrEmpty())
{
return null;
}
return await MediaApi.GetById(id);
}
///
public async Task> GetByIds(string[] ids)
{
return await MediaApi.GetById(ids);
}
///
public async Task GetUrl(string id, bool isAbsolute = false)
{
IMedia media = await GetById(id);
return media?.Source;
}
///
public async Task> GetUrls(string[] ids, bool isAbsolute = false)
{
Dictionary medias = await GetByIds(ids);
return medias.ToDictionary(x => x.Key, x => x.Value?.Source);
}
}
public interface IZeroMediaHelper
{
///
/// Get media by Id
///
Task GetById(string id);
///
/// Get media items by Ids
///
Task> GetByIds(string[] ids);
///
/// Get source for a media item
///
Task GetUrl(string id, bool isAbsolute = false);
///
/// Get source for media items
///
Task> GetUrls(string[] ids, bool isAbsolute = false);
}
}