< Summary

Information
Class: TeleFlow.Telegram.Webhooks.TelegramRawWebhookEndpointRouteBuilderExtensions
Assembly: TeleFlow.Telegram.Webhooks
File(s): /_/src/TeleFlow.Telegram.Webhooks/TelegramRawWebhookEndpointRouteBuilderExtensions.cs
Line coverage
93%
Covered lines: 15
Uncovered lines: 1
Coverable lines: 16
Total lines: 40
Line coverage: 93.7%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MapTelegramWebhook(...)66.66%6693.75%

File(s)

/_/src/TeleFlow.Telegram.Webhooks/TelegramRawWebhookEndpointRouteBuilderExtensions.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Builder;
 2using Microsoft.AspNetCore.Http;
 3using Microsoft.AspNetCore.Routing;
 4using Microsoft.Extensions.DependencyInjection;
 5using Microsoft.Extensions.Logging;
 6using TeleFlow.Telegram.Webhooks.Internal;
 7
 8namespace TeleFlow.Telegram.Webhooks;
 9
 10public static class TelegramRawWebhookEndpointRouteBuilderExtensions
 11{
 12    public static RouteHandlerBuilder MapTelegramWebhook(
 13        this IEndpointRouteBuilder endpoints,
 14        string pattern,
 15        TelegramRawWebhookHandler handler,
 16        Action<TelegramRawWebhookOptions>? configure = null)
 17    {
 2418        ArgumentNullException.ThrowIfNull(endpoints);
 2419        ArgumentException.ThrowIfNullOrWhiteSpace(pattern);
 2420        ArgumentNullException.ThrowIfNull(handler);
 21
 2422        var options = new TelegramRawWebhookOptions();
 2423        configure?.Invoke(options);
 2424        TelegramRawWebhookOptionsValidator.Validate(options);
 25
 2226        var normalizedPattern = pattern.Trim();
 2227        if (!normalizedPattern.StartsWith('/'))
 28        {
 029            throw new InvalidOperationException("Telegram webhook path must start with '/'.");
 30        }
 31
 2232        var logger = endpoints.ServiceProvider
 2233            .GetService<ILoggerFactory>()
 2234            ?.CreateLogger<TelegramRawWebhookEndpoint>();
 2235        var endpoint = new TelegramRawWebhookEndpoint(handler, options, logger);
 2236        return endpoints.MapPost(
 2237            normalizedPattern,
 2238            (Func<HttpContext, Task<IResult>>)endpoint.HandleAsync);
 39    }
 40}