On Mon, 3 Jun 2019 at 00:08, <[email protected]> wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> curcuru pushed a commit to branch mail_ldap_notification
> in repository https://gitbox.apache.org/repos/asf/whimsy.git
>
> commit 5e74b3aac094e105af73c3c49ec09f49e33d9e31
> Author: Shane Curcuru <[email protected]>
> AuthorDate: Sun Jun 2 19:08:05 2019 -0400
>
> Encapsulate sending mail from roster tool
>
> In progress; currently gives "ReferenceError: Can't find variable:
> __FILE__"
I think that is because the file is converted to Javascript (*.js.rb)
__FILE__ is a Ruby construct.
Is it intended that Javascript should send the email directly from the
browser client?
That seems odd.
S.
> ---
> www/roster/views/utils.js.rb | 49
> ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/www/roster/views/utils.js.rb b/www/roster/views/utils.js.rb
> index 1d68c68..2ec2e94 100644
> --- a/www/roster/views/utils.js.rb
> +++ b/www/roster/views/utils.js.rb
> @@ -1,3 +1,4 @@
> +# Utility functions used throughout roster tool
> class Utils
>
> # Common processing to handle a response that is expected to be JSON
> @@ -23,4 +24,52 @@ class Utils
> end
> end
> end
> +
> + # Deliver an LDAP notification email, e.g. pmc/ppmc/group/etc. changes
> + # Uses creates and mail.deliver! using a template for body
> + # Includes X-headers to mark as Whimsy email
> + # DEBUGGING: options: true to prevent actual mail sending
> + def self.mail_ldap_notification(
> + from,
> + to,
> + cc,
> + bcc,
> + subject,
> + template,
> + data, # Hash for ERB
> + options
> + )
> + # TODO how should this method report problems?
> + raise ArgumentError, "From must not be nil or blank" if from.nil? ||
> from == ''
> + raise ArgumentError, "To or CC must not be nil" if to.nil? && cc.nil?
> + raise ArgumentError, "Subject must not be nil or blank" if subject.nil?
> || subject == ''
> + raise ArgumentError, "Template must not be nil or blank" if
> template.nil? || template == ''
> +
> + path = File.expand_path("../../templates/#{template}", __FILE__.untaint)
> + file = File.join(path, template)
> + puts "-> #{path} #{template} #{file}"
> + tmplt = File.read(file.untaint).untaint
> + mail = Mail.new do
> + from from
> + to to
> + cc cc
> + bcc bcc
> + subject subject
> + b = binding # Bind the passed in data hash to send to ERB
> + data.each do |key, val|
> + b.local_variable_set(key.to_sym, val)
> + end
> + body ERB.new(tmplt).result(b)
> + end
> +
> + # Header for root@ mail filters, per request infra
> + mail.header['X-For-Root'] = 'yes'
> + # Header to denote automated mail from whimsy
> + mail.header['X-Mailer'] = 'whimsy/www/roster/utils(0.1)'
> +
> + # Deliver email
> + mail.delivery_method :test if options # TODO DEBUGGING don't actually
> send mail, just log it
> + mail.deliver!
> + return mail
> + end
> end
>