< Summary

Information
Class: TeleFlow.Framework.Middleware.UpdateStateMiddleware
Assembly: TeleFlow.Framework.Core
File(s): /_/src/TeleFlow.Framework.Core/Middleware/UpdateStateMiddleware.cs
Line coverage
100%
Covered lines: 18
Uncovered lines: 0
Coverable lines: 18
Total lines: 39
Line coverage: 100%
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
.ctor(...)100%11100%
InvokeAsync()100%22100%

File(s)

/_/src/TeleFlow.Framework.Core/Middleware/UpdateStateMiddleware.cs

#LineLine coverage
 1using Microsoft.Extensions.DependencyInjection;
 2using TeleFlow.Framework.States;
 3using TeleFlow.Framework.Updates;
 4
 5namespace TeleFlow.Framework.Middleware;
 6
 7public sealed class UpdateStateMiddleware : IUpdateMiddleware
 8{
 9    private readonly IStateKeyFactory _stateKeyFactory;
 10
 11    public UpdateStateMiddleware(IStateKeyFactory stateKeyFactory)
 12    {
 3613        ArgumentNullException.ThrowIfNull(stateKeyFactory);
 3614        _stateKeyFactory = stateKeyFactory;
 3615    }
 16
 17    public async Task InvokeAsync(UpdateContext context, UpdateDelegate next)
 18    {
 3619        ArgumentNullException.ThrowIfNull(context);
 3620        ArgumentNullException.ThrowIfNull(next);
 21
 3622        if (_stateKeyFactory.TryCreateStateKey(context, out var key))
 23        {
 3624            var stateStore = context.Services.GetRequiredService<IStateStore>();
 3625            var dataStore = context.Services.GetService<IStateDataStore>();
 3626            var dataSerializer = context.Services.GetService<IStateDataSerializer>();
 3627            var historyStore = context.Services.GetService<IStateHistoryStore>();
 28
 3629            context.Items[UpdateStateContextKeys.State] = new UpdateState(
 3630                stateStore,
 3631                key,
 3632                dataStore,
 3633                dataSerializer,
 3634                historyStore);
 35        }
 36
 3637        await next(context).ConfigureAwait(false);
 3638    }
 39}