summaryrefslogtreecommitdiff
path: root/lib/MaildirIndexer/Index.rakumod
blob: 90bc6bd8e70c67dcc105e741f3e359b1cebb4145 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use v6.d;
unit role MaildirIndexer::Index;
use MaildirIndexer::Email;
 
my class AddMail is export {
    has MaildirIndexer::Email:D $.email is required;
    has Str:D $.mailbox is required;
}
my class DelPath is export {
    has IO:D $.path is required;
    has Str:D $.mailbox is required;
}
my class MailboxForEmail is export {
    has MaildirIndexer::Email:D $.email is required;
    has Channel:D $.reply-to is required;
}
 
my class Mailbox is export {
    has Str:D $.name is required;
    has Numeric:D $.confidence is required;
}
 
method receive(Channel:D $channel --> Nil{
    react {
        whenever $channel -> $event {
            when $event ~~ AddMail {
                self.add-mail($event.email, $event.mailbox);
            }
            when $event ~~ DelPath {
                self.del-path($event.path, $event.mailbox);
            }
            when $event ~~ MailboxForEmail {
                $event.reply-to.send(self.mailbox-for-email($event.email));
            }
        }
    }
}
 
method add-mail(MaildirIndexer::Email:D $emailStr:D $mailbox --> Nil{ ... }
method del-path(IO:D $path, Str:D $mailbox --> Nil{ ... }
method mailbox-for-email(MaildirIndexer::Email:D $email --> Mailbox{ ... }