enhancing etc/post-commit.in with webhooks trigger
This commit is contained in:
parent
f4139e5d29
commit
ac049e7590
@ -15,6 +15,7 @@ use Net::LDAP;
|
||||
use Net::LDAP qw(LDAP_SUCCESS);
|
||||
use URI;
|
||||
use Mail::Sendmail;
|
||||
use LWP::UserAgent;
|
||||
|
||||
my $CFG_FILE = '@CFGDIR@/codepot.ini';
|
||||
my $REPOFS = $ARGV[0];
|
||||
@ -445,6 +446,48 @@ sub format_commit_url
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
sub trigger_webhooks
|
||||
{
|
||||
my ($cfg, $dbh, $prefix, $projectid) = @_;
|
||||
|
||||
my $query = $dbh->prepare("SELECT ${QC}webhooks${QC} FROM ${QC}${prefix}project${QC} WHERE ${QC}projectid${QC}=?");
|
||||
if (!$query || !$query->execute($projectid))
|
||||
{
|
||||
if ($query) { $query->finish (); }
|
||||
return (-1, $dbh->errstr());
|
||||
}
|
||||
|
||||
my $webhooks = '';
|
||||
if (my @row = $query->fetchrow_array())
|
||||
{
|
||||
$webhooks = $row[0];
|
||||
}
|
||||
|
||||
my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 });
|
||||
$ua->timeout (5);
|
||||
foreach my $webhook (split(/\n/ ,$webhooks))
|
||||
{
|
||||
$webhook =~ s/^\s+|\s+$//g;
|
||||
if ($webhook ne '')
|
||||
{
|
||||
## TODO: some formatting on webhook?
|
||||
my $res = $ua->get($webhook);
|
||||
if ($res->is_success)
|
||||
{
|
||||
print "$res->decoded_content\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "$res->status_line\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$query->finish ();
|
||||
return (0, undef);
|
||||
}
|
||||
|
||||
#------------------------------------------------------------
|
||||
# MAIN
|
||||
#------------------------------------------------------------
|
||||
@ -499,6 +542,8 @@ if (lc($cfg->{commit_notification}) eq 'yes')
|
||||
email_message_to_project_members ($cfg, $dbh, $cfg->{database_prefix}, $REPOBASE, $commit_subject, $commit_message);
|
||||
}
|
||||
|
||||
trigger_webhooks ($cfg, $dbh, $cfg->{database_prefix}, $REPOBASE);
|
||||
|
||||
close_database ($dbh);
|
||||
|
||||
exit (0);
|
||||
|
Loading…
Reference in New Issue
Block a user