You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

hook_proc_receive.go 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package private
  4. import (
  5. "net/http"
  6. repo_model "code.gitea.io/gitea/models/repo"
  7. gitea_context "code.gitea.io/gitea/modules/context"
  8. "code.gitea.io/gitea/modules/git"
  9. "code.gitea.io/gitea/modules/log"
  10. "code.gitea.io/gitea/modules/private"
  11. "code.gitea.io/gitea/modules/web"
  12. "code.gitea.io/gitea/services/agit"
  13. )
  14. // HookProcReceive proc-receive hook - only handles agit Proc-Receive requests at present
  15. func HookProcReceive(ctx *gitea_context.PrivateContext) {
  16. opts := web.GetForm(ctx).(*private.HookOptions)
  17. if !git.SupportProcReceive {
  18. ctx.Status(http.StatusNotFound)
  19. return
  20. }
  21. results, err := agit.ProcReceive(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, opts)
  22. if err != nil {
  23. if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
  24. ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err.Error())
  25. } else {
  26. log.Error(err.Error())
  27. ctx.JSON(http.StatusInternalServerError, private.Response{
  28. Err: err.Error(),
  29. })
  30. }
  31. return
  32. }
  33. ctx.JSON(http.StatusOK, private.HookProcReceiveResult{
  34. Results: results,
  35. })
  36. }