@ -197,8 +197,8 @@ func getWebhook(bean *Webhook) (*Webhook, error) {
return bean , nil
}
// GetWebhookByRepo ID returns webhook of repository by given ID.
func GetWebhookByRepo ID ( repoID , id int64 ) ( * Webhook , error ) {
// GetWebhookOfRepoBy ID returns webhook of repository by given ID.
func GetWebhookOfRepoBy ID ( repoID , id int64 ) ( * Webhook , error ) {
return getWebhook ( & Webhook {
ID : id ,
RepoID : repoID ,
@ -433,29 +433,14 @@ func UpdateHookTask(t *HookTask) error {
return err
}
// PrepareWebhooks adds new webhooks to task queue for given payload.
func PrepareWebhooks ( repo * Repository , event HookEventType , p api . Payloader ) error {
ws , err := GetActiveWebhooksByRepoID ( repo . ID )
if err != nil {
return fmt . Errorf ( "GetActiveWebhooksByRepoID: %v" , err )
}
// check if repo belongs to org and append additional webhooks
if repo . MustOwner ( ) . IsOrganization ( ) {
// get hooks for org
orgws , err := GetActiveWebhooksByOrgID ( repo . OwnerID )
if err != nil {
return fmt . Errorf ( "GetActiveWebhooksByOrgID: %v" , err )
}
ws = append ( ws , orgws ... )
}
if len ( ws ) == 0 {
// prepareWebhooks adds list of webhooks to task queue.
func prepareWebhooks ( repo * Repository , event HookEventType , p api . Payloader , webhooks [ ] * Webhook ) ( err error ) {
if len ( webhooks ) == 0 {
return nil
}
var payloader api . Payloader
for _ , w := range ws {
for _ , w := range webhooks {
switch event {
case HOOK_EVENT_CREATE :
if ! w . HasCreateEvent ( ) {
@ -504,6 +489,34 @@ func PrepareWebhooks(repo *Repository, event HookEventType, p api.Payloader) err
return nil
}
// PrepareWebhooks adds all active webhooks to task queue.
func PrepareWebhooks ( repo * Repository , event HookEventType , p api . Payloader ) error {
webhooks , err := GetActiveWebhooksByRepoID ( repo . ID )
if err != nil {
return fmt . Errorf ( "GetActiveWebhooksByRepoID [%d]: %v" , repo . ID , err )
}
// check if repo belongs to org and append additional webhooks
if repo . MustOwner ( ) . IsOrganization ( ) {
// get hooks for org
orgws , err := GetActiveWebhooksByOrgID ( repo . OwnerID )
if err != nil {
return fmt . Errorf ( "GetActiveWebhooksByOrgID [%d]: %v" , repo . OwnerID , err )
}
webhooks = append ( webhooks , orgws ... )
}
return prepareWebhooks ( repo , event , p , webhooks )
}
// TestWebhook adds the test webhook matches the ID to task queue.
func TestWebhook ( repo * Repository , event HookEventType , p api . Payloader , webhookID int64 ) error {
webhook , err := GetWebhookOfRepoByID ( repo . ID , webhookID )
if err != nil {
return fmt . Errorf ( "GetWebhookOfRepoByID [repo_id: %d, id: %d]: %v" , repo . ID , webhookID , err )
}
return prepareWebhooks ( repo , event , p , [ ] * Webhook { webhook } )
}
func ( t * HookTask ) deliver ( ) {
t . IsDelivered = true
@ -541,7 +554,7 @@ func (t *HookTask) deliver() {
}
// Update webhook last delivery status.
w , err := GetWebhookByRepo ID ( t . RepoID , t . HookID )
w , err := GetWebhookOfRepoBy ID ( t . RepoID , t . HookID )
if err != nil {
log . Error ( 5 , "GetWebhookByID: %v" , err )
return