summaryrefslogtreecommitdiffstats
path: root/modules/private/hook.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/private/hook.go')
-rw-r--r--modules/private/hook.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/modules/private/hook.go b/modules/private/hook.go
index 9596f5f4da..4d0b5d22bf 100644
--- a/modules/private/hook.go
+++ b/modules/private/hook.go
@@ -6,6 +6,7 @@ package private
import (
"context"
+ "errors"
"fmt"
"net/http"
"net/url"
@@ -56,6 +57,7 @@ type HookOptions struct {
GitPushOptions GitPushOptions
PullRequestID int64
IsDeployKey bool
+ IsWiki bool
}
// SSHLogOption ssh log options
@@ -79,6 +81,23 @@ type HookPostReceiveBranchResult struct {
URL string
}
+// HockProcReceiveResult represents an individual result from ProcReceive
+type HockProcReceiveResult struct {
+ Results []HockProcReceiveRefResult
+ Err string
+}
+
+// HockProcReceiveRefResult represents an individual result from ProcReceive
+type HockProcReceiveRefResult struct {
+ OldOID string
+ NewOID string
+ Ref string
+ OriginalRef string
+ IsForcePush bool
+ IsNotMatched bool
+ Err string
+}
+
// HookPreReceive check whether the provided commits are allowed
func HookPreReceive(ctx context.Context, ownerName, repoName string, opts HookOptions) (int, string) {
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/hook/pre-receive/%s/%s",
@@ -130,6 +149,33 @@ func HookPostReceive(ctx context.Context, ownerName, repoName string, opts HookO
return res, ""
}
+// HookProcReceive proc-receive hook
+func HookProcReceive(ctx context.Context, ownerName, repoName string, opts HookOptions) (*HockProcReceiveResult, error) {
+ reqURL := setting.LocalURL + fmt.Sprintf("api/internal/hook/proc-receive/%s/%s",
+ url.PathEscape(ownerName),
+ url.PathEscape(repoName),
+ )
+
+ req := newInternalRequest(ctx, reqURL, "POST")
+ req = req.Header("Content-Type", "application/json")
+ req.SetTimeout(60*time.Second, time.Duration(60+len(opts.OldCommitIDs))*time.Second)
+ jsonBytes, _ := json.Marshal(opts)
+ req.Body(jsonBytes)
+ resp, err := req.Response()
+ if err != nil {
+ return nil, fmt.Errorf("Unable to contact gitea: %v", err.Error())
+ }
+ defer resp.Body.Close()
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, errors.New(decodeJSONError(resp).Err)
+ }
+ res := &HockProcReceiveResult{}
+ _ = json.NewDecoder(resp.Body).Decode(res)
+
+ return res, nil
+}
+
// SetDefaultBranch will set the default branch to the provided branch for the provided repository
func SetDefaultBranch(ctx context.Context, ownerName, repoName, branch string) error {
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/hook/set-default-branch/%s/%s/%s",