64 lines
2.5 KiB
C#
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;
|
|
});
|
|
}
|
|
}
|