aboutsummaryrefslogtreecommitdiff
path: root/models
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-03-19 17:44:46 -0400
committerUnknwon <u@gogs.io>2017-03-19 17:44:46 -0400
commit2807274e2dca1780443bcbbab946b1551c4c88f5 (patch)
tree30c58a2e76e6e1338e8fd8e615d08bcd5b22d5bf /models
parent55a5ad5cdcbe6906f863d0b7f27d1ee500720416 (diff)
repo/webhook: able to retrigger delivery history (#2187)
Diffstat (limited to 'models')
-rw-r--r--models/error.go20
-rw-r--r--models/errors/webhook.go34
-rw-r--r--models/webhook.go22
3 files changed, 53 insertions, 23 deletions
diff --git a/models/error.go b/models/error.go
index 18df15ce..0e327d15 100644
--- a/models/error.go
+++ b/models/error.go
@@ -436,26 +436,6 @@ func (err ErrBranchNotExist) Error() string {
return fmt.Sprintf("branch does not exist [name: %s]", err.Name)
}
-// __ __ ___. .__ __
-// / \ / \ ____\_ |__ | |__ ____ ____ | | __
-// \ \/\/ // __ \| __ \| | \ / _ \ / _ \| |/ /
-// \ /\ ___/| \_\ \ Y ( <_> | <_> ) <
-// \__/\ / \___ >___ /___| /\____/ \____/|__|_ \
-// \/ \/ \/ \/ \/
-
-type ErrWebhookNotExist struct {
- ID int64
-}
-
-func IsErrWebhookNotExist(err error) bool {
- _, ok := err.(ErrWebhookNotExist)
- return ok
-}
-
-func (err ErrWebhookNotExist) Error() string {
- return fmt.Sprintf("webhook does not exist [id: %d]", err.ID)
-}
-
// .___
// | | ______ ________ __ ____
// | |/ ___// ___/ | \_/ __ \
diff --git a/models/errors/webhook.go b/models/errors/webhook.go
new file mode 100644
index 00000000..76cf8cb4
--- /dev/null
+++ b/models/errors/webhook.go
@@ -0,0 +1,34 @@
+// Copyright 2017 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package errors
+
+import "fmt"
+
+type WebhookNotExist struct {
+ ID int64
+}
+
+func IsWebhookNotExist(err error) bool {
+ _, ok := err.(WebhookNotExist)
+ return ok
+}
+
+func (err WebhookNotExist) Error() string {
+ return fmt.Sprintf("webhook does not exist [id: %d]", err.ID)
+}
+
+type HookTaskNotExist struct {
+ HookID int64
+ UUID string
+}
+
+func IsHookTaskNotExist(err error) bool {
+ _, ok := err.(HookTaskNotExist)
+ return ok
+}
+
+func (err HookTaskNotExist) Error() string {
+ return fmt.Sprintf("hook task does not exist [hook_id: %d, uuid: %s]", err.HookID, err.UUID)
+}
diff --git a/models/webhook.go b/models/webhook.go
index ad7a5a3d..19f2ae18 100644
--- a/models/webhook.go
+++ b/models/webhook.go
@@ -21,6 +21,7 @@ import (
api "github.com/gogits/go-gogs-client"
+ "github.com/gogits/gogs/models/errors"
"github.com/gogits/gogs/modules/httplib"
"github.com/gogits/gogs/modules/setting"
"github.com/gogits/gogs/modules/sync"
@@ -241,7 +242,7 @@ func getWebhook(bean *Webhook) (*Webhook, error) {
if err != nil {
return nil, err
} else if !has {
- return nil, ErrWebhookNotExist{bean.ID}
+ return nil, errors.WebhookNotExist{bean.ID}
}
return bean, nil
}
@@ -494,6 +495,21 @@ func createHookTask(e Engine, t *HookTask) error {
return err
}
+// GetHookTaskOfWebhookByUUID returns hook task of given webhook by UUID.
+func GetHookTaskOfWebhookByUUID(webhookID int64, uuid string) (*HookTask, error) {
+ hookTask := &HookTask{
+ HookID: webhookID,
+ UUID: uuid,
+ }
+ has, err := x.Get(hookTask)
+ if err != nil {
+ return nil, err
+ } else if !has {
+ return nil, errors.HookTaskNotExist{webhookID, uuid}
+ }
+ return hookTask, nil
+}
+
// UpdateHookTask updates information of hook task.
func UpdateHookTask(t *HookTask) error {
_, err := x.Id(t.ID).AllCols().Update(t)
@@ -704,7 +720,7 @@ func (t *HookTask) deliver() {
// TODO: shoot more hooks at same time.
func DeliverHooks() {
tasks := make([]*HookTask, 0, 10)
- x.Where("is_delivered=?", false).Iterate(new(HookTask),
+ x.Where("is_delivered = ?", false).Iterate(new(HookTask),
func(idx int, bean interface{}) error {
t := bean.(*HookTask)
t.deliver()
@@ -725,7 +741,7 @@ func DeliverHooks() {
HookQueue.Remove(repoID)
tasks = make([]*HookTask, 0, 5)
- if err := x.Where("repo_id=? AND is_delivered=?", repoID, false).Find(&tasks); err != nil {
+ if err := x.Where("repo_id = ?", repoID).And("is_delivered = ?", false).Find(&tasks); err != nil {
log.Error(4, "Get repository [%s] hook tasks: %v", repoID, err)
continue
}