< Summary

Information
Class: TeleFlow.Annotations.RequireTelegramRoleAttribute
Assembly: TeleFlow.Annotations
File(s): /_/src/TeleFlow.Annotations/Filters/RequireTelegramRoleAttribute.cs
Line coverage
25%
Covered lines: 3
Uncovered lines: 9
Coverable lines: 12
Total lines: 49
Line coverage: 25%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)0%1175%
.ctor(...)0%1230%

File(s)

/_/src/TeleFlow.Annotations/Filters/RequireTelegramRoleAttribute.cs

#LineLine coverage
 1namespace TeleFlow.Annotations;
 2/// <summary>
 3/// Requires the sender to have one of the configured Telegram member statuses in the chat.
 4/// </summary>
 5[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
 6public sealed class RequireTelegramRoleAttribute : TeleFlowAttribute
 7{
 8    /// <summary>
 9    /// Creates a Telegram role requirement from a status set.
 10    /// </summary>
 11    /// <param name="allowedStatuses">Telegram member statuses allowed to invoke the handler.</param>
 5012    public RequireTelegramRoleAttribute(TelegramMemberStatusSet allowedStatuses)
 13    {
 5014        if (!TelegramMemberStatusSetValidator.IsValid(allowedStatuses))
 15        {
 016            throw new ArgumentException("Telegram role requirement must contain at least one known member status.", name
 17        }
 18
 19        AllowedStatuses = allowedStatuses;
 5020    }
 21
 22    /// <summary>
 23    /// Creates a Telegram role requirement from one or more status sets.
 24    /// </summary>
 25    /// <param name="allowedStatuses">Telegram member status sets allowed to invoke the handler.</param>
 026    public RequireTelegramRoleAttribute(params TelegramMemberStatusSet[] allowedStatuses)
 27    {
 028        ArgumentNullException.ThrowIfNull(allowedStatuses);
 29
 030        if (allowedStatuses.Length == 0)
 31        {
 032            throw new ArgumentException("Telegram role requirement must contain at least one known member status.", name
 33        }
 34
 035        var combinedStatuses = TelegramMemberStatusSetValidator.Combine(allowedStatuses);
 36
 037        if (!TelegramMemberStatusSetValidator.IsValid(combinedStatuses))
 38        {
 039            throw new ArgumentException("Telegram role requirement must contain only known member statuses.", nameof(all
 40        }
 41
 42        AllowedStatuses = combinedStatuses;
 043    }
 44
 45    /// <summary>
 46    /// Telegram member statuses allowed to invoke the handler.
 47    /// </summary>
 48    public TelegramMemberStatusSet AllowedStatuses { get; }
 49}