using System;
using System.IO;
using System.Linq;
using System.Reflection;

namespace AsbCloudInfrastructure
{
   public static class AssemblyExtensions
   {
      public static Stream GetTemplateCopyStream(this Assembly assembly, string templateName)
      {
         var resourceName = assembly
            .GetManifestResourceNames()
            .FirstOrDefault(n => n.EndsWith(templateName));

         if (string.IsNullOrWhiteSpace(resourceName))
            throw new ArgumentNullException(nameof(resourceName));

         using var stream = Assembly.GetExecutingAssembly()
            .GetManifestResourceStream(resourceName);

         var memoryStream = new MemoryStream();
         stream?.CopyTo(memoryStream);
         memoryStream.Position = 0;

			return memoryStream;
		}
	}
}