-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathidentity.go
55 lines (46 loc) · 1.36 KB
/
identity.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package mixpanel
import "context"
const (
identityEndpoint = "/track#create-identity"
aliasEndpoint = "/track#identity-create-alias"
mergeEndpoint = "/import"
)
type aliasPayload struct {
Event string `json:"event"`
Properties aliasProperties `json:"properties"`
}
type aliasProperties struct {
DistinctId string `json:"distinct_id"`
Alias string `json:"alias"`
Token string `json:"token"`
}
// https://developer.mixpanel.com/reference/identity-create-alias
func (a *ApiClient) Alias(ctx context.Context, aliasID, distinctID string) error {
payload := &aliasPayload{
Event: "$create_alias",
Properties: aliasProperties{
DistinctId: distinctID,
Alias: aliasID,
Token: a.token,
},
}
return a.doIdentifyRequest(ctx, payload, aliasEndpoint)
}
type mergePayload struct {
Event string `json:"event"`
Properties mergeProperties `json:"properties"`
}
type mergeProperties struct {
DistinctId []string `json:"$distinct_ids"`
}
// https://developer.mixpanel.com/reference/identity-merge
// must provide api secret
func (a *ApiClient) Merge(ctx context.Context, distinctID1, distinctID2 string) error {
payload := &mergePayload{
Event: "$merge",
Properties: mergeProperties{
DistinctId: []string{distinctID1, distinctID2},
},
}
return a.doIdentifyRequest(ctx, payload, mergeEndpoint, a.useApiSecret())
}