From 422d8848f6f82e5791454237fcce3194e31d52d3 Mon Sep 17 00:00:00 2001 From: Emiliano Frascaro Date: Tue, 2 Jun 2026 23:06:46 +0200 Subject: [PATCH] Corregge chiusura diretta YouTube e stop sessione senza broadcast. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit transition_live_broadcast richiede status, id e part; evita 500 in chiusura diretta Match Live TV quando non c'รจ broadcast YouTube. Co-authored-by: Cursor --- backend/app/services/sessions/stop.rb | 8 +++++++- backend/app/services/youtube/broadcast_service.rb | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/backend/app/services/sessions/stop.rb b/backend/app/services/sessions/stop.rb index 9201342..78ca9cd 100644 --- a/backend/app/services/sessions/stop.rb +++ b/backend/app/services/sessions/stop.rb @@ -8,7 +8,7 @@ module Sessions cancel_timeout_job Sessions::RegiaAccess.revoke!(@session) @session.end_stream! - Youtube::BroadcastService.new(@session.match.team).complete_broadcast!(@session.youtube_broadcast_id) + complete_youtube_broadcast! if @session.youtube_broadcast_id.present? Recordings::IndexSession.new(@session).call Mediamtx::Client.new.delete_path(@session) log_event("ended") @@ -27,5 +27,11 @@ module Sessions def log_event(type) @session.stream_events.create!(event_type: type, occurred_at: Time.current, metadata: {}) end + + def complete_youtube_broadcast! + Youtube::BroadcastService.new(@session.match.team).complete_broadcast!(@session.youtube_broadcast_id) + rescue Youtube::BroadcastService::Error => e + Rails.logger.warn("[Sessions::Stop] YouTube complete: #{e.message}") + end end end diff --git a/backend/app/services/youtube/broadcast_service.rb b/backend/app/services/youtube/broadcast_service.rb index c95e959..8c9688b 100644 --- a/backend/app/services/youtube/broadcast_service.rb +++ b/backend/app/services/youtube/broadcast_service.rb @@ -50,10 +50,11 @@ module Youtube end def complete_broadcast!(broadcast_id) + return if broadcast_id.blank? return if @credential.blank? || missing_oauth_config? client = authorized_client - client.transition_live_broadcast(broadcast_id, "complete") + client.transition_live_broadcast("complete", broadcast_id, "id,status") rescue Google::Apis::Error nil end