X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FPromulger%2FDispatch.pm;h=36fc651a93cd5664f092c496a3aec2770dc3c7ca;hb=21baaef0e40fb1f234a9cf27432d67e73a4e9b92;hp=ba04393c17ac25c3c566b87cd5855f007a9b2394;hpb=35269bf5b66fdcf9e07a81dffd4d44aeea70c5e5;p=p5sagit%2FPromulger.git diff --git a/lib/Promulger/Dispatch.pm b/lib/Promulger/Dispatch.pm index ba04393..36fc651 100644 --- a/lib/Promulger/Dispatch.pm +++ b/lib/Promulger/Dispatch.pm @@ -8,8 +8,12 @@ use Email::Simple; use Email::Sender::Simple qw(sendmail); use Mail::Verp; +use Promulger::Config; + +# XXX no bounce parsing yet -- apeiron, 2010-03-13 sub dispatch { - my($message, $config) = @_; + my($message) = @_; + my $config = Promulger::Config->config; my $email = Email::Simple->new($message); my $recipient = $email->header('To'); @@ -30,14 +34,14 @@ sub dispatch { } sub handle_request { - my ($list, $sender, $recipient, $subject, $config) = @_; + my ($list, $sender, $recipient, $subject) = @_; if($subject =~ /^subscribe/i) { - $list->subscribe($sender, $config) - or already_subscribed($list, $sender, $config); + $list->subscribe($sender) + or already_subscribed($list, $sender); } elsif($subject =~ /^unsubscribe/i) { - $list->unsubscribe($sender, $config) - or not_subscribed($list, $sender, $config); + $list->unsubscribe($sender) + or not_subscribed($list, $sender); } } @@ -73,8 +77,52 @@ sub post_message { } } -sub reject {} -sub not_subscribed {} -sub already_subscribed {} +# XXX make this actually not suck -- apeiron, 2010-03-13 +sub reject { + my($recipient, $sender) = @_; + my $email = Email::Simple->create( + header => [ + From => $recipient, + To => $sender, + Subject => 'Rejected', + ], + body => <address; + my $email = Email::Simple->create( + header => [ + From => $list->admin_address, + To => $sender, + Subject => 'Not subscribed', + ], + body => <address; + my $email = Email::Simple->create( + header => [ + From => $list->admin_address, + To => $sender, + Subject => 'Already subscribed', + ], + body => <