/usr/local/CPAN/Siesta/Siesta/Plugin/Resume.pm
use strict;
package Siesta::Plugin::Resume;
use base 'Siesta::Plugin';
use Digest::MD5 qw(md5_hex);
sub description { "set a deferred message on its way" }
sub process {
my $self = shift;
my $mail = shift;
return unless $mail->body =~ /resume (\d+) (\S+)/;
my ($id, $hash) = ($1, $2);
my $deferred = Siesta::Deferred->retrieve( $id ) or return;
unless ($deferred->who->email eq $mail->from) {
# you don't own this message, so you can't resume it
return 1;
}
unless ( $deferred->hash eq $hash ) {
# wrong magic cookie
return 1;
}
$deferred->resume;
return 1;
}
1;