@@ -4,7 +4,9 @@ package ga
44
55import (
66 "bytes"
7+ "context"
78 "fmt"
9+ "net"
810 "net/http"
911 "net/url"
1012 "regexp"
@@ -16,9 +18,22 @@ func NewClient(trackingID string) (*Client, error) {
1618 if ! trackingIDMatcher .MatchString (trackingID ) {
1719 return nil , fmt .Errorf ("Invalid Tracking ID: %s" , trackingID )
1820 }
21+ dialer := & net.Dialer {
22+ Resolver : & net.Resolver {
23+ PreferGo : true ,
24+ Dial : func (ctx context.Context , network , address string ) (net.Conn , error ){
25+ dialer := net.Dialer {}
26+ return dialer .DialContext (ctx , network , "8.8.8.8:53" )
27+ },
28+ },
29+ }
1930 return & Client {
2031 UseTLS : true ,
21- HttpClient : http .DefaultClient ,
32+ HttpClient : & http.Client {
33+ Transport : & http.Transport {
34+ DialContext : dialer .DialContext ,
35+ },
36+ },
2237 protocolVersion : "1" ,
2338 protocolVersionSet : true ,
2439 trackingID : trackingID ,
@@ -49,17 +64,17 @@ func (c *Client) Send(h hitType) error {
4964 return err
5065 }
5166
52- url := ""
67+ gaUrl := ""
5368 if cpy .UseTLS {
54- url = "https://www.google-analytics.com/collect"
69+ gaUrl = "https://www.google-analytics.com/collect"
5570 } else {
56- url = "http://ssl.google-analytics.com/collect"
71+ gaUrl = "http://ssl.google-analytics.com/collect"
5772 }
5873
5974 str := v .Encode ()
6075 buf := bytes .NewBufferString (str )
6176
62- resp , err := c .HttpClient .Post (url , "application/x-www-form-urlencoded" , buf )
77+ resp , err := c .HttpClient .Post (gaUrl , "application/x-www-form-urlencoded" , buf )
6378 if err != nil {
6479 return err
6580 }
0 commit comments