Splunklib
view release on metacpan or search on metacpan
lib/Splunklib/Intersplunk.pm view on Meta::CPAN
# Expand the value of __mv_[key] to a list, store it in key, and delete __mv_[key]
my $vals = [];
if (decodeMV($result->[$lookup->{$mv_key}], $vals)) {
#$result{$key} = $vals;
#if (@{$result{$key}} == 1) {
#$result{$key} = $result{$key}->[0];
#}
#delete $result{$mv_key};
# XXX: todo
}
}
}
push @$results, $result;
}
return [ $results, $header, $lookup ];
}
sub isGetInfo {
my ($args) = @_;
if (@$args >= 1 && $args->[0] eq '__GETINFO__') {
shift @$args; # Strip it
return 1;
}
elsif (@$args >= 1 && $args->[0] eq '__EXECUTE__') {
shift @$args; # Strip it
return 0;
}
else {
# XXX: error handling
exit(0);
}
return 0;
}
sub outputGetInfo {
my ($settings, $stdout) = @_;
# Below is the correct field order to use.
# We currently don't follow on the output, but it seems to be ok.
$settings ||= {
changes_colorder => 1,
clear_required_fields => 0,
enableheader => 1,
generating => 0,
local => 0,
maxinputs => 0,
needs_empty_results => 1,
outputheader => 1,
overrides_timeorder => 0,
passauth => 0,
perf_warn_limit => 0,
required_fields => '',
requires_srinfo => 0,
retainsevents => 1,
run_in_preview => 1,
stderr_dest => 'log',
streaming => 1,
supports_multivalues => 1,
supports_rawargs => 1,
__mv_changes_colorder => '',
__mv_clear_required_fields => '',
__mv_enableheader => '',
__mv_generating => '',
__mv_local => '',
__mv_maxinputs => '',
__mv_needs_empty_results => '',
__mv_outputheader => '',
__mv_overrides_timeorder => '',
__mv_passauth => '',
__mv_perf_warn_limit => '',
__mv_required_fields => '',
__mv_requires_srinfo => '',
__mv_retainsevents => '',
__mv_run_in_preview => '',
__mv_stderr_dest => '',
__mv_streaming => '',
__mv_supports_multivalues => '',
__mv_supports_rawargs => '',
};
my $header = '';
my $values = '';
for my $k (sort { $a cmp $b } keys %$settings) {
$header .= "$k,";
$values .= $settings->{$k}.",";
}
$header =~ s/,$//;
$values =~ s/,$//;
print $stdout "\r\n";
print $stdout "$header\r\n";
print $stdout "$values\r\n";
return 1;
}
sub outputResults {
my ($ary, $messages, $fields, $mvdelim, $stdout) = @_;
$mvdelim ||= '\n';
my $results = $ary->[0];
my $header = $ary->[1];
my $lookup = $ary->[2];
#
# Example message header
#
# $messages = {
# streaming_preop' => '0',
# streaming' => '0',
# generating' => '0',
# retainsevents' => '0',
# requires_preop' => '0',
# generates_timeorder' => '0',
# overrides_timeorder' => '0',
# clear_required_fields' => '0',
# };
if (defined($messages)) {
# message header is everything before the first empty line, similar to the input
# header format. also key = value, with stripping of whitespace
for my $level (sort { $a <=> $b } keys %$messages) {
print $stdout $level."=".$messages->{$level}."\r\n";
}
print $stdout "\r\n";
}
if (@$results == 0) {
return;
}
my $s = {};
my $l = [];
# Check each entry to see if it is a list (multivalued).
# If so, set the multivalued key to the proper encoding.
# Replace the list with a newline separated string of the values.
for my $result (@$results) {
#for my $key (keys %$result) {
for my $key (@$result) {
# XXX: todo
#if (ref($result->{$key}) eq 'ARRAY') {
#$result->{"__mv_$key"} = getEncodedMV($result->{$key});
#$result->{$key} = join($mvdelim, @{$result->{$key}});
#}
#if (! exists($s->{$key})) {
#$s->{$key} = 1;
#push @$l, $key;
#}
}
}
my $h;
if (! $fields) {
$h = $header;
}
else {
$h = $fields;
}
_csv_writer($ary, $stdout);
return 1;
}
1;
__END__
=head1 NAME
( run in 1.006 second using v1.01-cache-2.11-cpan-df04353d9ac )