< Summary - Syki

Information
Class: Syki.Back.Webhooks.WebhookEventInvoker<T>
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Webhooks/IWebhookEvent.cs
Tag: 97_27801654829
Line coverage
0%
Covered lines: 0
Uncovered lines: 9
Coverable lines: 9
Total lines: 39
Line coverage: 0%
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 Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
Invoke()100%210%

File(s)

/home/runner/work/syki/syki/Back/Webhooks/IWebhookEvent.cs

#LineLine coverage
 1using System.Text.Json;
 2using Syki.Back.Converters;
 3using Syki.Back.Domain.Webhooks;
 4
 5namespace Syki.Back.Webhooks;
 6
 7public interface IWebhookEvent;
 8
 9public interface IWebhookEventHandler<T> where T : IWebhookEvent
 10{
 11    Task Handle(ReceivedWebhookEvent evt, T data);
 12}
 13
 14public interface IWebhookEventInvoker
 15{
 16    Task Invoke(IServiceProvider sp, ReceivedWebhookEvent evt);
 17}
 18
 19public class WebhookEventInvoker<T> : IWebhookEventInvoker where T : IWebhookEvent
 20{
 021    private static readonly JsonSerializerOptions _options = new()
 022    {
 023        PropertyNameCaseInsensitive = true,
 024        Converters = { new SykiStringEnumConverter() },
 025    };
 26
 27    public async Task Invoke(IServiceProvider sp, ReceivedWebhookEvent evt)
 28    {
 029        var data = JsonSerializer.Deserialize<T>(evt.Payload, _options)!;
 030        var handler = sp.GetRequiredService<IWebhookEventHandler<T>>();
 031        await handler.Handle(evt, data);
 032    }
 33}
 34
 35[AttributeUsage(AttributeTargets.Class)]
 36public class WebhookEventTypeAttribute(string type) : Attribute
 37{
 38    public string Type { get; } = type;
 39}

Methods/Properties

.cctor()
Invoke()