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