diff options
author | Jannis M. Hoffmann <jannis.hoffmann@rwth-aachen.de> | 2022-04-25 16:52:57 +0200 |
---|---|---|
committer | Jannis M. Hoffmann <jannis.hoffmann@rwth-aachen.de> | 2022-04-25 16:52:57 +0200 |
commit | a97f1a5eb6649e93bfd6584ed590e37c1290755f (patch) | |
tree | fe5858e3d1f23ee991566db6c0995604b0b40910 /lib/JWebmail/Model/Driver/MockMaildir.pm | |
parent | 5c3fa491eebc690fbac8a963996a0244882813c7 (diff) |
Refactored ReadMails into a role
Diffstat (limited to 'lib/JWebmail/Model/Driver/MockMaildir.pm')
-rw-r--r-- | lib/JWebmail/Model/Driver/MockMaildir.pm | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/lib/JWebmail/Model/Driver/MockMaildir.pm b/lib/JWebmail/Model/Driver/MockMaildir.pm deleted file mode 100644 index e8956ed..0000000 --- a/lib/JWebmail/Model/Driver/MockMaildir.pm +++ /dev/null @@ -1,57 +0,0 @@ -package JWebmail::Model::Driver::MockMaildir; - -use Mojo::Base -base; - -use Mojo::JSON 'decode_json'; - - -has user => sub { $ENV{USER} }; -has maildir => 't/'; -has extractor => 'perl'; - - -our %EXTRACTORS = ( - perl => 'perl lib/JWebmail/Model/Driver/QMailAuthuser/Extract.pm', - rust => 'extract/target/debug/jwebmail-extract', -); - -use constant { - VALID_USER => 'me@mockmaildir.com', - VALID_PW => '12345', -}; - -sub communicate { - my $self = shift; - my %args = @_; - - if ($args{mode} eq 'auth') { - return ("", 0) if $args{user} eq VALID_USER && $args{password} eq VALID_PW; - return ("", 1); - } - - my $mail_user = 'maildir'; - my $exec = $EXTRACTORS{$self->extractor} . ' ' . join(' ', map { $_ =~ s/(['\\])/\\$1/g; "'$_'" } ($self->maildir, $self->user, $mail_user, $args{mode}, @{$args{args}})); - - my $pid = open(my $reader, '-|', $exec) - or die 'failed to create subprocess'; - - my $input = <$reader>; - - waitpid($pid, 0); - my $rc = $? >> 8; - - my $resp; - if ($rc == 3 || $rc == 0) { - eval { $resp = decode_json $input; }; - if (my $err = $@) { $resp = {error => "decoding error '$err'"}; $rc ||= 1; }; - } - elsif ($rc) { - $resp = {error => "qmail-authuser returned code: $rc"}; - } - - return ($resp, $rc); -} - - -1 - |