ironlicensing-dotnet/Extensions/ServiceCollectionExtensions.cs

64 lines
2.5 KiB
C#

using Microsoft.Extensions.DependencyInjection;
namespace IronLicensing.Client.Extensions;
public static class ServiceCollectionExtensions
{
/// <summary>
/// Adds IronLicensing client services to the service collection
/// </summary>
/// <param name="services">The service collection</param>
/// <param name="configure">Configuration action for licensing options</param>
/// <returns>The service collection for chaining</returns>
public static IServiceCollection AddIronLicensing(this IServiceCollection services, Action<LicensingOptions> configure)
{
services.Configure(configure);
// Core services
services.AddHttpClient<ILicenseManager, LicenseManager>();
services.AddSingleton<IMachineIdentifier, MachineIdentifier>();
services.AddSingleton<ILicenseCache, SecureStorageLicenseCache>();
services.AddSingleton<ISignatureVerifier, RsaSignatureVerifier>();
return services;
}
/// <summary>
/// Adds IronLicensing client services with simplified configuration
/// </summary>
/// <param name="services">The service collection</param>
/// <param name="publicKey">Your public API key (pk_live_xxx or pk_test_xxx)</param>
/// <param name="productSlug">Your product slug identifier</param>
/// <returns>The service collection for chaining</returns>
public static IServiceCollection AddIronLicensing(this IServiceCollection services, string publicKey, string productSlug)
{
return services.AddIronLicensing(options =>
{
options.PublicKey = publicKey;
options.ProductSlug = productSlug;
});
}
/// <summary>
/// Adds IronLicensing client services with custom API URL (for self-hosted installations)
/// </summary>
/// <param name="services">The service collection</param>
/// <param name="publicKey">Your public API key</param>
/// <param name="productSlug">Your product slug identifier</param>
/// <param name="apiBaseUrl">Custom API base URL</param>
/// <returns>The service collection for chaining</returns>
public static IServiceCollection AddIronLicensing(
this IServiceCollection services,
string publicKey,
string productSlug,
string apiBaseUrl)
{
return services.AddIronLicensing(options =>
{
options.PublicKey = publicKey;
options.ProductSlug = productSlug;
options.ApiBaseUrl = apiBaseUrl;
});
}
}