Files
MatchLiveTv/backend/app/services/recordings/notify_expiring.rb
Emiliano Frascaro da75582dae Sposta storage video su disco dedicato e completa ops/SMTP in produzione.
Recordings e Garage usano bind mount su /media/videos; aggiunge ntfy self-hosted,
notifiche critical+warning, SMTP Aruba SSL/465 e fix cron replay.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 23:13:08 +02:00

40 lines
1.1 KiB
Ruby

module Recordings
class NotifyExpiring
WINDOW_DAYS = 7
def initialize(recording)
@recording = recording
end
def call
return @recording if @recording.expiry_warning_sent_at.present?
return @recording unless @recording.ready?
return @recording if @recording.expires_at.blank?
return @recording unless @recording.expires_at <= WINDOW_DAYS.days.from_now
recipients.each do |user|
deliver_expiring_soon(user)
end
@recording.update!(expiry_warning_sent_at: Time.current)
@recording
end
private
def deliver_expiring_soon(user)
Recordings::ReplayMailer.replay_expiring_soon(recording: @recording, recipient: user).deliver_now
rescue EOFError => e
Rails.logger.warn("[Recordings::NotifyExpiring] SMTP EOF on close for #{user.email}: #{e.message}")
end
def recipients
club = @recording.team.club
owner = club.owner
users = club.users.distinct.to_a
users << owner if owner && users.none? { |u| u.id == owner.id }
users.uniq.select { |u| u.email.present? }
end
end
end