From 1669bdeebcd8dfb9e470704211295c502f6a6bab Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Tue, 27 May 2025 16:56:38 -0500 Subject: [PATCH] fix: make sure it is a stream and it is live --- src/src/StevesBot.Webhook/Program.cs | 2 +- src/src/StevesBot.Webhook/YouTube/Data/YouTubeSnippet.cs | 7 +++++++ src/src/StevesBot.Webhook/YouTube/Data/YouTubeVideo.cs | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/src/StevesBot.Webhook/YouTube/Data/YouTubeSnippet.cs diff --git a/src/src/StevesBot.Webhook/Program.cs b/src/src/StevesBot.Webhook/Program.cs index 0bf22d4..29155f0 100644 --- a/src/src/StevesBot.Webhook/Program.cs +++ b/src/src/StevesBot.Webhook/Program.cs @@ -85,7 +85,7 @@ app.MapPost(ytCallback, static async (HttpContext context, [FromServices] ILogge return Results.NotFound(); } - if (video.IsStream is false) + if (video.IsLiveStream is false) { logger.LogInformation("Video ID {VideoId} is not a live stream.", videoId); return Results.Ok(); diff --git a/src/src/StevesBot.Webhook/YouTube/Data/YouTubeSnippet.cs b/src/src/StevesBot.Webhook/YouTube/Data/YouTubeSnippet.cs new file mode 100644 index 0000000..7b0105f --- /dev/null +++ b/src/src/StevesBot.Webhook/YouTube/Data/YouTubeSnippet.cs @@ -0,0 +1,7 @@ +namespace StevesBot.Webhook.YouTube.Data; + +internal sealed record YouTubeSnippet +{ + [JsonPropertyName("liveBroadcastContent")] + public string LiveBroadcastContent { get; init; } = string.Empty; +} \ No newline at end of file diff --git a/src/src/StevesBot.Webhook/YouTube/Data/YouTubeVideo.cs b/src/src/StevesBot.Webhook/YouTube/Data/YouTubeVideo.cs index 10ed6c9..6f68867 100644 --- a/src/src/StevesBot.Webhook/YouTube/Data/YouTubeVideo.cs +++ b/src/src/StevesBot.Webhook/YouTube/Data/YouTubeVideo.cs @@ -8,5 +8,8 @@ internal sealed record YouTubeVideo [JsonPropertyName("liveStreamingDetails")] public YouTubeLiveStreamingDetails? LiveStreamingDetails { get; init; } - public bool IsStream => LiveStreamingDetails is not null; + [JsonPropertyName("snippet")] + public YouTubeSnippet Snippet { get; init; } = new(); + + public bool IsLiveStream => LiveStreamingDetails is not null && Snippet.LiveBroadcastContent is "live"; } \ No newline at end of file