< Summary

Information
Class: NostrSure.Domain.Extensions.ServiceCollectionExtensions
Assembly: NostrSure.Domain
File(s): /home/runner/work/NostrSure/NostrSure/NostrSure.Domain/Extensions/ServiceCollectionExtensions.cs
Line coverage
100%
Covered lines: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 77
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddNostrValidation(...)100%11100%
AddNostrValidation(...)100%11100%
AddNostrValidationWithoutCaching(...)100%11100%

File(s)

/home/runner/work/NostrSure/NostrSure/NostrSure.Domain/Extensions/ServiceCollectionExtensions.cs

#LineLine coverage
 1using Microsoft.Extensions.Caching.Memory;
 2using Microsoft.Extensions.DependencyInjection;
 3using Microsoft.Extensions.DependencyInjection.Extensions;
 4using NostrSure.Domain.Interfaces;
 5using NostrSure.Domain.Services;
 6using NostrSure.Domain.Validation;
 7
 8namespace NostrSure.Domain.Extensions;
 9
 10/// <summary>
 11/// Dependency injection extensions for the modular validation pipeline
 12/// </summary>
 13public static class ServiceCollectionExtensions
 14{
 15    /// <summary>
 16    /// Adds the modular Nostr validation pipeline to the service collection
 17    /// </summary>
 18    public static IServiceCollection AddNostrValidation(this IServiceCollection services)
 1319    {
 20        // Core validators
 1321        services.TryAddSingleton<INostrEventValidator, ModularNostrEventValidator>();
 1322        services.TryAddSingleton<IEventSignatureValidator, EventSignatureValidator>();
 1323        services.TryAddSingleton<IEventIdValidator, EventIdValidator>();
 1324        services.TryAddSingleton<IEventKindValidator, EventKindValidator>();
 1325        services.TryAddSingleton<IEventTagValidator, EventTagValidator>();
 26
 27        // Supporting services
 1328        services.TryAddSingleton<IEventIdCalculator, CachedEventIdCalculator>();
 1329        services.TryAddSingleton<ICryptographicService, OptimizedCryptographicService>();
 1330        services.TryAddSingleton<IHexConverter, OptimizedHexConverter>();
 31
 32        // Infrastructure dependencies
 1333        services.AddMemoryCache();
 34
 1335        return services;
 1336    }
 37
 38    /// <summary>
 39    /// Adds the modular Nostr validation pipeline with custom memory cache configuration
 40    /// </summary>
 41    public static IServiceCollection AddNostrValidation(this IServiceCollection services,
 42        System.Action<MemoryCacheOptions> configureCacheOptions)
 143    {
 144        services.AddMemoryCache(configureCacheOptions);
 45
 46        // Add validation services without adding default memory cache
 147        services.TryAddSingleton<INostrEventValidator, ModularNostrEventValidator>();
 148        services.TryAddSingleton<IEventSignatureValidator, EventSignatureValidator>();
 149        services.TryAddSingleton<IEventIdValidator, EventIdValidator>();
 150        services.TryAddSingleton<IEventKindValidator, EventKindValidator>();
 151        services.TryAddSingleton<IEventTagValidator, EventTagValidator>();
 152        services.TryAddSingleton<IEventIdCalculator, CachedEventIdCalculator>();
 153        services.TryAddSingleton<ICryptographicService, OptimizedCryptographicService>();
 154        services.TryAddSingleton<IHexConverter, OptimizedHexConverter>();
 55
 156        return services;
 157    }
 58
 59    /// <summary>
 60    /// Adds validation services without caching (for scenarios where caching is not desired)
 61    /// </summary>
 62    public static IServiceCollection AddNostrValidationWithoutCaching(this IServiceCollection services)
 163    {
 164        services.TryAddSingleton<INostrEventValidator, ModularNostrEventValidator>();
 165        services.TryAddSingleton<IEventSignatureValidator, EventSignatureValidator>();
 166        services.TryAddSingleton<IEventIdValidator, EventIdValidator>();
 167        services.TryAddSingleton<IEventKindValidator, EventKindValidator>();
 168        services.TryAddSingleton<IEventTagValidator, EventTagValidator>();
 169        services.TryAddSingleton<ICryptographicService, OptimizedCryptographicService>();
 170        services.TryAddSingleton<IHexConverter, OptimizedHexConverter>();
 71
 72        // Use a simple non-cached event ID calculator
 173        services.TryAddSingleton<IEventIdCalculator, SimpleEventIdCalculator>();
 74
 175        return services;
 176    }
 77}