// 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 Autofac; using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; namespace Kyoo.Abstractions.Controllers { /// /// A common interface used to discord plugins /// /// /// You can inject services in the IPlugin constructor. /// You should only inject well known services like an ILogger, IConfiguration or IWebHostEnvironment. /// [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] public interface IPlugin { /// /// The name of the plugin /// string Name { get; } /// /// An optional configuration step to allow a plugin to change asp net configurations. /// /// IEnumerable ConfigureSteps => ArraySegment.Empty; /// /// A configure method that will be run on plugin's startup. /// /// The autofac service container to register services. void Configure(ContainerBuilder builder) { // Skipped } /// /// A configure method that will be run on plugin's startup. /// This is available for libraries that build upon a , for more precise /// configuration use . /// /// A service container to register new services. void Configure(IServiceCollection services) { // Skipped } } }