func TriggerTask(ctx *context.Context) { pusherID := ctx.QueryInt64("pusher") branch := ctx.Query("branch") secret := ctx.Query("secret") if len(branch) == 0 || len(secret) == 0 || pusherID <= 0 { ctx.Error(404) log.Trace("TriggerTask: branch or secret is empty, or pusher ID is not valid") return } owner, repo := parseOwnerAndRepo(ctx) if ctx.Written() { return } if secret != base.EncodeMD5(owner.Salt) { ctx.Error(404) log.Trace("TriggerTask [%s/%s]: invalid secret", owner.Name, repo.Name) return } pusher, err := models.GetUserByID(pusherID) if err != nil { if models.IsErrUserNotExist(err) { ctx.Error(404) } else { ctx.Handle(500, "GetUserByID", err) } 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) }
func RemoveUploadFileFromServer(ctx *context.Context, form auth.RemoveUploadFileForm) { if len(form.File) == 0 { ctx.Status(204) return } if err := models.DeleteUploadByUUID(form.File); err != nil { ctx.Error(500, fmt.Sprintf("DeleteUploadByUUID: %v", err)) return } log.Trace("Upload file removed: %s", form.File) ctx.Status(204) }
func TestWebhook(ctx *context.Context) { // Grab latest commit or fake one if it's empty repository. commit := ctx.Repo.Commit if commit == nil { ghost := models.NewGhostUser() commit = &git.Commit{ ID: git.MustIDFromString(git.EMPTY_SHA), Author: ghost.NewGitSig(), Committer: ghost.NewGitSig(), CommitMessage: "This is a fake commit", } } apiUser := ctx.User.APIFormat() p := &api.PushPayload{ Ref: git.BRANCH_PREFIX + ctx.Repo.Repository.DefaultBranch, Before: commit.ID.String(), After: commit.ID.String(), Commits: []*api.PayloadCommit{ { ID: commit.ID.String(), Message: commit.Message(), URL: ctx.Repo.Repository.HTMLURL() + "/commit/" + commit.ID.String(), Author: &api.PayloadUser{ Name: commit.Author.Name, Email: commit.Author.Email, }, Committer: &api.PayloadUser{ Name: commit.Committer.Name, Email: commit.Committer.Email, }, }, }, Repo: ctx.Repo.Repository.APIFormat(nil), Pusher: apiUser, Sender: apiUser, } if err := models.PrepareWebhooks(ctx.Repo.Repository, models.HOOK_EVENT_PUSH, p); err != nil { ctx.Flash.Error("PrepareWebhooks: " + err.Error()) ctx.Status(500) } else { go models.HookQueue.Add(ctx.Repo.Repository.ID) ctx.Flash.Info(ctx.Tr("repo.settings.webhook.test_delivery_success")) ctx.Status(200) } }
func DeleteNotices(ctx *context.Context) { strs := ctx.QueryStrings("ids[]") ids := make([]int64, 0, len(strs)) for i := range strs { id := com.StrTo(strs[i]).MustInt64() if id > 0 { ids = append(ids, id) } } if err := models.DeleteNoticesByIDs(ids); err != nil { ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error()) ctx.Status(500) } else { ctx.Flash.Success(ctx.Tr("admin.notices.delete_success")) ctx.Status(200) } }
func TestWebhook(ctx *context.Context) { p := &api.PushPayload{ Ref: git.BRANCH_PREFIX + ctx.Repo.Repository.DefaultBranch, Before: ctx.Repo.CommitID, After: ctx.Repo.CommitID, Commits: []*api.PayloadCommit{ { ID: ctx.Repo.CommitID, Message: ctx.Repo.Commit.Message(), URL: ctx.Repo.Repository.FullLink() + "/commit/" + ctx.Repo.CommitID, Author: &api.PayloadAuthor{ Name: ctx.Repo.Commit.Author.Name, Email: ctx.Repo.Commit.Author.Email, }, Committer: &api.PayloadCommitter{ Name: ctx.Repo.Commit.Committer.Name, Email: ctx.Repo.Commit.Committer.Email, }, }, }, Repo: ctx.Repo.Repository.ComposePayload(), Pusher: &api.PayloadAuthor{ Name: ctx.User.Name, Email: ctx.User.Email, UserName: ctx.User.Name, }, Sender: &api.PayloadUser{ UserName: ctx.User.Name, ID: ctx.User.ID, AvatarUrl: ctx.User.AvatarLink(), }, } if err := models.PrepareWebhooks(ctx.Repo.Repository, models.HOOK_EVENT_PUSH, p); err != nil { ctx.Flash.Error("PrepareWebhooks: " + err.Error()) ctx.Status(500) } else { go models.HookQueue.Add(ctx.Repo.Repository.ID) ctx.Flash.Info(ctx.Tr("repo.settings.webhook.test_delivery_success")) ctx.Status(200) } }
func DeleteComment(ctx *context.Context) { comment, err := models.GetCommentByID(ctx.ParamsInt64(":id")) if err != nil { ctx.NotFoundOrServerError("GetCommentByID", models.IsErrCommentNotExist, err) return } if !ctx.IsSigned || (ctx.User.ID != comment.PosterID && !ctx.Repo.IsAdmin()) { ctx.Error(403) return } else if comment.Type != models.COMMENT_TYPE_COMMENT { ctx.Error(204) return } if err = models.DeleteCommentByID(comment.ID); err != nil { ctx.Handle(500, "DeleteCommentByID", err) return } ctx.Status(200) }
func TriggerTask(ctx *context.Context) { branch := ctx.Query("branch") secret := ctx.Query("secret") if len(branch) == 0 || len(secret) == 0 { ctx.Error(404) log.Trace("TriggerTask: branch or secret is empty") return } owner, repo := parseOwnerAndRepo(ctx) if ctx.Written() { return } if secret != base.EncodeMD5(owner.Salt) { ctx.Error(404) log.Trace("TriggerTask [%s/%s]: invalid secret", owner.Name, repo.Name) return } log.Trace("TriggerTask [%d].(new request): %s", repo.ID, branch) go models.HookQueue.Add(repo.ID) go models.AddTestPullRequestTask(repo.ID, branch) ctx.Status(202) }