Stream custom live channels using your own media
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

31 lines
1015 B

using System.Diagnostics.CodeAnalysis;
using System.Security.Cryptography;
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Interfaces.Metadata;
using Microsoft.IO;
namespace ErsatzTV.Infrastructure.Metadata;
[SuppressMessage("Security", "CA5350:Do Not Use Weak Cryptographic Algorithms")]
public class CollectionEtag : ICollectionEtag
{
private readonly RecyclableMemoryStreamManager _recyclableMemoryStreamManager;
public CollectionEtag(RecyclableMemoryStreamManager recyclableMemoryStreamManager) =>
_recyclableMemoryStreamManager = recyclableMemoryStreamManager;
public string ForCollectionItems(List<MediaItem> items)
{
using MemoryStream ms = _recyclableMemoryStreamManager.GetStream();
using var bw = new BinaryWriter(ms);
foreach (MediaItem item in items.OrderBy(i => i.Id))
{
bw.Write(item.Id);
}
ms.Position = 0;
byte[] hash = SHA1.Create().ComputeHash(ms);
return Convert.ToHexString(hash);
}
}