using StellaOps.Doctor.Models;
using StellaOps.Doctor.Plugins;
using StellaOps.Doctor.Plugins.Integration.Checks;
namespace StellaOps.Doctor.Plugins.Integration;
///
/// Plugin for external integration diagnostics.
///
public sealed class IntegrationPlugin : IDoctorPlugin
{
///
public string PluginId => "stellaops.doctor.integration";
///
public string DisplayName => "External Integrations";
///
public DoctorCategory Category => DoctorCategory.Integration;
///
public Version Version => new(1, 0, 0);
///
public Version MinEngineVersion => new(1, 0, 0);
///
public bool IsAvailable(IServiceProvider services) => true;
///
public IReadOnlyList GetChecks(DoctorPluginContext context) =>
[
new OciRegistryCheck(),
new RegistryReferrersApiCheck(),
new RegistryCapabilityProbeCheck(),
new RegistryPushAuthorizationCheck(),
new RegistryPullAuthorizationCheck(),
new RegistryCredentialsCheck(),
new ObjectStorageCheck(),
new SmtpCheck(),
new SlackWebhookCheck(),
new TeamsWebhookCheck(),
new GitProviderCheck(),
new LdapConnectivityCheck(),
new OidcProviderCheck(),
new CiSystemConnectivityCheck(),
new SecretsManagerConnectivityCheck(),
new IntegrationWebhookHealthCheck()
];
///
public Task InitializeAsync(DoctorPluginContext context, CancellationToken ct) => Task.CompletedTask;
}