< Summary - Heimdall API

Information
Class: ArturRios.Heimdall.WebApi.Security.HttpResponseRetryAfterAdvisor
Assembly: ArturRios.Heimdall.WebApi
File(s): /home/runner/work/heimdall-api/heimdall-api/src/Presentation/ArturRios.Heimdall.WebApi/Security/HttpResponseRetryAfterAdvisor.cs
Line coverage
83%
Covered lines: 5
Uncovered lines: 1
Coverable lines: 6
Total lines: 23
Line coverage: 83.3%
Branch coverage
50%
Covered branches: 3
Total branches: 6
Branch coverage: 50%
Method coverage
100%
Covered methods: 2
Fully covered methods: 1
Total methods: 2
Method coverage: 100%
Full method coverage: 50%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Advise(...)50%6680%

File(s)

/home/runner/work/heimdall-api/heimdall-api/src/Presentation/ArturRios.Heimdall.WebApi/Security/HttpResponseRetryAfterAdvisor.cs

#LineLine coverage
 1using System.Globalization;
 2using ArturRios.Heimdall.Command.Services;
 3
 4namespace ArturRios.Heimdall.WebApi.Security;
 5
 6/// <summary>
 7///     <see cref="IRetryAfterAdvisor" /> that sets the current response's <c>Retry-After</c> header,
 8///     in whole seconds and at least one — the form the rate limiter's own rejections use.
 9/// </summary>
 9010public class HttpResponseRetryAfterAdvisor(IHttpContextAccessor httpContextAccessor) : IRetryAfterAdvisor
 11{
 12    public void Advise(TimeSpan wait)
 13    {
 2414        if (httpContextAccessor.HttpContext is not { Response.HasStarted: false } httpContext)
 15        {
 016            return;
 17        }
 18
 2419        var seconds = Math.Max(1, (long)Math.Ceiling(wait.TotalSeconds));
 20
 2421        httpContext.Response.Headers.RetryAfter = seconds.ToString(CultureInfo.InvariantCulture);
 2422    }
 23}