summaryrefslogtreecommitdiff
path: root/gitolite-webhook/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'gitolite-webhook/main.go')
-rw-r--r--gitolite-webhook/main.go43
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))
+
+}