< Summary - Syki

Information
Class: Syki.Back.Webhooks.WebhookEventTypeAttribute
Assembly: Back
File(s): /home/runner/work/syki/syki/Back/Webhooks/IWebhookEvent.cs
Tag: 97_27801654829
Line coverage
0%
Covered lines: 0
Uncovered lines: 2
Coverable lines: 2
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
.ctor(...)100%210%
get_Type()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{
 21    private static readonly JsonSerializerOptions _options = new()
 22    {
 23        PropertyNameCaseInsensitive = true,
 24        Converters = { new SykiStringEnumConverter() },
 25    };
 26
 27    public async Task Invoke(IServiceProvider sp, ReceivedWebhookEvent evt)
 28    {
 29        var data = JsonSerializer.Deserialize<T>(evt.Payload, _options)!;
 30        var handler = sp.GetRequiredService<IWebhookEventHandler<T>>();
 31        await handler.Handle(evt, data);
 32    }
 33}
 34
 35[AttributeUsage(AttributeTargets.Class)]
 036public class WebhookEventTypeAttribute(string type) : Attribute
 37{
 038    public string Type { get; } = type;
 39}

Methods/Properties

.ctor(System.String)
get_Type()