diff options
Diffstat (limited to 'gitolite-webhook/main.go')
| -rw-r--r-- | gitolite-webhook/main.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gitolite-webhook/main.go b/gitolite-webhook/main.go new file mode 100644 index 0000000..7d0fe5e --- /dev/null +++ b/gitolite-webhook/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" +) + +func main() { + checkConfig() + + hook := Webhook{} + hook.Target = "" + hook.Join = os.Getenv("JOIN") + hook.Message = fmt.Sprintf("Update git repo '%s' to '%s' by %s. | Commit message: '%s' | Url: %s | Date: %s", os.Getenv("GL_REPO"), os.Getenv("REFNAME"), os.Getenv("GL_USER"), os.Getenv("COMMIT_MSG"), os.Getenv("REPO_URL"), os.Getenv("DATE")) + + json, err := json.Marshal(hook) + if err != nil { + log.Fatal("Error encoding JSON.", err) + } + request, err := http.NewRequest("POST", os.Getenv("WEBHOOK_URL"), bytes.NewBuffer(json)) + if err != nil { + log.Fatal("Error creating new http request.", os.Getenv("WEBHOOK_URL"), err) + } + request.Header.Add("Content-Type", "application/x-www-form-urlencoded") + request.Header.Add("User-Agent", "Gitolite webhook") + + client := &http.Client{} + resp, err := client.Do(request) + if err != nil { + panic(err) + } + defer resp.Body.Close() + + fmt.Println("Response Status:", resp.Status) + body, _ := ioutil.ReadAll(resp.Body) + fmt.Println("Response Body:", string(body)) + +} |
