diff --git a/lib/Hush/List.pm b/lib/Hush/List.pm index 652edcf..c7c4734 100644 --- a/lib/Hush/List.pm +++ b/lib/Hush/List.pm @@ -40,8 +40,34 @@ sub new { sub new_list { my ($self,$name) = @_; my $lists = $self->{lists}; - die "Hush list $name already exists" if $lists->{$name}; - $lists->{$name}++; + # a list is simply a list of addresses, which can be looked up by name, and maybe some other metadata + $lists->{$name} = { recipients => {} }; + return $self; +} + +sub add_zaddr { + my ($self,$name,$zaddr) = @_; + die "Invalid zaddr=$zaddr" unless $zaddr; + + my $lists = $self->{lists}; + my $list = $lists->{$name}; + + die "Hush list $list does not exist" unless $list; + $list->{recipients}->{$zaddr}++; + return $self; +} + +sub remove_zaddr { + my ($self,$name,$zaddr) = @_; + die "Invalid zaddr=$zaddr" unless $zaddr; + + my $lists = $self->{lists}; + my $list = $lists->{$name}; + + die "Hush list $list does not exist" unless $list; + + delete $list->{recipients}->{$zaddr}; + return $self; }