< Summary

Information
Class: KicktippIntegration.ServiceCollectionExtensions
Assembly: KicktippIntegration
File(s): /home/runner/work/KicktippAi/KicktippAi/src/KicktippIntegration/ServiceCollectionExtensions.cs
Line coverage
64%
Covered lines: 9
Uncovered lines: 5
Coverable lines: 14
Total lines: 40
Line coverage: 64.2%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddKicktippClient(...)100%22100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/KicktippIntegration/ServiceCollectionExtensions.cs

#LineLine coverage
 1using Microsoft.Extensions.DependencyInjection;
 2using Microsoft.Extensions.DependencyInjection.Extensions;
 3using KicktippIntegration.Authentication;
 4
 5namespace KicktippIntegration;
 6
 7/// <summary>
 8/// Extension methods for configuring Kicktipp services in dependency injection
 9/// </summary>
 10public static class ServiceCollectionExtensions
 11{
 12    /// <summary>
 13    /// Adds Kicktipp client services to the service collection
 14    /// </summary>
 15    /// <param name="services">The service collection</param>
 16    /// <returns>The service collection for chaining</returns>
 17    public static IServiceCollection AddKicktippClient(this IServiceCollection services)
 18    {
 19        // Register memory cache for caching Kicktipp data
 120        services.AddMemoryCache();
 21
 22        // Register the authentication handler as singleton to share cookies across all clients
 123        services.TryAddSingleton<KicktippAuthenticationHandler>();
 24
 25        // Register the HTTP client with authentication
 126        services
 127            .AddHttpClient<IKicktippClient, KicktippClient>(client =>
 128            {
 029                client.BaseAddress = new Uri("https://www.kicktipp.de");
 130                // Set a reasonable timeout for web scraping operations
 031                client.Timeout = TimeSpan.FromMinutes(2);
 132                // Add headers to mimic a real browser
 033                client.DefaultRequestHeaders.Add("User-Agent",
 034                    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.1
 035            })
 136            .AddHttpMessageHandler<KicktippAuthenticationHandler>();
 37
 138        return services;
 39    }
 40}