discourse/app/mailers/rejection_mailer.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

42 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require_dependency 'email/message_builder'
class RejectionMailer < ActionMailer::Base
include Email::BuildEmailHelper
DISALLOWED_TEMPLATE_ARGS = [:to,
:from,
:base_url,
:user_preferences_url,
:include_respond_instructions,
:html_override,
:add_unsubscribe_link,
:respond_instructions,
:style,
:body,
:post_id,
:topic_id,
:subject,
:template,
:allow_reply_by_email,
:private_reply,
:from_alias]
# Send an email rejection message.
#
# template - i18n key under system_messages
# message_from - Who to send the rejection messsage to
# template_args - arguments to pass to i18n for interpolation into the message
# Certain keys are disallowed in template_args to avoid confusing the
# BuildEmailHelper. You can see the list in DISALLOWED_TEMPLATE_ARGS.
def send_rejection(template, message_from, template_args)
if template_args.keys.any? { |k| DISALLOWED_TEMPLATE_ARGS.include? k }
raise ArgumentError.new('Reserved key in template arguments')
end
build_email(message_from, template_args.merge(template: "system_messages.#{template}"))
end
end