Declare err and payload to avoid scope issues

This commit is contained in:
Martin Treml
2018-12-20 17:35:44 +01:00
parent 1b9fe11c1f
commit 57ccf4fc30
+15 -14
View File
@@ -82,6 +82,9 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
_ = r.Body.Close() _ = r.Body.Close()
}() }()
var err error
var payload []byte
if len(events) == 0 { if len(events) == 0 {
return nil, ErrEventNotSpecifiedToParse return nil, ErrEventNotSpecifiedToParse
} }
@@ -95,15 +98,13 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
} }
gitLabEvent := Event(event) gitLabEvent := Event(event)
payload := []byte{}
if gitLabEvent == SystemHooks { if gitLabEvent == SystemHooks {
sysPayload, err := ioutil.ReadAll(r.Body) payload, err = ioutil.ReadAll(r.Body)
if err != nil || len(sysPayload) == 0 { if err != nil || len(payload) == 0 {
return nil, ErrParsingSystemPayload return nil, ErrParsingSystemPayload
} }
payload = sysPayload
var sysPl SystemHookPayload var sysPl SystemHookPayload
err = json.Unmarshal([]byte(payload), &sysPl) err = json.Unmarshal([]byte(payload), &sysPl)
@@ -135,7 +136,7 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
// check if payload is empty - that means it was no system hook call // check if payload is empty - that means it was no system hook call
if len(payload) == 0 { if len(payload) == 0 {
payload, err := ioutil.ReadAll(r.Body) payload, err = ioutil.ReadAll(r.Body)
if err != nil || len(payload) == 0 { if err != nil || len(payload) == 0 {
return nil, ErrParsingPayload return nil, ErrParsingPayload
} }
@@ -152,47 +153,47 @@ func (hook Webhook) Parse(r *http.Request, events ...Event) (interface{}, error)
switch gitLabEvent { switch gitLabEvent {
case PushEvents: case PushEvents:
var pl PushEventPayload var pl PushEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case TagEvents: case TagEvents:
var pl TagEventPayload var pl TagEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case ConfidentialIssuesEvents: case ConfidentialIssuesEvents:
var pl ConfidentialIssueEventPayload var pl ConfidentialIssueEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case IssuesEvents: case IssuesEvents:
var pl IssueEventPayload var pl IssueEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case CommentEvents: case CommentEvents:
var pl CommentEventPayload var pl CommentEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case MergeRequestEvents: case MergeRequestEvents:
var pl MergeRequestEventPayload var pl MergeRequestEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case WikiPageEvents: case WikiPageEvents:
var pl WikiPageEventPayload var pl WikiPageEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case PipelineEvents: case PipelineEvents:
var pl PipelineEventPayload var pl PipelineEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
case BuildEvents: case BuildEvents:
var pl BuildEventPayload var pl BuildEventPayload
err := json.Unmarshal([]byte(payload), &pl) err = json.Unmarshal([]byte(payload), &pl)
return pl, err return pl, err
default: default:
return nil, fmt.Errorf("unknown event %s", gitLabEvent) return nil, fmt.Errorf("unknown event %s", gitLabEvent)