From ae4068edbc8812a6b2efa2d0f5dc860604722be0 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Fri, 26 Nov 2021 16:09:34 +0800 Subject: [PATCH] feat: use unique machine ID for reporting GA --- go.mod | 1 + go.sum | 2 ++ internal/ga/client.go | 7 ++----- internal/ga/init.go | 12 +++++++++++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 009a266d..ccec5dd8 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/httprunner/hrp go 1.16 require ( + github.com/denisbrodbeck/machineid v1.0.1 github.com/getsentry/sentry-go v0.11.0 github.com/go-ole/go-ole v1.2.6 // indirect github.com/google/uuid v1.3.0 diff --git a/go.sum b/go.sum index 6d2d6f5a..2b38dca6 100644 --- a/go.sum +++ b/go.sum @@ -78,6 +78,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= +github.com/denisbrodbeck/machineid v1.0.1/go.mod h1:dJUwb7PTidGDeYyUBmXZ2GphQBbjJCrnectwCyxcUSI= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= diff --git a/internal/ga/client.go b/internal/ga/client.go index 635c23c4..923e8578 100644 --- a/internal/ga/client.go +++ b/internal/ga/client.go @@ -6,8 +6,6 @@ import ( "net/url" "reflect" "time" - - "github.com/google/uuid" ) const ( @@ -23,11 +21,10 @@ type GAClient struct { } // NewGAClient creates a new GAClient object with the trackingID and clientID. -func NewGAClient(trackingID string) *GAClient { - nodeUUID, _ := uuid.NewUUID() +func NewGAClient(trackingID, clientID string) *GAClient { return &GAClient{ TrackingID: trackingID, - ClientID: nodeUUID.String(), + ClientID: clientID, Version: "1", // constant v1 httpClient: &http.Client{ Timeout: 5 * time.Second, diff --git a/internal/ga/init.go b/internal/ga/init.go index f484ae20..b759398d 100644 --- a/internal/ga/init.go +++ b/internal/ga/init.go @@ -1,5 +1,10 @@ package ga +import ( + "github.com/denisbrodbeck/machineid" + "github.com/google/uuid" +) + const ( trackingID = "UA-114587036-1" // Tracking ID for Google Analytics ) @@ -7,7 +12,12 @@ const ( var gaClient *GAClient func init() { - gaClient = NewGAClient(trackingID) + clientID, err := machineid.ProtectedID("hrp") + if err != nil { + nodeUUID, _ := uuid.NewUUID() + clientID = nodeUUID.String() + } + gaClient = NewGAClient(trackingID, clientID) } func SendEvent(e IEvent) error {