diff --git a/internal/api/gitea.go b/internal/api/gitea.go index 26be426..1b7d1ab 100644 --- a/internal/api/gitea.go +++ b/internal/api/gitea.go @@ -17,9 +17,7 @@ type GiteaWebhookHandler struct { sqSdk sqSdk.SonarQubeSdkInterface } -func (h *GiteaWebhookHandler) Handle(rw http.ResponseWriter, r *http.Request) { - rw.Header().Set("Content-Type", "application/json") - +func (h *GiteaWebhookHandler) parseBody(rw http.ResponseWriter, r *http.Request) ([]byte, error) { if r.Body != nil { defer r.Body.Close() } @@ -30,6 +28,29 @@ func (h *GiteaWebhookHandler) Handle(rw http.ResponseWriter, r *http.Request) { log.Printf("Error reading request body %s", err.Error()) rw.WriteHeader(http.StatusInternalServerError) io.WriteString(rw, fmt.Sprintf(`{"message": "%s"}`, err.Error())) + return nil, err + } + + return raw, nil +} + +func (h *GiteaWebhookHandler) HandleSynchronize(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + + _, err := h.parseBody(rw, r) + if err != nil { + return + } + + rw.WriteHeader(http.StatusOK) + io.WriteString(rw, `{"message": "Processing data. See bot logs for details."}`) +} + +func (h *GiteaWebhookHandler) HandleComment(rw http.ResponseWriter, r *http.Request) { + rw.Header().Set("Content-Type", "application/json") + + raw, err := h.parseBody(rw, r) + if err != nil { return } diff --git a/internal/api/main.go b/internal/api/main.go index d956378..8a4581a 100644 --- a/internal/api/main.go +++ b/internal/api/main.go @@ -54,9 +54,9 @@ func addGiteaEndpoint(r *gin.Engine) { switch h.GiteaEvent { case "pull_request": - fmt.Println("Pull Request activity") + webhookHandler.HandleSynchronize(c.Writer, c.Request) case "issue_comment": - webhookHandler.Handle(c.Writer, c.Request) + webhookHandler.HandleComment(c.Writer, c.Request) default: c.JSON(http.StatusOK, gin.H{ "message": "ignore unknown event",