dockerfiles/ga-proxy/ga/client.go

41 lines
933 B
Go

package ga
import (
"net/http"
"net/url"
"strings"
"github.com/pkg/errors"
)
const gaURL = "https://www.google-analytics.com/collect"
var httpClient = &http.Client{}
func send(qs string) error {
req, err := http.NewRequest(http.MethodPost, gaURL, strings.NewReader(qs))
if err != nil {
return errors.Wrap(err, "could not create request")
}
// https://golang.org/pkg/net/http/#Client.Do
// On error, any Response can be ignored. A non-nil Response with a non-nil error only occurs when
// CheckRedirect fails, and even then the returned Response.Body is already closed.
resp, err := httpClient.Do(req)
if err != nil {
return errors.Wrap(err, "could not make request")
}
defer resp.Body.Close()
return nil
}
func concatURLValues(v1 url.Values, v2 url.Values) {
for key, values := range v2 {
if len(v2.Get(key)) != 0 && len(v1.Get(key)) == 0 {
// do not replace existed key
v1[key] = values
}
}
}