aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-06-21 15:16:19 +0100
committerdakkar <dakkar@thenautilus.net>2016-06-21 15:16:19 +0100
commit677ea06663c91dc111a83157e289bc557a0d23fe (patch)
treef9b02e1ff9af7ef0e2f3d9c1d10bd18835ec73f4
parentSubjectTag role (diff)
downloadSietima-677ea06663c91dc111a83157e289bc557a0d23fe.tar.gz
Sietima-677ea06663c91dc111a83157e289bc557a0d23fe.tar.bz2
Sietima-677ea06663c91dc111a83157e289bc557a0d23fe.zip
Sietima::Message has subscribers as recipients
this way it's going to be easier to manipulate messages based on subscribers
-rw-r--r--lib/Sietima.pm5
-rw-r--r--lib/Sietima/Message.pm45
-rw-r--r--t/lib/Test/Sietima.pm2
3 files changed, 17 insertions, 35 deletions
diff --git a/lib/Sietima.pm b/lib/Sietima.pm
index 48b90c5..79042fa 100644
--- a/lib/Sietima.pm
+++ b/lib/Sietima.pm
@@ -68,10 +68,7 @@ sub munge_mail {
return Sietima::Message->new({
mail => $incoming_mail,
from => $self->return_path,
- to => [
- map { $_->address }
- $self->subscribers_to_send_to($incoming_mail)->@*
- ],
+ to => $self->subscribers_to_send_to($incoming_mail),
});
}
diff --git a/lib/Sietima/Message.pm b/lib/Sietima/Message.pm
index 89e2fa5..afe2ca9 100644
--- a/lib/Sietima/Message.pm
+++ b/lib/Sietima/Message.pm
@@ -2,7 +2,11 @@ package Sietima::Message;
use 5.024;
use Moo;
use Types::Standard qw(ArrayRef Object);
-use Sietima::Types qw(Address AddressFromStr EmailMIME);
+use Sietima::Types qw(Address AddressFromStr
+ Subscriber SubscriberFromAddress SubscriberFromStr
+ EmailMIME);
+use Email::Address;
+use Sietima::Subscriber;
use Email::MIME;
use namespace::clean;
@@ -19,44 +23,25 @@ has from => (
required => 1,
);
-my $address_array = ArrayRef[Address->plus_coercions(AddressFromStr)];
+my $subscriber_array = ArrayRef[
+ Subscriber->plus_coercions(
+ SubscriberFromStr,
+ SubscriberFromAddress,
+ )
+];
has to => (
- isa => $address_array,
+ isa => $subscriber_array,
is => 'ro',
- coerce => $address_array->coercion,
+ coerce => $subscriber_array->coercion,
required => 1,
);
-sub _clone_address {
- Email::Address->new(
- $_[0]->phrase,
- $_[0]->address,
- $_[0]->comment,
- $_[0]->original,
- );
-}
-
-sub _clone_mail {
- Email::MIME->new($_[0]->as_string);
-}
-
-sub clone {
- my ($self,$args) = @_;
-
- return ref($self)->new({
- from => $args->{from} || _clone_address($self->from),
- to => $args->{to} || [ map { _clone_address($_) } $self->to->@* ],
- mail => $args->{mail} || _clone_mail($self->mail),
- });
-}
-
sub envelope {
my ($self) = @_;
return {
- map {
- $_ => $self->$_,
- } qw(from to),
+ from => $self->from,
+ to => [ map { $_->address } $self->to->@* ],
}
}
diff --git a/t/lib/Test/Sietima.pm b/t/lib/Test/Sietima.pm
index 115a1e6..867fd5a 100644
--- a/t/lib/Test/Sietima.pm
+++ b/t/lib/Test/Sietima.pm
@@ -92,7 +92,7 @@ sub deliveries_are {
field from => $args{from}||$return_path;
field to => bag {
for (@recipients) {
- item object { call address => $_ };
+ item $_;
}
};
};