Skip to content

Commit 9a334a9

Browse files
committed
Simplify internal _fields_for interface
Now that we pass all the params we got, we can figure out what we support and where to look up the details.
1 parent d7e034e commit 9a334a9

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

lib/OpenSMTPd/Filter.pm

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,7 @@ sub _handle_report {
222222
my $suffix = delete $report{suffix};
223223

224224
my %params;
225-
my @fields = $self->_report_fields_for( @report{qw< subsystem event >},
226-
\%report );
225+
my @fields = $self->_fields_for( report => \%report );
227226
@params{@fields} = split /\|/, $suffix, @fields
228227
if @fields;
229228
@@ -280,8 +279,7 @@ sub _handle_filter {
280279
$_ = defined $_ ? "'$_'" : "undef" for $subsystem, $phase, $session_id;
281280
282281
my %params;
283-
my @fields = $self->_filter_fields_for( @filter{qw< subsystem phase >},
284-
\%filter );
282+
my @fields = $self->_fields_for( filter => \%filter );
285283
@params{@fields} = split /\|/, $suffix, @fields
286284
if defined $suffix and @fields;
287285

@@ -373,11 +371,14 @@ sub _handle_filter_data_line {
373371
return $filter;
374372
}
375373

376-
sub _report_fields_for { shift->_fields_for( report => \%report_events, @_ ) }
377-
sub _filter_fields_for { shift->_fields_for( filter => \%filter_events, @_ ) }
378-
379374
sub _fields_for {
380-
my ( $self, $type, $map, $subsystem, $item, $params ) = @_;
375+
my ( $self, $type, $params ) = @_;
376+
377+
my $subsystem = $params->{subsystem};
378+
my ($item, $map) =
379+
$type eq 'report' ? ( $params->{event} => \%report_events )
380+
: $type eq 'filter' ? ( $params->{phase} => \%filter_events )
381+
: croak "Unknown field type: $type";
381382

382383
if ( $subsystem and $item and my $items = $map->{$subsystem} ) {
383384
if ( my $fields = $items->{$item} ) {

0 commit comments

Comments
 (0)