mirror of
https://github.com/amir20/dozzle.git
synced 2025-12-25 14:59:26 +01:00
Adds analytics for start params
This commit is contained in:
55
analytics/ga.go
Normal file
55
analytics/ga.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package analytics
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/httputil"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func SendStartEvent(se StartEvent) error {
|
||||
postBody := map[string]interface{}{
|
||||
"client_id": se.ClientId,
|
||||
"events": []map[string]interface{}{
|
||||
{
|
||||
"name": "start",
|
||||
"params": se,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
jsonValue, err := json.Marshal(postBody)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("POST", "https://www.google-analytics.com/mp/collect", bytes.NewBuffer(jsonValue))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
q := req.URL.Query()
|
||||
q.Add("measurement_id", "G-S6NT05VXK9")
|
||||
q.Add("api_secret", "7FFhe65HQK-bXvujpQMquQ")
|
||||
req.URL.RawQuery = q.Encode()
|
||||
|
||||
response, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
log.Debug(err)
|
||||
}
|
||||
defer response.Body.Close()
|
||||
|
||||
if response.StatusCode/100 != 2 {
|
||||
dump, err := httputil.DumpResponse(response, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Debugf("%v", string(dump))
|
||||
return fmt.Errorf("google analytics returned non-2xx status code: %v", response.Status)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httputil"
|
||||
)
|
||||
|
||||
type StartEvent struct {
|
||||
Version string
|
||||
FilterLength int
|
||||
CustomAddress bool
|
||||
CustomBase bool
|
||||
TailSize int
|
||||
Protected bool
|
||||
|
||||
}
|
||||
|
||||
func main() {
|
||||
postBody := map[string]interface{}{
|
||||
"client_id": "XXXXXXXXXX.YYYYYYYYYY",
|
||||
"events": []map[string]interface{}{
|
||||
{
|
||||
"name": "test_go",
|
||||
"params": map[string]interface{}{
|
||||
"version": "1.1.1",
|
||||
"docker": "2",
|
||||
"color": "red",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
jsonValue, err := json.Marshal(postBody)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Print(string(jsonValue))
|
||||
|
||||
req, err := http.NewRequest("POST", "https://www.google-analytics.com/mp/collect", bytes.NewBuffer(jsonValue))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
q := req.URL.Query()
|
||||
q.Add("measurement_id", "G-S6NT05VXK9")
|
||||
q.Add("api_secret", "7FFhe65HQK-bXvujpQMquQ")
|
||||
req.URL.RawQuery = q.Encode()
|
||||
|
||||
dump, err := httputil.DumpRequestOut(req, true)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Printf("%v", string(dump))
|
||||
|
||||
if response, err := http.DefaultClient.Do(req); err != nil {
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
defer response.Body.Close()
|
||||
dump, err := httputil.DumpResponse(response, true)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Printf("%v", string(dump))
|
||||
}
|
||||
}
|
||||
11
analytics/types.go
Normal file
11
analytics/types.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package analytics
|
||||
|
||||
type StartEvent struct {
|
||||
ClientId string `json:"-"`
|
||||
Version string `json:"version"`
|
||||
FilterLength int `json:"filterLength"`
|
||||
CustomAddress bool `json:"customAddress"`
|
||||
CustomBase bool `json:"customBase"`
|
||||
TailSize int `json:"tailSize"`
|
||||
Protected bool `json:"protected"`
|
||||
}
|
||||
25
main.go
25
main.go
@@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/alexflint/go-arg"
|
||||
"github.com/amir20/dozzle/analytics"
|
||||
"github.com/amir20/dozzle/docker"
|
||||
"github.com/amir20/dozzle/web"
|
||||
|
||||
@@ -103,7 +104,7 @@ func main() {
|
||||
}
|
||||
|
||||
srv := web.CreateServer(dockerClient, static, config)
|
||||
|
||||
go doStartEvent(args)
|
||||
go func() {
|
||||
log.Infof("Accepting connections on %s", srv.Addr)
|
||||
if err := srv.ListenAndServe(); err != nil {
|
||||
@@ -121,3 +122,25 @@ func main() {
|
||||
srv.Shutdown(ctx)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
func doStartEvent(arg args) {
|
||||
host, err := os.Hostname()
|
||||
if err != nil {
|
||||
log.Debug(err)
|
||||
return
|
||||
}
|
||||
|
||||
event := analytics.StartEvent{
|
||||
ClientId: host,
|
||||
Version: version,
|
||||
FilterLength: len(filters),
|
||||
CustomAddress: arg.Addr != ":8080",
|
||||
CustomBase: arg.Base != "/",
|
||||
TailSize: arg.TailSize,
|
||||
Protected: arg.Username != "",
|
||||
}
|
||||
|
||||
if err := analytics.SendStartEvent(event); err != nil {
|
||||
log.Debug(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user