< Summary

Information
Class: Intentum.Runtime.Policy.IntentPolicyBuilder
Assembly: Intentum.Runtime
File(s): /home/runner/work/Intentum/Intentum/src/Intentum.Runtime/Policy/IntentPolicyBuilder.cs
Line coverage
100%
Covered lines: 36
Uncovered lines: 0
Coverable lines: 36
Total lines: 91
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 Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
Allow(...)100%11100%
Observe(...)100%11100%
Warn(...)100%11100%
Block(...)100%11100%
Escalate(...)100%11100%
RequireAuth(...)100%11100%
RateLimit(...)100%11100%
Rule(...)100%11100%
Build()100%11100%

File(s)

/home/runner/work/Intentum/Intentum/src/Intentum.Runtime/Policy/IntentPolicyBuilder.cs

#LineLine coverage
 1using Intentum.Core.Intents;
 2
 3namespace Intentum.Runtime.Policy;
 4
 5/// <summary>
 6/// Fluent builder for creating IntentPolicy instances with a more readable API.
 7/// </summary>
 8public sealed class IntentPolicyBuilder
 9{
 4110    private readonly IntentPolicy _policy = new();
 11
 12    /// <summary>
 13    /// Adds a rule that allows when the condition is met.
 14    /// </summary>
 15    public IntentPolicyBuilder Allow(string name, Func<Intent, bool> condition)
 2116    {
 2117        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.Allow));
 2118        return this;
 2119    }
 20
 21    /// <summary>
 22    /// Adds a rule that observes when the condition is met.
 23    /// </summary>
 24    public IntentPolicyBuilder Observe(string name, Func<Intent, bool> condition)
 725    {
 726        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.Observe));
 727        return this;
 728    }
 29
 30    /// <summary>
 31    /// Adds a rule that warns when the condition is met.
 32    /// </summary>
 33    public IntentPolicyBuilder Warn(string name, Func<Intent, bool> condition)
 834    {
 835        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.Warn));
 836        return this;
 837    }
 38
 39    /// <summary>
 40    /// Adds a rule that blocks when the condition is met.
 41    /// </summary>
 42    public IntentPolicyBuilder Block(string name, Func<Intent, bool> condition)
 1643    {
 1644        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.Block));
 1645        return this;
 1646    }
 47
 48    /// <summary>
 49    /// Adds a rule that escalates when the condition is met.
 50    /// </summary>
 51    public IntentPolicyBuilder Escalate(string name, Func<Intent, bool> condition)
 352    {
 353        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.Escalate));
 354        return this;
 355    }
 56
 57    /// <summary>
 58    /// Adds a rule that requires authentication when the condition is met.
 59    /// </summary>
 60    public IntentPolicyBuilder RequireAuth(string name, Func<Intent, bool> condition)
 261    {
 262        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.RequireAuth));
 263        return this;
 264    }
 65
 66    /// <summary>
 67    /// Adds a rule that applies rate limiting when the condition is met.
 68    /// </summary>
 69    public IntentPolicyBuilder RateLimit(string name, Func<Intent, bool> condition)
 470    {
 471        _policy.AddRule(new PolicyRule(name, condition, PolicyDecision.RateLimit));
 472        return this;
 473    }
 74
 75    /// <summary>
 76    /// Adds a custom rule with a specific decision.
 77    /// </summary>
 78    public IntentPolicyBuilder Rule(string name, Func<Intent, bool> condition, PolicyDecision decision)
 279    {
 280        _policy.AddRule(new PolicyRule(name, condition, decision));
 281        return this;
 282    }
 83
 84    /// <summary>
 85    /// Builds and returns the IntentPolicy instance.
 86    /// </summary>
 87    public IntentPolicy Build()
 4188    {
 4189        return _policy;
 4190    }
 91}