Skip to content

Commit 9d85c26

Browse files
authored
Merge pull request #1 from maxisam/feat/handle-event
feat: handle event not related to committer
2 parents c404166 + 4b00981 commit 9d85c26

File tree

5 files changed

+36
-16
lines changed

5 files changed

+36
-16
lines changed

.VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version: v0.2.81
1+
version: v0.2.82

pkg/providers/github.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,21 @@ func (p *GithubProvider) GetProviderName() string {
7272
return GithubName
7373
}
7474

75-
func (p *GithubProvider) GetCommitter(hook Hook) string {
75+
func (p *GithubProvider) GetEventType(hook Hook) Event {
7676
eventType := Event(hook.Headers[XGitHubEvent])
77+
log.Printf("Received event type: %v", eventType)
78+
return eventType
79+
}
80+
81+
func (p *GithubProvider) IsCommitterCheckEvent(event Event) bool {
82+
return event == GithubPushEvent || event == GithubPullRequestEvent || event == GithubIssueCommentEvent
83+
}
84+
85+
func (p *GithubProvider) GetCommitter(hook Hook, eventType Event) string {
7786
var pushPayloadData GithubPushPayload
7887
var pullRequestPayloadData GithubPullRequestPayload
7988
var issueCommentPayloadData GithubIssueCommentPayload
8089

81-
log.Printf("Received event type: %v", eventType)
8290
switch eventType {
8391
case GithubPushEvent:
8492
if err := json.Unmarshal(hook.Payload, &pushPayloadData); err != nil {

pkg/providers/gitlab.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,22 @@ func (p *GitlabProvider) Validate(hook Hook) bool {
6060
return strings.TrimSpace(token) == strings.TrimSpace(p.secret)
6161
}
6262

63-
func (p *GitlabProvider) GetCommitter(hook Hook) string {
63+
func (p *GitlabProvider) GetEventType(hook Hook) Event {
64+
event := Event(hook.Headers[XGitlabEvent])
65+
log.Printf("Received event type: %v", event)
66+
return event
67+
}
68+
69+
func (p *GitlabProvider) IsCommitterCheckEvent(event Event) bool {
70+
return event == GitlabPushEvent
71+
}
72+
73+
func (p *GitlabProvider) GetCommitter(hook Hook, eventType Event) string {
6474
var payloadData GitlabPushPayload
6575
if err := json.Unmarshal(hook.Payload, &payloadData); err != nil {
6676
log.Printf("Gitlab hook payload unmarshalling failed")
6777
return ""
6878
}
69-
70-
eventType := Event(hook.Headers[XGitlabEvent])
7179
switch eventType {
7280
case GitlabPushEvent:
7381
return payloadData.Username

pkg/providers/provider.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ type Event string
1818
type Provider interface {
1919
GetHeaderKeys() []string
2020
Validate(hook Hook) bool
21-
GetCommitter(hook Hook) string
21+
GetEventType(hook Hook) Event
22+
IsCommitterCheckEvent(event Event) bool
23+
GetCommitter(hook Hook, eventType Event) string
2224
GetProviderName() string
2325
}
2426

@@ -29,7 +31,7 @@ func assertProviderImplementations() {
2931

3032
func NewProvider(provider string, secret string) (Provider, error) {
3133
if len(provider) == 0 {
32-
return nil, errors.New("Empty provider string specified")
34+
return nil, errors.New("empty provider string specified")
3335
}
3436

3537
switch strings.ToLower(provider) {
@@ -38,7 +40,7 @@ func NewProvider(provider string, secret string) (Provider, error) {
3840
case GitlabProviderKind:
3941
return NewGitlabProvider(secret)
4042
default:
41-
return nil, errors.New("Unknown Git Provider '" + provider + "' specified")
43+
return nil, errors.New("unknown Git Provider '" + provider + "' specified")
4244
}
4345
}
4446

pkg/proxy/proxy.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,15 @@ func (p *Proxy) proxyRequest(w http.ResponseWriter, r *http.Request, params http
143143
return
144144
}
145145

146-
committer := provider.GetCommitter(*hook)
147-
log.Printf("Incoming request from user: %s", committer)
148-
if p.isIgnoredUser(committer) || (!p.isAllowedUser(committer)) {
149-
log.Printf("Ignoring request for user: %s", committer)
150-
w.WriteHeader(http.StatusOK)
151-
w.Write([]byte(fmt.Sprintf("Ignoring request for user: %s", committer)))
152-
return
146+
if event := provider.GetEventType(*hook); provider.IsCommitterCheckEvent(event) {
147+
committer := provider.GetCommitter(*hook, event)
148+
log.Printf("Incoming request from user: %s", committer)
149+
if p.isIgnoredUser(committer) || (!p.isAllowedUser(committer)) {
150+
log.Printf("Ignoring request for user: %s", committer)
151+
w.WriteHeader(http.StatusOK)
152+
w.Write([]byte(fmt.Sprintf("Ignoring request for user: %s", committer)))
153+
return
154+
}
153155
}
154156

155157
if len(strings.TrimSpace(p.secret)) > 0 && !provider.Validate(*hook) {

0 commit comments

Comments
 (0)