// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System; using System.Collections.Generic; using Kyoo.Abstractions.Models.Exceptions; namespace Kyoo.Abstractions.Controllers { /// /// A manager to load plugins and retrieve information from them. /// public interface IPluginManager { /// /// Get a single plugin that match the type and name given. /// /// The name of the plugin /// The type of the plugin /// If no plugins match the query /// A plugin that match the queries public T GetPlugin(string name); /// /// Get all plugins of the given type. /// /// The type of plugins to get /// A list of plugins matching the given type or an empty list of none match. public ICollection GetPlugins(); /// /// Get all plugins currently running on Kyoo. This also includes deleted plugins if the app as not been restarted. /// /// All plugins currently loaded. public ICollection GetAllPlugins(); /// /// Load plugins and their dependencies from the plugin directory. /// /// /// An initial plugin list to use. /// You should not try to put plugins from the plugins directory here as they will get automatically loaded. /// public void LoadPlugins(ICollection plugins); /// /// Load plugins and their dependencies from the plugin directory. /// /// /// An initial plugin list to use. /// You should not try to put plugins from the plugins directory here as they will get automatically loaded. /// public void LoadPlugins(params Type[] plugins); } }