get githook hook payload from either form or json
This commit is contained in:
parent
5f3b882c0c
commit
8ad36255de
2 changed files with 18 additions and 6 deletions
|
@ -212,11 +212,9 @@ func (r *GitHub) ParseHook(req *http.Request) (*model.Hook, error) {
|
||||||
return r.ParsePullRequestHook(req)
|
return r.ParsePullRequestHook(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the payload of the message
|
|
||||||
var payload = req.FormValue("payload")
|
|
||||||
|
|
||||||
// parse the github Hook payload
|
// parse the github Hook payload
|
||||||
var data, err = github.ParseHook([]byte(payload))
|
var payload = GetPayload(req)
|
||||||
|
var data, err = github.ParseHook(payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
@ -259,11 +257,11 @@ func (r *GitHub) ParseHook(req *http.Request) (*model.Hook, error) {
|
||||||
// ParsePullRequestHook parses the pull request hook from the Request body
|
// ParsePullRequestHook parses the pull request hook from the Request body
|
||||||
// and returns the required data in a standard format.
|
// and returns the required data in a standard format.
|
||||||
func (r *GitHub) ParsePullRequestHook(req *http.Request) (*model.Hook, error) {
|
func (r *GitHub) ParsePullRequestHook(req *http.Request) (*model.Hook, error) {
|
||||||
var payload = req.FormValue("payload")
|
|
||||||
|
|
||||||
// parse the payload to retrieve the pull-request
|
// parse the payload to retrieve the pull-request
|
||||||
// hook meta-data.
|
// hook meta-data.
|
||||||
var data, err = github.ParsePullRequestHook([]byte(payload))
|
var payload = GetPayload(req)
|
||||||
|
var data, err = github.ParsePullRequestHook(payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package github
|
||||||
import (
|
import (
|
||||||
"encoding/base32"
|
"encoding/base32"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"code.google.com/p/goauth2/oauth"
|
"code.google.com/p/goauth2/oauth"
|
||||||
|
@ -236,3 +238,15 @@ func GetFile(client *github.Client, owner, name, path, ref string) ([]byte, erro
|
||||||
func GetRandom() string {
|
func GetRandom() string {
|
||||||
return base32.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(32))
|
return base32.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(32))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPayload is a helper function that will parse the JSON payload. It will
|
||||||
|
// first check for a `payload` parameter in a POST, but can fallback to a
|
||||||
|
// raw JSON body as well.
|
||||||
|
func GetPayload(req *http.Request) []byte {
|
||||||
|
var payload = req.FormValue("payload")
|
||||||
|
if len(payload) == 0 {
|
||||||
|
raw, _ := ioutil.ReadAll(req.Body)
|
||||||
|
return raw
|
||||||
|
}
|
||||||
|
return []byte(payload)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue