35 lines
		
	
	
		
			776 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			776 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;
 |