public override void Handle(HttpListenerRequest request, HttpListenerResponse response)
        {
            try
            {
                var result = new List <Item>();

                /*
                 * var drives = DriveInfo.GetDrives();
                 *
                 * foreach (var drive in drives)
                 * {
                 *  try
                 *  {
                 *      if (drive.IsReady)
                 *      {
                 *          string mainText = $"{drive.Name} ({Tools.FSize(drive.AvailableFreeSpace)} свободно из {Tools.FSize(drive.TotalSize)})";
                 *          string subText = $"<br>Метка диска: {drive.VolumeLabel}<br>Тип носителя: {drive.DriveType}";
                 *
                 *          result.Add(new Item
                 *          {
                 *              Name = mainText + subText,
                 *              Link = CreateUrl(
                 *                             request,
                 *                             TreePath,
                 *                             new NameValueCollection { [null] = new Uri(drive.Name).AbsoluteUri+"/" }
                 *                         ),
                 *              Type = ItemType.DIRECTORY
                 *          });
                 *
                 *          Console.WriteLine($"Drive: {mainText}{subText}");
                 *      }
                 *  }
                 *  catch (Exception e)
                 *  {
                 *      Console.WriteLine(e.ToString());
                 *  }
                 * }
                 */
                foreach (var plugin in PluginManager.Instance.GetPlugins())
                {
                    result.Add(
                        new Item
                    {
                        Name      = plugin.Value.Name,
                        Link      = PluginRequestHandler.CreatePluginUrl(request, plugin.Key),
                        ImageLink = plugin.Value.ImageLink,
                        Type      = ItemType.DIRECTORY
                    }
                        );
                }


                WriteResponse(response, ResponseSerializer.ToM3U(result.ToArray()));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        public override void Handle(HttpListenerRequest request, HttpListenerResponse response)
        {
            var pluginKey = ParsePluginKey(request);

            if (!string.IsNullOrEmpty(pluginKey))
            {
                var plugin = PluginManager.Instance.GetPlugin(pluginKey);

                if (plugin != null)
                {
                    Console.WriteLine("Execute: " + plugin.Name);

                    var pluginResponse = plugin.Instance.GetList(new PluginContext(pluginKey, request, new NameValueCollection(request.QueryString)));

                    if (pluginResponse != null)
                    {
                        WriteResponse(response, ResponseSerializer.ToXml(pluginResponse));
                    }
                    else
                    {
                        WriteResponse(response, HttpStatusCode.NotFound, $"Plugin Playlist is null. Plugin: {pluginKey}");
                    }
                }
                else
                {
                    Console.WriteLine("Plugin Not Found. Plugin:" + pluginKey);

                    WriteResponse(response, HttpStatusCode.NotFound, $"Plugin Not Found. Plugin: {pluginKey}");
                }
            }
            else
            {
                Console.WriteLine("Plugin is not defined in request. Plugin: " + pluginKey);

                WriteResponse(response, HttpStatusCode.NotFound, $"Plugin is not defined in request. Plugin: {pluginKey}");
            }
        }