aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima/Message.pm
blob: 9d8ef6188a3d7cb711d5cc930053fb730d063c8c (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
42
43
44
45
46
package Sietima::Message; 
use Moo;
use Sietima::Policy;
use Types::Standard qw(ArrayRef Object);
use Sietima::Types qw(Address AddressFromStr
                      Subscriber SubscriberFromAddress SubscriberFromStr
                      EmailMIME);
use Email::Address;
use Sietima::Subscriber;
use Email::MIME;
use namespace::clean;
 
has mail => (
    is => 'ro',
    isa => EmailMIME,
    required => 1,
);
 
has from => (
    is => 'ro',
    isa => Address,
    coerce => AddressFromStr,
    required => 1,
);
 
my $subscriber_array = ArrayRef[
    Subscriber->plus_coercions(
        SubscriberFromStr,
        SubscriberFromAddress,
    )
];
has to => (
    isa => $subscriber_array,
    is => 'ro',
    coerce => $subscriber_array->coercion,
    required => 1,
);
 
sub envelope ($self) {
    return {
        from => $self->from,
        to => [ map { $_->address } $self->to->@* ],
    }
}
 
1;