Files
mpbot-github/pr/webhook/pull_request_others.go
Zero King 36c888d9d6 pr: Refactor
Merge code handling maintainer reaction to pull requests.
2018-03-11 11:37:42 +00:00

72 lines
1.3 KiB
Go

package webhook
import (
"encoding/json"
"log"
"strconv"
"github.com/google/go-github/github"
)
func (receiver *Receiver) handleOtherPullRequestEvents(eventType string, body []byte) {
defer func() {
if r := recover(); r != nil {
log.Println(r)
}
if !receiver.testing {
receiver.wg.Done()
}
}()
var number int
var sender string
switch eventType {
case "pull_request_review":
event := &github.PullRequestReviewEvent{}
err := json.Unmarshal(body, event)
if err != nil {
log.Println(err)
return
}
number = *event.PullRequest.Number
sender = *event.Sender.Login
case "issue_comment":
event := &github.IssueCommentEvent{}
err := json.Unmarshal(body, event)
if err != nil {
log.Println(err)
return
}
number = *event.Issue.Number
sender = *event.Sender.Login
default:
return
}
pr, err := receiver.dbHelper.GetPR(number)
if err != nil {
log.Println(err)
return
}
if !pr.Processed {
return
}
if !pr.PendingReview {
return
}
isOneMaintainer := false
for _, maintainer := range pr.Maintainers {
if maintainer == sender {
isOneMaintainer = true
}
}
if isOneMaintainer {
log.Println("Maintainer responded in PR #" + strconv.Itoa(pr.Number))
receiver.dbHelper.SetPRPendingReview(number, false)
}
}