mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 14:30:12 +01:00
feat(analytics): vendor code for google analytics
Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
parent
d608dbacd8
commit
dc5edb901c
23 changed files with 2620 additions and 0 deletions
76
vendor/github.com/jpillora/go-ogle-analytics/client.go
generated
vendored
Normal file
76
vendor/github.com/jpillora/go-ogle-analytics/client.go
generated
vendored
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
//go:generate go run generate/protocol.go
|
||||
|
||||
package ga
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var trackingIDMatcher = regexp.MustCompile(`^UA-\d+-\d+$`)
|
||||
|
||||
func NewClient(trackingID string) (*Client, error) {
|
||||
if !trackingIDMatcher.MatchString(trackingID) {
|
||||
return nil, fmt.Errorf("Invalid Tracking ID: %s", trackingID)
|
||||
}
|
||||
return &Client{
|
||||
UseTLS: true,
|
||||
HttpClient: http.DefaultClient,
|
||||
protocolVersion: "1",
|
||||
protocolVersionSet: true,
|
||||
trackingID: trackingID,
|
||||
clientID: "go-ga",
|
||||
clientIDSet: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type hitType interface {
|
||||
addFields(url.Values) error
|
||||
}
|
||||
|
||||
func (c *Client) Send(h hitType) error {
|
||||
|
||||
cpy := c.Copy()
|
||||
|
||||
v := url.Values{}
|
||||
|
||||
cpy.setType(h)
|
||||
|
||||
err := cpy.addFields(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = h.addFields(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
url := ""
|
||||
if cpy.UseTLS {
|
||||
url = "https://www.google-analytics.com/collect"
|
||||
} else {
|
||||
url = "http://ssl.google-analytics.com/collect"
|
||||
}
|
||||
|
||||
str := v.Encode()
|
||||
buf := bytes.NewBufferString(str)
|
||||
|
||||
resp, err := c.HttpClient.Post(url, "application/x-www-form-urlencoded", buf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
||||
if resp.StatusCode/100 != 2 {
|
||||
return fmt.Errorf("Rejected by Google with code %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
// fmt.Printf("POST %s => %d\n", str, resp.StatusCode)
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue