in lib/Search/Elasticsearch/Client/8_0/Role/Bulk.pm [125:174]
sub _encode_action {
#===================================
my $self = shift;
my $action = shift || '';
my $orig = shift;
throw( 'Param', "Unrecognised action <$action>" )
unless $Actions{$action};
throw( 'Param', "Missing <params> for action <$action>" )
unless ref($orig) eq 'HASH';
my %metadata;
my $params = {%$orig};
my $serializer = $self->_serializer;
my $meta_params = $self->_metadata_params;
for ( keys %$meta_params ) {
next unless exists $params->{$_};
$metadata{ $meta_params->{$_} } = delete $params->{$_};
}
for ( @{ $self->_required_params } ) {
throw( 'Param', "Missing required param <$_>" )
unless $metadata{"_$_"} || $self->_bulk_args->{$_};
}
my $source;
if ( $action eq 'update' ) {
for ( @{ $self->_update_params } ) {
$source->{$_} = delete $params->{$_}
if exists $params->{$_};
}
}
elsif ( $action ne 'delete' ) {
$source = delete $params->{source}
|| throw( 'Param',
"Missing <source> for action <$action>: "
. $serializer->encode($orig) );
}
throw( "Unknown params <"
. ( join ',', sort keys %$params )
. "> in <$action>: "
. $serializer->encode($orig) )
if keys %$params;
return map { $serializer->encode($_) }
grep {$_} ( { $action => \%metadata }, $source );
}