diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-05-04 13:42:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-04 13:42:02 +0800 |
commit | 1773e88643a2df7e7efbe86ec424409b45a4d576 (patch) | |
tree | 66776994b960b1277264fd4e7d74ce3380701488 /routers/private | |
parent | 59f5bbab0d6c1aa00fd58140860093331ab0140f (diff) | |
download | gitea-1773e88643a2df7e7efbe86ec424409b45a4d576.tar.gz gitea-1773e88643a2df7e7efbe86ec424409b45a4d576.zip |
Drop db operations from hook commands (#1514)
* move all database operations from hook command to web command and instead of internal routes
* bug fixed
* adjust the import path sequences
* remove unused return value on hookSetup
Diffstat (limited to 'routers/private')
-rw-r--r-- | routers/private/branch.go | 30 | ||||
-rw-r--r-- | routers/private/internal.go | 3 | ||||
-rw-r--r-- | routers/private/push_update.go | 60 |
3 files changed, 93 insertions, 0 deletions
diff --git a/routers/private/branch.go b/routers/private/branch.go new file mode 100644 index 0000000000..e74087950e --- /dev/null +++ b/routers/private/branch.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Gitea 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 private + +import ( + "code.gitea.io/gitea/models" + + macaron "gopkg.in/macaron.v1" +) + +// GetProtectedBranchBy get protected branch information +func GetProtectedBranchBy(ctx *macaron.Context) { + repoID := ctx.ParamsInt64(":id") + branchName := ctx.Params(":branch") + protectBranch, err := models.GetProtectedBranchBy(repoID, branchName) + if err != nil { + ctx.JSON(500, map[string]interface{}{ + "err": err.Error(), + }) + return + } else if protectBranch != nil { + ctx.JSON(200, protectBranch) + } else { + ctx.JSON(200, &models.ProtectedBranch{ + CanPush: true, + }) + } +} diff --git a/routers/private/internal.go b/routers/private/internal.go index d662aa2c76..f663306e92 100644 --- a/routers/private/internal.go +++ b/routers/private/internal.go @@ -10,6 +10,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/setting" + macaron "gopkg.in/macaron.v1" ) @@ -40,5 +41,7 @@ func UpdatePublicKey(ctx *macaron.Context) { func RegisterRoutes(m *macaron.Macaron) { m.Group("/", func() { m.Post("/ssh/:id/update", UpdatePublicKey) + m.Post("/push/update", PushUpdate) + m.Get("/branch/:id/:branch", GetProtectedBranchBy) }, CheckInternalToken) } diff --git a/routers/private/push_update.go b/routers/private/push_update.go new file mode 100644 index 0000000000..3008ef0e7a --- /dev/null +++ b/routers/private/push_update.go @@ -0,0 +1,60 @@ +// Copyright 2017 The Gitea 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 private + +import ( + "encoding/json" + "strings" + + "code.gitea.io/git" + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/log" + + macaron "gopkg.in/macaron.v1" +) + +// PushUpdate update public key updates +func PushUpdate(ctx *macaron.Context) { + var opt models.PushUpdateOptions + if err := json.NewDecoder(ctx.Req.Request.Body).Decode(&opt); err != nil { + ctx.JSON(500, map[string]interface{}{ + "err": err.Error(), + }) + return + } + + branch := strings.TrimPrefix(opt.RefFullName, git.BranchPrefix) + if len(branch) == 0 || opt.PusherID <= 0 { + ctx.Error(404) + log.Trace("PushUpdate: branch or secret is empty, or pusher ID is not valid") + return + } + + repo, err := models.PushUpdate(opt) + if err != nil { + ctx.JSON(500, map[string]interface{}{ + "err": err.Error(), + }) + return + } + + pusher, err := models.GetUserByID(opt.PusherID) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.Error(404) + } else { + ctx.JSON(500, map[string]interface{}{ + "err": err.Error(), + }) + } + return + } + + log.Trace("TriggerTask '%s/%s' by %s", repo.Name, branch, pusher.Name) + + go models.HookQueue.Add(repo.ID) + go models.AddTestPullRequestTask(pusher, repo.ID, branch, true) + ctx.Status(202) +} |