Add "by: member" label

This commit is contained in:
Zero King
2017-08-01 14:29:06 +00:00
parent 007dd48eb9
commit e7dbd8a86b
2 changed files with 41 additions and 0 deletions
+10
View File
@@ -163,6 +163,16 @@ func (receiver *Receiver) handlePullRequest(body []byte) {
}
newLabels = append(newLabels, typeLabels...)
receiver.membersLock.RLock()
members := receiver.members
receiver.membersLock.RUnlock()
if members != nil {
_, exist := (*members)[*event.Sender.Login]
if exist {
newLabels = appendIfUnique(newLabels, "by: member")
}
}
err = receiver.githubClient.ReplaceLabels(owner, repo, number, newLabels)
if err != nil {
log.Println(err)
+31
View File
@@ -7,6 +7,8 @@ import (
"io/ioutil"
"net/http"
"strings"
"sync"
"time"
"github.com/macports/mpbot-github/pr/db"
"github.com/macports/mpbot-github/pr/githubapi"
@@ -19,6 +21,8 @@ type Receiver struct {
testing bool
githubClient githubapi.Client
dbHelper db.DBHelper
members *map[string]bool
membersLock sync.RWMutex
}
func NewReceiver(listenAddr string, hookSecret []byte, botSecret string, production bool, dbHelper db.DBHelper) *Receiver {
@@ -71,9 +75,36 @@ func (receiver *Receiver) Start() {
w.WriteHeader(http.StatusNoContent)
})
go receiver.updateMembers()
http.ListenAndServe(receiver.listenAddr, mux)
}
func (receiver *Receiver) updateMembers() {
for ; ; time.Sleep(24 * time.Hour) {
users, err := receiver.githubClient.ListOrgMembers("macports")
if err != nil {
continue
}
members := make(map[string]bool)
for _, user := range users {
if user.Login == nil {
continue
}
login := *user.Login
if login == "" {
continue
}
members[login] = true
}
if len(members) > 0 {
receiver.membersLock.Lock()
receiver.members = &members
receiver.membersLock.Unlock()
}
}
}
// checkMAC reports whether messageMAC is a valid HMAC tag for message.
func (receiver *Receiver) checkMAC(message, messageMAC []byte) bool {
mac := hmac.New(sha1.New, receiver.hookSecret)