whimsical-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From curc...@apache.org
Subject [whimsy] 01/01: Encapsulate sending mail from roster tool
Date Sun, 02 Jun 2019 23:08:14 GMT
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 <asf@shanecurcuru.org>
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__"
---
 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


Mime
View raw message