mixpanel.go 890 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package main
  2. import (
  3. "http"
  4. "encoding/base64"
  5. "json"
  6. "log"
  7. "url"
  8. )
  9. func init() {
  10. log.SetFlags(log.Ltime | log.Lshortfile)
  11. }
  12. func track(event, ip, id, song, user string) {
  13. const token = "643bb718adc5d66de18617b4f0bf3489"
  14. data := make(map[string]interface{})
  15. data["event"] = event
  16. properties := make(map[string]string)
  17. properties["token"] = token
  18. properties["ip"] = ip
  19. properties["id"] = id
  20. if song != "" {
  21. properties["song"] = song
  22. }
  23. if user != "" {
  24. properties["user"] = user
  25. if user != "anonymous" {
  26. properties["mp_name_tag"] = user
  27. }
  28. }
  29. data["properties"] = properties
  30. dataJSON, err := json.Marshal(data)
  31. if err != nil {
  32. log.Println(err)
  33. return
  34. }
  35. values := make(url.Values)
  36. values.Add("data", base64.StdEncoding.EncodeToString(dataJSON))
  37. r, err := http.PostForm("https://api.mixpanel.com/track/", values)
  38. if err == nil {
  39. r.Body.Close()
  40. }
  41. }