// 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);
}
}