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