mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
refactor: update client api
This commit is contained in:
parent
202a816cb2
commit
2c68979504
@ -12,7 +12,8 @@ import (
|
||||
type (
|
||||
Client struct {
|
||||
l *zap.Logger
|
||||
url string
|
||||
path string
|
||||
host string
|
||||
cookies []string
|
||||
trackingID string
|
||||
measurementID string
|
||||
@ -35,6 +36,12 @@ func ClientWithHTTPClient(v *http.Client) ClientOption {
|
||||
}
|
||||
}
|
||||
|
||||
func ClientWithPath(v string) ClientOption {
|
||||
return func(o *Client) {
|
||||
o.path = v
|
||||
}
|
||||
}
|
||||
|
||||
func ClientWithCookies(v ...string) ClientOption {
|
||||
return func(o *Client) {
|
||||
o.cookies = append(o.cookies, v...)
|
||||
@ -51,10 +58,11 @@ func ClientWithMiddlewares(v ...ClientMiddleware) ClientOption {
|
||||
// ~ Constructor
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
func NewClient(l *zap.Logger, url, trackingID string, opts ...ClientOption) *Client {
|
||||
func NewClient(l *zap.Logger, host, trackingID string, opts ...ClientOption) *Client {
|
||||
inst := &Client{
|
||||
l: l,
|
||||
url: url,
|
||||
host: host,
|
||||
path: "/g/collect",
|
||||
cookies: []string{"gtm_auth", "gtm_debug", "gtm_preview"},
|
||||
trackingID: trackingID,
|
||||
protocolVersion: "2",
|
||||
@ -87,32 +95,32 @@ func (c *Client) HTTPClient() *http.Client {
|
||||
// ~ Public methods
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
func (c *Client) Send(r *http.Request, event *Event) error {
|
||||
next := c.SendRaw
|
||||
func (c *Client) Send(r *http.Request, event Marshler) error {
|
||||
e, err := event.MarshalMPv2()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.SendEvent(r, e)
|
||||
}
|
||||
|
||||
func (c *Client) SendEvent(r *http.Request, event *Event) error {
|
||||
next := c.SendRawEvent
|
||||
for _, middleware := range c.middlewares {
|
||||
next = middleware(next)
|
||||
}
|
||||
return next(r, event)
|
||||
}
|
||||
|
||||
func (c *Client) SendType(r *http.Request, event Marshler) error {
|
||||
e, err := event.MarshalMPv2()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Send(r, e)
|
||||
}
|
||||
|
||||
func (c *Client) SendRaw(r *http.Request, event *Event) error {
|
||||
func (c *Client) SendRawEvent(r *http.Request, event *Event) error {
|
||||
values, body, err := Encode(event)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to marshall event")
|
||||
return errors.Wrap(err, "failed to encode event")
|
||||
}
|
||||
|
||||
req, err := http.NewRequestWithContext(
|
||||
r.Context(),
|
||||
http.MethodPost,
|
||||
fmt.Sprintf("%s?%s", c.url, EncodeValues(values)),
|
||||
fmt.Sprintf("%s%s?%s", c.host, c.path, EncodeValues(values)),
|
||||
body,
|
||||
)
|
||||
if err != nil {
|
||||
|
||||
@ -18,7 +18,7 @@ func MiddlewareTrackingID(v string) ClientMiddleware {
|
||||
return func(next ClientHandler) ClientHandler {
|
||||
return func(r *http.Request, event *Event) error {
|
||||
event.TrackingID = &v
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -27,7 +27,7 @@ func MiddlewarProtocolVersion(v string) ClientMiddleware {
|
||||
return func(next ClientHandler) ClientHandler {
|
||||
return func(r *http.Request, event *Event) error {
|
||||
event.ProtocolVersion = &v
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,7 +36,7 @@ func MiddlewarIgnoreReferrer(v string) ClientMiddleware {
|
||||
return func(next ClientHandler) ClientHandler {
|
||||
return func(r *http.Request, event *Event) error {
|
||||
event.IgnoreReferrer = &v
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -47,7 +47,7 @@ func MiddlewarDebug(next ClientHandler) ClientHandler {
|
||||
if value, _ := r.Cookie("gtm_debug"); value != nil {
|
||||
event.IsDebug = &v
|
||||
}
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ func MiddlewarClientID(next ClientHandler) ClientHandler {
|
||||
clientID := strings.TrimPrefix(value.Value, "GA1.1.")
|
||||
event.ClientID = &clientID
|
||||
}
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +69,6 @@ func MiddlewarDocument(next ClientHandler) ClientHandler {
|
||||
event.DocumentLocation = &referrer.Path
|
||||
event.DocumentHostname = &referrer.Host
|
||||
}
|
||||
return nil
|
||||
return next(r, event)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user