diff options
-rw-r--r-- | lib/Sietima.pm | 5 | ||||
-rw-r--r-- | lib/Sietima/Message.pm | 45 | ||||
-rw-r--r-- | t/lib/Test/Sietima.pm | 2 |
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 $_; } }; }; |