diff options
Diffstat (limited to 'lib/Sietima/Role/WithPostAddress.pm')
-rw-r--r-- | lib/Sietima/Role/WithPostAddress.pm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/Sietima/Role/WithPostAddress.pm b/lib/Sietima/Role/WithPostAddress.pm new file mode 100644 index 0000000..79507ab --- /dev/null +++ b/lib/Sietima/Role/WithPostAddress.pm @@ -0,0 +1,52 @@ +package Sietima::Role::WithPostAddress; +use Moo::Role; +use Sietima::Policy; +use Sietima::Types qw(Address AddressFromStr); +use namespace::clean; + +=head1 NAME + +Sietima::Role::WithPostAddress - role for lists with a posting address + +=head1 SYNOPSIS + + my $sietima = Sietima->with_traits('WithPostAddress')->new({ + %args, + return_path => 'list-bounce@example.com', + post_address => 'list@example.com', + }); + +=head1 DESCRIPTION + +This role adds an L<< /C<post_address> >> attribute, and exposes it +via the L<< C<list_addresses>|Sietima/list_addresses >> method. + +On its own, this role is not very useful, but other roles (like L<< +C<ReplyTo>|Sietima::Role::ReplyTo >>) can have uses for a post +address. + +=head1 ATTRIBUTES + +=head2 C<post_address> + +An L<< C<Email::Address> >> object, defaults to the value of the L<< +C<return_path>|Sietima/return_path >> attribute. This is the address +that the mailing list receives messages at. + +=cut + +has post_address => ( + is => 'lazy', + isa => Address, + coerce => AddressFromStr, +); +sub _build_post_address($self) { $self->return_path } + +around list_addresses => sub($orig,$self) { + return +{ + $self->$orig->%*, + post => $self->post_address, + }; +}; + +1; |