35 lines
777 B
Perl
35 lines
777 B
Perl
package App::Netdisco::Util::Worker;
|
||
|
||
use Dancer ':syntax';
|
||
use App::Netdisco::JobQueue 'jq_insert';
|
||
|
||
use Encode 'encode';
|
||
use MIME::Base64 'encode_base64';
|
||
|
||
use Storable 'dclone';
|
||
use Data::Visitor::Tiny;
|
||
|
||
use base 'Exporter';
|
||
our @EXPORT = ('queue_hook');
|
||
|
||
sub queue_hook {
|
||
my ($hook, $conf) = @_;
|
||
my $extra = { action_conf => dclone ($conf->{'with'} || {}),
|
||
event_data => dclone (vars->{'hook_data'} || {}) };
|
||
|
||
# remove scalar references which to_json cannot handle
|
||
visit( $extra->{'event_data'}, sub {
|
||
my ($key, $valueref) = @_;
|
||
$$valueref = '' if ref $$valueref eq 'SCALAR';
|
||
});
|
||
|
||
jq_insert({
|
||
action => ('hook::'. lc($conf->{'type'})),
|
||
extra => encode_base64( encode('UTF-8', to_json( $extra )) ),
|
||
});
|
||
|
||
return 1;
|
||
}
|
||
|
||
true;
|