whimsical-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s...@apache.org
Subject [whimsy] 03/12: Implement --public option
Date Thu, 10 Jan 2019 17:22:17 GMT
This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch mod-gui
in repository https://gitbox.apache.org/repos/asf/whimsy.git

commit 04cb9347cf6efdc5b4c4bdd13831b8a3a68ce5f8
Author: Sebb <sebb@apache.org>
AuthorDate: Wed Jan 9 16:58:12 2019 +0000

    Implement --public option
---
 www/moderation/desk/deliver.rb | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/www/moderation/desk/deliver.rb b/www/moderation/desk/deliver.rb
index e574922..8de6aaf 100644
--- a/www/moderation/desk/deliver.rb
+++ b/www/moderation/desk/deliver.rb
@@ -1,13 +1,14 @@
 #
 # Process email as it is received
-#
-
-#Dir.chdir File.dirname(File.expand_path(__FILE__))
+# A single mail is passed on STDIN
+# The script accepts a CLI parameter 'public' which marks the message as public (i.e. default
is private)
 
 require_relative 'models/mailbox'
 require 'mail'
 require_relative 'config.rb'
 
+isPublic = ARGV.delete("--public") == '--public'
+
 # read and parse email
 STDIN.binmode
 original = STDIN.read
@@ -41,6 +42,7 @@ begin
       domain: dom,
       date: hdrs['Date'],
     }
+    headers[:public]=true if isPublic
     mbox=Mailbox.mboxname(timestamp.to_f)
     # construct wrapper message
     mailbox = Mailbox.new(mbox)
@@ -53,14 +55,25 @@ begin
     message.write_email
     # extract the message for main mailbox
     email = parts[1].body.raw_source
-  elsif subj.start_with? 'CONFIRM subscribe to '
-    headers = Hash.new
+  elsif parts.length == 0 && subj.start_with?('CONFIRM subscribe to ')
+    list, dom = subj.sub(/^CONFIRM subscribe to /,'').split'@'
+    hdrs = Mailbox.headers(mail)
+    # N.B. The Reply-To address is the accept address
+    headers = {
+      list: list,
+      domain: dom,
+      accept: hdrs['Reply-To'],
+    }
+    headers[:public]=true if isPublic
     email = original
   else
     $stderr.puts "Unexpected moderation message in #{hash} with subject: #{subj}"
-    headers = Hash.new
+    headers = {
+      public: ispublic,
+    }
     email = original
-  end 
+  end
+  # Merge in specific headers from the message 
   WANTED=%w{Date From To Reply-To Message-ID Subject Return-Path Sender References In-Reply-To}
   headers.merge! Message.parse(email).select{ |k,v| Symbol === k or WANTED.include? k }
 rescue => e


Mime
View raw message