< Summary

Information
Class: TeleFlow.Framework.Middleware.ServiceCollectionMiddlewareExtensions
Assembly: TeleFlow.Framework.Core
File(s): /_/src/TeleFlow.Framework.Core/Middleware/ServiceCollectionMiddlewareExtensions.cs
Line coverage
94%
Covered lines: 18
Uncovered lines: 1
Coverable lines: 19
Total lines: 50
Line coverage: 94.7%
Branch coverage
83%
Covered branches: 5
Total branches: 6
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddUpdateMiddleware(...)100%11100%
AddSingletonUpdateMiddleware(...)100%11100%
AddDefaultUpdateRateLimiting(...)100%11100%
AddUpdateMiddlewareRegistration(...)83.33%6687.5%

File(s)

/_/src/TeleFlow.Framework.Core/Middleware/ServiceCollectionMiddlewareExtensions.cs

#LineLine coverage
 1using Microsoft.Extensions.DependencyInjection;
 2
 3namespace TeleFlow.Framework.Middleware;
 4
 5public static class ServiceCollectionMiddlewareExtensions
 6{
 7    public static IServiceCollection AddUpdateMiddleware<TMiddleware>(this IServiceCollection services)
 8        where TMiddleware : class, IUpdateMiddleware
 9    {
 6310        ArgumentNullException.ThrowIfNull(services);
 11
 6312        services.AddScoped<TMiddleware>();
 6313        services.AddUpdateMiddlewareRegistration<TMiddleware>();
 6314        return services;
 15    }
 16
 17    public static IServiceCollection AddSingletonUpdateMiddleware<TMiddleware>(this IServiceCollection services)
 18        where TMiddleware : class, IUpdateMiddleware
 19    {
 120        ArgumentNullException.ThrowIfNull(services);
 21
 122        services.AddSingleton<TMiddleware>();
 123        services.AddUpdateMiddlewareRegistration<TMiddleware>();
 124        return services;
 25    }
 26
 27    public static IServiceCollection AddDefaultUpdateRateLimiting(this IServiceCollection services)
 28    {
 129        ArgumentNullException.ThrowIfNull(services);
 30
 131        services.AddUpdateMiddleware<UpdateRateLimitMiddleware>();
 132        return services;
 33    }
 34
 35    private static void AddUpdateMiddlewareRegistration<TMiddleware>(this IServiceCollection services)
 36        where TMiddleware : class, IUpdateMiddleware
 37    {
 6438        var middlewareType = typeof(TMiddleware);
 39
 6440        if (services.Any(descriptor =>
 156541                descriptor.ServiceType == typeof(UpdateMiddlewareRegistration) &&
 156542                descriptor.ImplementationInstance is UpdateMiddlewareRegistration registration &&
 156543                registration.MiddlewareType == middlewareType))
 44        {
 045            return;
 46        }
 47
 6448        services.AddSingleton(new UpdateMiddlewareRegistration(middlewareType));
 6449    }
 50}